DISCOVR — find catalogs
Welcome to the documentation for Fabric DISCOVR — the Discovery Service (DS) of the Fabric ecosystem.
Welcome to the documentation for Fabric DISCOVR — the Discovery Service (DS) of the Fabric ecosystem. It is a high-performance, real-time discovery engine that enables consumers to find resources across all published catalogues in Fabric-enabled networks.
This guide is intended for Consumer Node (CN) developers, consumer application builders, network facilitators, and anyone building search experiences on top of Fabric catalogues.
What is Fabric DISCOVR?
Fabric DISCOVR is the query-time search and discovery layer for Fabric ecosystems. It runs on the consumer node side of the network — it exists to serve consumer applications' search requests, not to publish or manage provider catalogues.
While Fabric CATALG (CS) acts as the source of truth for catalogue publishing and validation, DISCOVR (DS) is purpose-built for real-time search — it indexes catalogue data from CATALG and exposes it through fast, flexible query APIs that power consumer-facing search experiences.
DISCOVR receives catalogue updates from CATALG (via subscription-based delivery), indexes them for search, and serves discovery requests from Consumer Nodes (CNs) and consumer applications with sub-second response times. A provider's catalogue only starts flowing into DISCOVR once the provider has subscribed to the network — see How DISCOVR Stays Updated below.
Why Do You Need Fabric DISCOVR?
Without a dedicated discovery layer, consumer applications face:
Querying raw catalogue data directly — slow, unstructured, and unscalable
Building custom search indexes per application — duplicated effort, inconsistent results
No support for natural language, spatial, or attribute-based search across providers
No unified view of resources across multiple catalogues and networks
Fabric DISCOVR solves this by offering:
One search endpoint across all catalogues published to the network
Multiple search modes — natural language, keyword, spatial (location-based), and JSONPath attribute filtering
Real-time indexing — catalogue changes from CATALG are indexed and searchable within seconds
Provider-agnostic results — consumers see resources from all providers, with offers from multiple retailers in one response
Key Capabilities
For Consumer Nodes (CNs)
Natural language search — ask questions like "strong Assam tea for morning chai" or "premium coffee under 500 rupees"
Keyword search — find resources by name, description, brand, or any indexed attribute
Spatial search — find resources available near a location using GeoJSON coordinates and distance radius
Attribute filtering — query resources and offers using JSONPath expressions for fine-grained filtering (e.g., "flat discount offers under ₹100")
Combined queries — mix text search with spatial constraints in a single request
Schema-aware results — responses include full resource attributes, ratings, offers, and provider details
For Discovery Service (DS) Builders
Subscription-driven indexing — DISCOVR subscribes to CATALG and receives catalogue updates automatically via
POST /catalog/pushFull-text and spatial search — supports keyword matching, natural language understanding, and geospatial proximity queries
Quality-assured results — incoming catalogues are validated, deduplicated, and pruned before being served to consumers
For Network Facilitators
Network-wide search — query across all providers and catalogues in a network
Schema type filtering — discover resources by domain type (e.g., GroceryItem, ChargingService, HealthcareProvider)
Offer comparison — see multiple retailer offers for the same resource in one response
Real-time availability — search results reflect the latest published catalogue state
High-Level Architecture
CATALG DISCOVR (source of truth) (search engine) | | | POST /catalog/push | | (catalogue updates delivered | | to subscribed DISCOVR instances) | |------------------------------------->| | | Index for search | | Store for spatial queries | | | | Consumer Node (CN) | | | | POST /discover | | (text / spatial / JSONPath) | |------------------------------------->| | | Query search + spatial indexes | POST /on_discover (callback) | | (matching resources + offers) | |<-------------------------------------|
Example Use Case
A consumer opens a grocery shopping app and searches for "instant coffee near me". The Consumer Node (CN) sends a discover request to Fabric DISCOVR combining natural language text search with a spatial constraint (5 km radius around the consumer's location).
DISCOVR queries its search index for resources matching "instant coffee" and its spatial index for resources with availability locations within 5 km. The response includes multiple matching products from different providers — each with competing offers showing different prices, discounts, and delivery estimates.
The consumer compares offers and proceeds to order from the provider with the best price and fastest delivery.
Design Principles
Real-time query engine: Optimized for sub-second search — not for catalogue storage or validation (that's CATALG's role)
Subscription-driven: Receives catalogue updates from CATALG automatically — no polling or manual sync
Multi-modal search: Supports text, natural language, spatial, and structured attribute queries — individually or combined
Provider-agnostic: Returns resources from all providers in a network, with competing offers side by side
Schema-aware: Understands Fabric resource and offer schemas — filters, groups, and prunes results based on schema context
API Reference
DISCOVR exposes two classes of HTTP endpoints: a consumer-facing discovery endpoint for running queries, and a CATALG-facing ingestion endpoint that receives catalog updates pushed from CATALG.
Discovery APIs (Consumer Node-facing)
API | Method | Description |
|---|---|---|
/discover | POST | Asynchronous — acknowledges with ACK, delivers results via POST /on_discover callback to bapUri |
Catalog Ingestion API (CATALG-facing)
DISCOVR implements the /catalog/push endpoint that CATALG calls to deliver catalog updates matching an active subscription — the push leg of How DISCOVR Stays Updated. DISCOVR validates the push and responds synchronously with a Fabric ACK (accepted — indexed asynchronously and searchable via /discover shortly after) or NACK.
What DISCOVR receives. Each entry in message.catalogs[] is a resolved catalog, not the raw fragment a Provider Node published. For resources that extend a master (masterResourceId), CATALG merges the master into the overlay (master-wins) before pushing, so DISCOVR receives self-contained, indexable resources. DISCOVR does not re-resolve against masters — it indexes exactly what is pushed.
The endpoint's authentication, request body (CatalogPublishAction with context.action: catalog/push), a full example payload, HTTP status codes, and ACK/NACK shapes are defined in the CATALG API Reference — POST /catalog/push.
Search Modes
Mode | Description | Example |
|---|---|---|
Text / Natural Language | Keyword or conversational query | "strong Assam tea for morning chai" |
Spatial | Find resources near a location | Within 5 km of a GPS coordinate |
Attribute Filter | Fine-grained filtering on resource or offer attributes | Flat discount offers under ₹100 |
Combined | Mix any of the above in a single request | Coffee search within 5 km radius |
For detailed request/response formats and examples, see Usage and Examples.
How DISCOVR Stays Updated
DISCOVR does not poll CATALG for changes. Instead, it uses Fabric's subscription mechanism:
DISCOVR subscribes to CATALG using
POST /catalog/subscriptionwithnetworkIdsand/orschemaTypesfiltersWhen a provider publishes or updates a catalogue in CATALG, CATALG matches against active subscriptions
Matching catalogue data is delivered to DISCOVR via
POST /catalog/pushDISCOVR indexes the received catalogue for search and spatial queries
The updated data is immediately searchable via
POST /discover
For historical data or initial sync, DISCOVR uses the CATALG Pull API (POST /catalog/pull) to fetch all existing catalogues.
The Fabric capability: Discovery
DISCOVR realises the Fabric Discovery capability — network-wide search across every catalogue on Fabric: offerings, providers, credentials, and capabilities.
What it gives you
Network-wide search — one query, every catalogue.
Structured filters — by category, geography, provider type, credential, price.
Agent-native queries — discovery exposed as MCP tools for autonomous agents.
Federated indexes — operators can run sector- or geography-specific indexes that compose into the global surface.
Where it sits — a service NFH runs (the indexed discovery surface that consumes Cataloguing), the protocol NFH defines (query and response schemas), and reference software NFH publishes (discovery clients and agent integrations).
Standards alignment: MCP for agent-native discovery · open query APIs.