Getting your API found by AI agents starts with publishing the job your endpoint performs in terms a buyer will actually use. An agent searches for a result such as validating an address or extracting fields from an invoice; it rarely begins with your company name, route name or internal product category.
Discovery is therefore a metadata and distribution problem. The metadata must identify one bounded job and make the first request constructible. The distribution surfaces must expose that same record wherever crawlers, catalogues and tool clients look. If either half is missing, your endpoint can be technically callable and commercially invisible.
Name the job before the product
Write one sentence that describes what a successful call returns. Start with an action and a concrete object. “Return one normalized company profile for a submitted domain” gives a buyer more to match than “business intelligence platform.” It names the job, input and unit of output without claiming subjective quality.
Keep the capability narrow enough to have one recognizable request contract. Search, enrichment and compliance are categories, not callable jobs. An endpoint that verifies one tax identifier belongs under a different capability from one that searches for possible company matches, even if both sit inside the same product.
This is the practical provider side of capability-based API discovery. A catalogue groups providers only after their listings describe the same bounded work. Broad wording may produce more keyword matches, but it also creates mismatched candidate sets that buyers discard.
Check the capability sentence against three questions:
- What input does the buyer already have?
- What single job will the endpoint perform with it?
- What result does one successful request return?
- Which nearby job does this endpoint not perform?
Use the same answer in your listing, OpenAPI operation description, MCP tool description and x402 metadata. The formatting can change. The meaning should not.
Publish an input contract an agent can execute
Once the description matches a task, the input schema determines whether the agent can act on the match. Publish every required field with its type, location and constraints. Name allowed values. Describe formats and units. State whether omission differs from an explicit null value.
OpenAPI provides operation identifiers, descriptions, parameter locations and schemas for HTTP routes. MCP tools expose a name, description and JSON Schema `inputSchema` through their tool list. Both are useful only when the descriptions and schemas agree with the deployed validator.
Include a small request example that passes today. Examples expose details that schemas often leave ambiguous, including nesting, date notation and the normal combination of required fields. Run the example against the production-shaped validator during release checks. A copied example that now fails teaches a crawler the wrong call.
Input names do not need to match every competing provider. They do need unambiguous meanings. API input compatibility mapping can relate `domain` to `website_url` when both fields mean the same thing. It cannot safely invent a required country code or legal name that the buyer never supplied.
Expose the result and commercial boundary
An agent needs to know what it is buying before it selects a paid endpoint. Publish the successful output media type, stable top-level fields and a representative result shape. State limits that change whether the response fits the task, such as whether the operation returns one record or a list.
Keep observed performance separate from provider claims. Apiosk measures price, settlement rail and input compatibility, plus latency and success rate after enough calls have been proxied for a listing. It does not measure result quality or provider terms. Those dimensions should remain explicit buyer requirements, not invented scores.
Attach current payment requirements to the callable resource rather than copying them into several descriptions. Payment rails and terms can change. For Apiosk, the gateway's `/.well-known/x402` response is the source of truth, while the x402 integration examples show how to connect a route.
The commercial record should let a buyer identify:
- the charging unit for one purchase;
- the live payment requirements returned by the route;
- the successful response contract;
- validation and payment errors the caller may receive;
- the provider and stable resource URL;
- an update time or version that lets a cache replace stale metadata.
Do not bury those fields in a marketing page. A crawler should be able to collect them without rendering a site or merging contradictory documents.
Publish on every surface crawlers actually read
Your website is useful for people, but agent discovery usually begins with a machine-readable source. Publish a public API description, the provider-owned discovery record required by your payment flow, and catalogue entries that buyers already query. If you operate an MCP server, expose a focused tool name, task-level description and complete input schema through its tool listing.
The x402 discovery document checklist covers the fields one paid resource needs to survive ingestion. This broader release checklist makes that document consistent with the other surfaces. A capability called “company lookup” in one place and “entity intelligence” in another can be cached as two unrelated offers.
Treat each surface as a copy of the same operational contract, not a separate marketing channel. Generate descriptions and schemas from shared source data where practical. Keep stable URLs stable. When an input or route changes, update every exported record in the same release.
External catalogues add reach but not automatic trust. Apiosk can sweep external x402 sources and return hits in `external_candidates`. Those records have no stable `candidate_id`; they are unreviewed, unmeasured and not settleable through Apiosk. They cannot chain into `/v1/compare` or `/v1/decide`.
Test discovery from an empty cache
Do not validate discoverability from a browser session that already knows your site. Start with no credentials and no saved documents. Fetch each advertised URL, follow only intended redirects and confirm the response is machine-readable. Then try task phrases a buyer would use rather than your brand name.
For each release, run a cold-reader check:
- Fetch the public catalogue and discovery records without authentication.
- Confirm the capability wording matches across every record.
- Validate the example request against the deployed input schema.
- Compare the documented output fields with a successful response.
- Trigger an unpaid request and inspect the payment requirements it returns.
- Remove the provider name from the query and verify the task still identifies the listing.
- Confirm stale routes and old capability names no longer appear in caches you control.
Record failures by surface. “Present in OpenAPI but absent from the catalogue” needs a distribution fix. “Found in the catalogue but rejected for missing required inputs” needs a contract fix. Separating those cases prevents repeated copy changes from masking a broken ingestion path.
Where Apiosk fits
Apiosk gives a provider a reviewed route into an agent's candidate set. You can list your API on Apiosk with the capability, input contract, output boundary and public payment metadata needed to evaluate the endpoint. `GET /v1/discover?q=…` matches task language to reviewed candidates and returns a stable `candidate_id` for each one.
Those IDs can move into `/v1/compare`, where price, settlement rail, input compatibility and sufficiently measured delivery data appear side by side. Scores are relative to that comparison and ship with their weights and per-dimension contributions. Unmeasured dimensions are dropped and named. `/v1/decide` then returns one provider, the selection rule, every rejected candidate with its exact constraint and the ordered runners-up.
Getting listed does not replace clear provider metadata. It gives that metadata a reviewed discovery surface. Define one job, publish one executable contract, keep the records aligned and test them as a buyer with an empty cache.
Frequently asked questions
Is an OpenAPI document enough to make an API discoverable to agents?
An OpenAPI document gives an agent a machine-readable route and schema, but it does not guarantee that a crawler will find it or match the operation to the buyer's task. Publish the same precise capability wording in the catalog, discovery record and any MCP tool description.
What should an API capability description say?
State the bounded job, the input that starts it and the result returned by one successful call. Avoid product categories and claims that do not help a buyer distinguish this endpoint from a nearby capability.
How often should agent discovery metadata be checked?
Check it whenever the route, required inputs, output contract or payment configuration changes. Also test public discovery URLs from an empty cache so authentication, redirects or stale records do not hide a deploy problem.
Does an external x402 listing become comparable in Apiosk automatically?
No. External hits are returned as unreviewed and unmeasured records without a candidate ID. They cannot enter Apiosk comparison, decision or settlement until they become reviewed catalogue candidates.