> ## Documentation Index
> Fetch the complete documentation index at: https://ifdocdemo.lumivescence.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Discovery with ODP

> How agents find services and read their offerings with the Offering Discovery Protocol.

Discovery is one of the three parts of InFlow, with [Payments](/concepts/payments) and [Enrollment](/concepts/enrollment). It uses the Offering Discovery Protocol (ODP), an open protocol. Agents use ODP to find services and to read what each service offers.

## Two levels of discovery

<Steps>
  <Step title="Search the directory">
    The agent searches a directory for services. The [InFlow directory](/concepts/directory) is one directory.
  </Step>

  <Step title="Read the service">
    The agent reads the live ODP document of each service. The document leads to its collections, offerings, and actions.
  </Step>
</Steps>

## Terms

| Term | Meaning |
| - | - |
| Service | A catalog provider. It publishes an ODP document. |
| Directory | A central registry. Agents search it for services. |
| Collection | A group of related offerings in one service. |
| Offering | One product or service item, with its details and its actions. |
| Action | An operation that an agent can do on an offering, for example enrollment or a purchase. |

## Catalog operations

A service declares the catalog operations that it implements. ODP conformance needs `list-offerings` and `get-offering`. Search and collections are optional, so an agent must check the advertised operations of each service.

| Level | What the service implements |
| - | - |
| Minimal | A conformant Service Document and the `list-offerings` and `get-offering` operations, with real data. |
| Recommended | Minimal, plus descriptions, images, prices, actions, search, and collections. |
| Complete | Every discovery feature that fits the service. Examples are filters, attribute schemas, localization, and catalog relationships. |

Minimal, Recommended, and Complete are scopes of the guided integration. They are not levels in the ODP specification.

## ODP and the InFlow directory

ODP defines how a service shows its offerings. The [directory](/concepts/directory) helps agents find services. A directory entry is cached metadata. The live catalog stays on the service.

## ODP and x402 Bazaar

x402 Bazaar is an x402 extension. It helps agents find x402-enabled endpoints and tools, with their schemas and payment requirements. ODP has a wider scope. It describes what a business offers, independent of how the business authenticates or charges.

| Question | x402 Bazaar | ODP |
| - | - | - |
| What does the agent discover? | x402-enabled endpoints and tools. | Services, collections, offerings, and their actions. |
| How does the agent explore? | It queries the discovery catalog of a facilitator, and inspects the listed resources. | It finds a service. Then it lists or searches the catalog of that service, with the capabilities that the service advertises. |
| What can a business describe? | The capabilities and the interface of a payable endpoint or tool. | Domain-specific offerings, for example API capabilities, compute rentals, physical goods, and downloadable materials. |
| Does discovery select the payment protocol? | Yes. Bazaar is an x402 extension. | No. A service can advertise x402 and MPP, together with enrollment requirements. |

* "Find a weather API that accepts x402." Bazaar can be enough.
* "Find GPU rentals, filter by memory and region, compare the hourly rates, and find how to reserve one." ODP gives one catalog model, so the agent does not learn the custom catalog API of each provider.

A service can support both. ODP does not replace Bazaar.

## How ODP connects to AEP and payments

An action can point to an endpoint that needs [enrollment](/concepts/enrollment) (AEP) or [payment](/concepts/payments) (MPP and x402). The InFlow CLI gives the agent all three parts.

## Use ODP

| You are | Start here |
| - | - |
| An agent | [Discover and enroll](/agents/discover-and-enroll) |
| A seller | [Step 3: Make products discoverable](/sellers/make-products-discoverable) |

## SDKs and specification

ODP has SDKs for Go, Java, Node.js, Python, and Rust in the [offering-protocol](https://github.com/offering-protocol) organization. The Python package is `offering-protocol` on PyPI. It needs Python 3.11 or later. The specification is at [offeringprotocol.org](https://www.offeringprotocol.org/).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.