Skip to content
looot docs
Esc
↑↓navigate↵open⌘Jpreview

Search the catalog

Ranked full-text search over the catalog. A query also matches by capability, and a long natural-language query falls back to stemmed tokens, so it never comes back empty.

The same search core answers MCP search (10 title rows by default) and MCP search_catalog (50 full rows by default, like this route). A title row is a subset of this route’s row: endpointId, provider, name, capability, category, estimatedPrice, priceBasis, access, executionMode, costPerSuccessUsd (facts.costPerSuccessUsd), async (facts.async), works, sourceCapability and credential, in the same order for the same q, limit and offset for a customer token. A platform operator token differs: this route always includes unavailable rows, while MCP honors an explicit filters.includeUnavailable false.

GET/v1/catalog/search
Authorization
AuthorizationBearer token · headerrequired
Query parameters
qstringrequired
min length 1
limitinteger
min 1 · max 200
offsetinteger

Where the page starts in the ranked list; pass the previous page's nextOffset (null on the last page).

min 0
categorystring
platformstring
providerstring
capabilitystring
keylessboolean
verifiedboolean
mockboolean

true/false excludes the other kind; omitted keeps both but real providers still rank above mocks

maxPriceMicrosinteger
min 0
hiddenboolean
preferstring

How providers are ordered inside a job: balanced (default), cheapest, reliable or fastest. Any other value is a 400 validation_error. Every item's facts carry it and the body echoes it; it changes the order only once the gateway serves the shared ranking.

Allowed:cheapestreliablefastestbalanced
Responses
200

Ranked catalog items (each carrying mock, verified, keyless, runnableNow, stats, access, matchedBy, facts, works, credential and sourceCapability; capability is the resolved job id), same shape as the listing, plus the prefer value used. An empty page may carry warnings (no_supply_for_job) or priceHint (price_above_max: maxPriceMicros removed every endpoint that does the named job; it names the cheapest)

400

q is required

403

catalog:read scope required

Try it
Server
Authorization
Parameters
Request
curl -X GET "https://api.looot.ai/v1/catalog/search?q=string" \
  -H "Authorization: Bearer YOUR_TOKEN"
Response
Ranked catalog items (each carrying mock, verified, keyless, runnableNow, stats, access, matchedBy, facts, works, credential and sourceCapability; capability is the resolved job id), same shape as the listing, plus the prefer value used. An empty page may carry warnings (no_supply_for_job) or priceHint (price_above_max: maxPriceMicros removed every endpoint that does the named job; it names the cheapest)