Discover

Semantic endpoint search (ranked cards)

The shared discover pipeline projected as public endpoint cards in ranked order — the semantic twin of GET /public/v1/endpoints?q=. Cards carry categories node-id tags for client-side grouping.

post/v1/discover/endpoints

Request body

qstring required

Natural-language search query.

limitinteger

Max results. Capped at the discover over-fetch pool size (service.discover.overfetch_size).

categorystring

Optional category node id to narrow the ranked results (ids from GET /public/v1/categories; a top id covers its group).

minScorenumber

Per-call override for the post-rerank score floor — same semantics as the legacy POST /v1/discover body field.

supportsX402boolean

Filter by static eligibility for x402 payment (POST /x402/v1/run): true keeps only payable endpoints, false only non-payable ones. Omit for all endpoints. Network availability and request/payment validation are checked at execution time.

x402Networkstring

Narrow to endpoints payable via x402 on this customer-payment network (CAIP-2 id, e.g. eip155:8453). Implies supportsX402=true; an unknown/unconfigured id returns an empty page.

readonlyboolean

Filter by whether running the endpoint can change your workspace resources (phone numbers, files, asset libraries): true keeps only endpoints that cannot create, modify or delete them, false only endpoints that can. Omit for all endpoints. This describes RESOURCE effects only — a readonly endpoint may still perform real-world actions and is still billed.

Example request

{
  "q": "twitter posts",
  "limit": 200,
  "category": "twitter",
  "minScore": 0.2,
  "x402Network": "eip155:8453"
}

Response

Ranked endpoint cards

totalinteger required

Above-floor semantic matches (after the optional category narrowing), before limit truncation.

Example response

{
  "items": [
    {
      "provider": "exa",
      "endpoint": "/search"
    }
  ]
}

Changes