{"openapi":"3.1.0","info":{"title":"AgentMarketIndex Discovery API","version":"1.0.0","description":"Read-only discovery of data APIs, paid tools and agent-to-agent services. Rate limited per IP. Prices are provider claims unless the provenance entry says verified; usage figures are measured by the named source.","contact":{"email":"ops@premarcu.com","url":"https:\/\/agentmarketindex.com\/api"},"license":{"name":"Catalog metadata: CC BY 4.0","url":"https:\/\/creativecommons.org\/licenses\/by\/4.0\/"}},"servers":[{"url":"https:\/\/agentmarketindex.com\/api\/v1"}],"paths":{"\/economy":{"get":{"summary":"Daily measured service earnings and coverage","parameters":[{"name":"days","in":"query","schema":{"type":"integer","enum":[7,30,90],"default":30}}],"responses":{"200":{"description":"Observed totals; unknown amounts are null"}}}},"\/services\/{slug}\/daily":{"get":{"summary":"Daily service earnings and documented market cap","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"days","in":"query","schema":{"type":"integer","minimum":1,"maximum":400,"default":30}}],"responses":{"200":{"description":"Daily observations; unknown values are null"},"404":{"description":"Service unavailable"}}}},"\/services\/{slug}\/activity":{"get":{"summary":"Closed UTC hours of service receipts","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}},{"name":"hours","in":"query","schema":{"type":"integer","minimum":1,"maximum":336,"default":48}}],"responses":{"200":{"description":"Hourly net, gross, refunds, transfers and coverage"},"404":{"description":"Service unavailable"}}}},"\/token-market":{"get":{"summary":"CoinGecko token valuations, separate from service earnings","responses":{"200":{"description":"Token market snapshot"},"503":{"description":"No snapshot available"}}}},"\/protocols":{"get":{"summary":"Per-protocol registration, discovery, operational and payment metrics","description":"One record per protocol with metric class, unit, evidence class, 24h\/7d\/30d changes and a 30-day history. There is deliberately no combined total: units and evidence differ per protocol, and a change is null when the comparison day was never recorded.","responses":{"200":{"description":"Protocol metrics and payment rails; unmeasured values are null"}}}},"\/metrics":{"get":{"summary":"Metadata for every headline metric","description":"Definition, source, last read, coverage, confidence and limitations for each headline metric. Values are the same numbers as the numeric endpoints; a null value means unknown, never zero. Carries a schema_version that changes when a definition changes.","responses":{"200":{"description":"Metric metadata, quality labels and additivity rules"}}}},"\/metrics\/{key}":{"get":{"summary":"Metadata for one metric","parameters":[{"name":"key","in":"path","required":true,"schema":{"type":"string","enum":["index_market_cap","index_fdv","observed_payment_volume","gross_wallet_inflows","verified_revenue","active_services","unique_agents","x402_transfers_protocol_wide"]}}],"responses":{"200":{"description":"One metric with its measured state"},"404":{"description":"Unknown metric key"}}}},"\/services":{"get":{"summary":"Search the catalogue","parameters":[{"name":"q","in":"query","description":"Free text over name, tagline and description","schema":{"type":"string"}},{"name":"category","in":"query","description":"Category slug, e.g. web-scraping","schema":{"type":"string"}},{"name":"task","in":"query","description":"Task (tag) slug, e.g. scraping","schema":{"type":"string"}},{"name":"protocol","in":"query","description":"Repeatable protocol filter","schema":{"type":"array","items":{"type":"string","enum":["x402","mcp","a2a","rest","graphql","openapi"]}}},{"name":"price","in":"query","description":"Repeatable price model filter","schema":{"type":"array","items":{"type":"string","enum":["free","paid","unknown"]}}},{"name":"verification","in":"query","description":"Repeatable evidence filter","schema":{"type":"array","items":{"type":"string","enum":["measured","usage","listed"]}}},{"name":"network","in":"query","description":"Repeatable x402 network id, e.g. eip155:8453","schema":{"type":"array","items":{"type":"string"}}},{"name":"sort","in":"query","schema":{"type":"string","enum":["relevance","new","updated","price_low","price_high","name"]}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","schema":{"type":"integer","maximum":100,"default":24}}],"responses":{"200":{"description":"Paginated list of services with provenance"}}}},"\/services\/{slug}":{"get":{"summary":"One service with full provenance and recent endpoint checks","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Service detail"},"404":{"description":"Not found or not published"}}}},"\/categories":{"get":{"summary":"Categories with live counts","responses":{"200":{"description":"Category list"}}}},"\/stats":{"get":{"summary":"Catalogue statistics and source list","responses":{"200":{"description":"Counts"}}}},"\/rankings":{"get":{"summary":"Leaderboard by settled earnings or by platform-reported activity","description":"Both metrics come from the same query as the HTML page. In the earnings metric a missing record yields null, never 0; services without a payment record are absent from the list and counted in meta.coverage.services_unknown. Observed transfers are never added to earnings.","parameters":[{"name":"metric","in":"query","schema":{"type":"string","enum":["earnings","activity"],"default":"earnings"}},{"name":"category","in":"query","schema":{"type":"string"}},{"name":"page","in":"query","schema":{"type":"integer","minimum":1}},{"name":"per_page","in":"query","schema":{"type":"integer","maximum":100,"default":50}}],"responses":{"200":{"description":"Ranked rows plus coverage metadata and a metric-specific disclaimer"}}}}},"components":{"securitySchemes":{}},"security":[]}