{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_zb299wbmq3fs","handle":"roundhouse","url":"https://wellknown.network/agents/roundhouse","links":{"self":"https://wellknown.network/agents/roundhouse/record.json","html":"https://wellknown.network/agents/roundhouse","markdown":"https://wellknown.network/agents/roundhouse/record.md","api":"https://wellknown.network/api/v1/agents/roundhouse","status":"https://wellknown.network/api/v1/agents/roundhouse/status","claim":"https://wellknown.network/agents/roundhouse/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/roundhouse/claim.json","badge":"https://wellknown.network/agents/roundhouse/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/roundhouse/history","tools":"https://wellknown.network/api/v1/agents/roundhouse/tools"},"ard":{"identifier":"urn:air:api.roundhouseai.io:server:roundhouse","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Roundhouse","summary":"Read-only analytics on x402 agent payments and ERC-8004 agent identity, with SQL.","description":"Read-only analytics on x402 agent payments and ERC-8004 agent identity, with SQL.","publisher":{"name":"io.roundhouseai","url":null},"homepage":"https://roundhouseai.io/docs/api/mcp?utm_source=mcp_registry&utm_medium=mcp_directory","repository":null,"version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.roundhouseai.io/v0/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-16T09:52:26.067934Z","publishedAt":"2026-10-16T09:52:26.067934Z","registryName":"io.roundhouseai/roundhouse"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"data.database","name":"Databases","confidence":1,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":1,"provenance":"derived"},{"slug":"knowledge.knowledge-graph","name":"Knowledge Graphs","confidence":1,"provenance":"derived"},{"slug":"security.identity","name":"Identity & Access","confidence":1,"provenance":"derived"},{"slug":"finance.banking","name":"Banking","confidence":0.583,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":0.51,"provenance":"derived"}],"categories":["commerce","data","finance","knowledge","security"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-26T23:22:51.184Z","lastProbedAt":"2026-10-26T23:22:51.184Z","statusComputedAt":"2026-10-26T23:25:22.485Z","reliability30d":{"probes":34,"successRate":1,"p50Ms":48,"basis":"mixed","measures":{"availability":"availability (some checks stopped at authentication)","latency":"response time (mixed)","tools":"partially observed","summary":"Some successful checks reached the service and some stopped at an authentication response; figures combine both."},"checks":{"total":34,"ok":34,"authBoundaryOk":32,"serviceOk":2,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-26T23:22:51.184Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":19,"error":null,"detail":{"tools":[{"name":"get_account","description":"Who the credential in front of this request resolves to, which of the two paid lanes it would take, what it has left to spend, and the price of every route on b"},{"name":"list_flows","description":"The newest settlements across every indexed chain, payer to payee. This is the same feed the `/flows` page renders.\n\nWraps GET /v0/flows.\nAccess: requires an AP"},{"name":"list_transactions","description":"Every indexed settlement, newest first, filterable by how confidently it is known to be an x402 payment.\n\nWraps GET /v0/transactions.\nAccess: requires an API ke"},{"name":"list_entity_settlements","description":"Settlements where this wallet is either the payer or the payee, newest first. Walkable deeply in time order: `(payer, block_time desc)` and `(payee, block_time "},{"name":"get_agent","description":"One wallet in its paying role: its resolved identity and its own settlement aggregates. Every figure is that wallet's own — there are no site-wide totals on thi"},{"name":"get_merchant","description":"The same shape as `/agents/{wallet}`, for a wallet in its receiving role.\n\nWraps GET /v0/merchants/{wallet}.\nAccess: requires an API key (Authorization: Bearer "},{"name":"list_agents","description":"Agents read from the on-chain IdentityRegistry, with their registration card and payment wallet. `score` is the ERC-8004 reputation score derived from on-chain "},{"name":"list_wallets","description":"All settling wallets, filterable by the role they were seen in.\n\nWraps GET /v0/wallets.\nAccess: requires an API key (Authorization: Bearer rh_live_… or x-api-ke"},{"name":"get_leaderboard","description":"Agents ordered by the ERC-8004 reputation score, which is the on-chain registry's number and not a Roundhouse rating. Unscored agents sort last rather than drop"},{"name":"list_agent_feedback","description":"Raw feedback entries from the ReputationRegistry for a single agent id.\n\nWraps GET /v0/agents/{agentId}/feedback.\nAccess: requires an API key (Authorization: Be"},{"name":"list_facilitators","description":"The facilitators seen relaying settlements, with their known relayer wallets. Paged: this used to return up to 200 rows unpaged, most of their columns null. Nul"},{"name":"get_graph","description":"Entities as nodes and settlements aggregated into edges, over a bounded window. Two window forms, and exactly one may be sent: `window=N` is a row count running"},{"name":"list_services","description":"The x402 service catalog, ordered by observed 30-day call volume. A listing is a claim; the observed columns are evidence — prefer `is_live` with non-zero `l30_"},{"name":"list_capabilities","description":"Every job the catalog is grouped by, with the canonical request and response each provider of that job is mapped onto — which is what lets an agent swap one end"},{"name":"get_capability","description":"Every indexed endpoint that does this job, with the market's going rate. `price.spot` is the call-WEIGHTED price, not the median — a median counts one wallet's "},{"name":"recommend_capability_offers","description":"A ranked shortlist of endpoints that do this job, under criteria you choose and the response echoes back. Every term is something the endpoint publishes about i"},{"name":"run_sql","description":"One `SELECT` (or `WITH`) over the public data-layer tables. Enforced in the database, not the worker: a read-only transaction as a role that can see only those "}],"toolCount":17,"toolsHash":"2d5a0aeaec01375db66cbdce697702736bea46e172430449497270502720358c","serverName":"roundhouse","capabilities":["tools"],"serverVersion":"0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T16:28:59.837Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":207,"error":null,"detail":{"tools":[{"name":"get_account","description":"Who the credential in front of this request resolves to, which of the two paid lanes it would take, what it has left to spend, and the price of every route on b"},{"name":"list_flows","description":"The newest settlements across every indexed chain, payer to payee. This is the same feed the `/flows` page renders.\n\nWraps GET /v0/flows.\nAccess: requires an AP"},{"name":"list_transactions","description":"Every indexed settlement, newest first, filterable by how confidently it is known to be an x402 payment.\n\nWraps GET /v0/transactions.\nAccess: requires an API ke"},{"name":"list_entity_settlements","description":"Settlements where this wallet is either the payer or the payee, newest first. Walkable deeply in time order: `(payer, block_time desc)` and `(payee, block_time "},{"name":"get_agent","description":"One wallet in its paying role: its resolved identity and its own settlement aggregates. Every figure is that wallet's own — there are no site-wide totals on thi"},{"name":"get_merchant","description":"The same shape as `/agents/{wallet}`, for a wallet in its receiving role.\n\nWraps GET /v0/merchants/{wallet}.\nAccess: requires an API key (Authorization: Bearer "},{"name":"list_agents","description":"Agents read from the on-chain IdentityRegistry, with their registration card and payment wallet. `score` is the ERC-8004 reputation score derived from on-chain "},{"name":"list_wallets","description":"All settling wallets, filterable by the role they were seen in.\n\nWraps GET /v0/wallets.\nAccess: requires an API key (Authorization: Bearer rh_live_… or x-api-ke"},{"name":"get_leaderboard","description":"Agents ordered by the ERC-8004 reputation score, which is the on-chain registry's number and not a Roundhouse rating. Unscored agents sort last rather than drop"},{"name":"list_agent_feedback","description":"Raw feedback entries from the ReputationRegistry for a single agent id.\n\nWraps GET /v0/agents/{agentId}/feedback.\nAccess: requires an API key (Authorization: Be"},{"name":"list_facilitators","description":"The facilitators seen relaying settlements, with their known relayer wallets. Paged: this used to return up to 200 rows unpaged, most of their columns null. Nul"},{"name":"get_graph","description":"Entities as nodes and settlements aggregated into edges, over a bounded window. Two window forms, and exactly one may be sent: `window=N` is a row count running"},{"name":"list_services","description":"The x402 service catalog, ordered by observed 30-day call volume. A listing is a claim; the observed columns are evidence — prefer `is_live` with non-zero `l30_"},{"name":"list_capabilities","description":"Every job the catalog is grouped by, with the canonical request and response each provider of that job is mapped onto — which is what lets an agent swap one end"},{"name":"get_capability","description":"Every indexed endpoint that does this job, with the market's going rate. `price.spot` is the call-WEIGHTED price, not the median — a median counts one wallet's "},{"name":"recommend_capability_offers","description":"A ranked shortlist of endpoints that do this job, under criteria you choose and the response echoes back. Every term is something the endpoint publishes about i"},{"name":"run_sql","description":"One `SELECT` (or `WITH`) over the public data-layer tables. Enforced in the database, not the worker: a read-only transaction as a role that can see only those "}],"toolCount":17,"toolsHash":"2d5a0aeaec01375db66cbdce697702736bea46e172430449497270502720358c","serverName":"roundhouse","capabilities":["tools"],"serverVersion":"0","protocolVersion":"2025-06-18"}},{"at":"2026-10-26T09:35:38.578Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":1174,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer resource_metadata=\"https://api.roundhouseai.io/.well-known/oauth-protected-resource/v0/mcp\""}},{"at":"2026-10-26T02:26:03.489Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":23,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer resource_metadata=\"https://api.roundhouseai.io/.well-known/oauth-protected-resource/v0/mcp\""}},{"at":"2026-10-25T19:30:16.037Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":66,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer resource_metadata=\"https://api.roundhouseai.io/.well-known/oauth-protected-resource/v0/mcp\""}},{"at":"2026-10-25T12:30:59.855Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":49,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer resource_metadata=\"https://api.roundhouseai.io/.well-known/oauth-protected-resource/v0/mcp\""}},{"at":"2026-10-25T05:30:52.706Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":19,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer resource_metadata=\"https://api.roundhouseai.io/.well-known/oauth-protected-resource/v0/mcp\""}},{"at":"2026-10-24T23:28:54.987Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":24,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer resource_metadata=\"https://api.roundhouseai.io/.well-known/oauth-protected-resource/v0/mcp\""}},{"at":"2026-10-24T16:22:38.955Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":57,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer resource_metadata=\"https://api.roundhouseai.io/.well-known/oauth-protected-resource/v0/mcp\""}},{"at":"2026-10-24T09:27:33.604Z","kind":"mcp_initialize","ok":true,"httpStatus":401,"latencyMs":48,"error":null,"detail":{"authRequired":true,"wwwAuthenticate":"Bearer resource_metadata=\"https://api.roundhouseai.io/.well-known/oauth-protected-resource/v0/mcp\""}}],"tools":[{"name":"get_account","description":"Who the credential in front of this request resolves to, which of the two paid lanes it would take, what it has left to spend, and the price of every route on b"},{"name":"list_flows","description":"The newest settlements across every indexed chain, payer to payee. This is the same feed the `/flows` page renders.\n\nWraps GET /v0/flows.\nAccess: requires an AP"},{"name":"list_transactions","description":"Every indexed settlement, newest first, filterable by how confidently it is known to be an x402 payment.\n\nWraps GET /v0/transactions.\nAccess: requires an API ke"},{"name":"list_entity_settlements","description":"Settlements where this wallet is either the payer or the payee, newest first. Walkable deeply in time order: `(payer, block_time desc)` and `(payee, block_time "},{"name":"get_agent","description":"One wallet in its paying role: its resolved identity and its own settlement aggregates. Every figure is that wallet's own — there are no site-wide totals on thi"},{"name":"get_merchant","description":"The same shape as `/agents/{wallet}`, for a wallet in its receiving role.\n\nWraps GET /v0/merchants/{wallet}.\nAccess: requires an API key (Authorization: Bearer "},{"name":"list_agents","description":"Agents read from the on-chain IdentityRegistry, with their registration card and payment wallet. `score` is the ERC-8004 reputation score derived from on-chain "},{"name":"list_wallets","description":"All settling wallets, filterable by the role they were seen in.\n\nWraps GET /v0/wallets.\nAccess: requires an API key (Authorization: Bearer rh_live_… or x-api-ke"},{"name":"get_leaderboard","description":"Agents ordered by the ERC-8004 reputation score, which is the on-chain registry's number and not a Roundhouse rating. Unscored agents sort last rather than drop"},{"name":"list_agent_feedback","description":"Raw feedback entries from the ReputationRegistry for a single agent id.\n\nWraps GET /v0/agents/{agentId}/feedback.\nAccess: requires an API key (Authorization: Be"},{"name":"list_facilitators","description":"The facilitators seen relaying settlements, with their known relayer wallets. Paged: this used to return up to 200 rows unpaged, most of their columns null. Nul"},{"name":"get_graph","description":"Entities as nodes and settlements aggregated into edges, over a bounded window. Two window forms, and exactly one may be sent: `window=N` is a row count running"},{"name":"list_services","description":"The x402 service catalog, ordered by observed 30-day call volume. A listing is a claim; the observed columns are evidence — prefer `is_live` with non-zero `l30_"},{"name":"list_capabilities","description":"Every job the catalog is grouped by, with the canonical request and response each provider of that job is mapped onto — which is what lets an agent swap one end"},{"name":"get_capability","description":"Every indexed endpoint that does this job, with the market's going rate. `price.spot` is the call-WEIGHTED price, not the median — a median counts one wallet's "},{"name":"recommend_capability_offers","description":"A ranked shortlist of endpoints that do this job, under criteria you choose and the response echoes back. Every term is something the endpoint publishes about i"},{"name":"run_sql","description":"One `SELECT` (or `WITH`) over the public data-layer tables. Enforced in the database, not the worker: a read-only transaction as a role that can see only those "}],"package":null,"toolSurface":{"id":"ts_kfv9nkny39w8","endpointId":"ep_fgnuzu37bdag","hash":"2d5a0aeaec01375db66cbdce697702736bea46e172430449497270502720358c","toolCount":17,"serverName":"roundhouse","serverVersion":"0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-26T16:28:59.853Z","lastSeenAt":"2026-10-26T23:22:51.196Z","observations":2,"toolNames":["get_account","list_flows","list_transactions","list_entity_settlements","get_agent","get_merchant","list_agents","list_wallets","get_leaderboard","list_agent_feedback","list_facilitators","get_graph","list_services","list_capabilities","get_capability","recommend_capability_offers","run_sql"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_fgnuzu37bdag","url":"https://api.roundhouseai.io/v0/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-21T21:32:52.254Z","auth":{"observedAt":"2026-10-21T21:32:52.382Z","authRequired":true,"scheme":"Bearer","resourceMetadata":{"url":"https://api.roundhouseai.io/.well-known/oauth-protected-resource/v0/mcp","resource":"https://api.roundhouseai.io/v0/mcp","authorizationServers":["https://dznfkpuatbryligwvayi.supabase.co/auth/v1"],"scopesSupported":[]},"authorizationServer":{"url":"https://dznfkpuatbryligwvayi.supabase.co/.well-known/oauth-authorization-server/auth/v1","issuer":"https://dznfkpuatbryligwvayi.supabase.co/auth/v1","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256","plain"],"tokenEndpointAuthMethodsSupported":["client_secret_basic","client_secret_post","none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-21T21:32:52.402Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"roundhouseai.io","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-09-03T15:46:46.000Z","validTo":"2026-12-02T16:46:43.000Z","daysToExpiry":36,"sanCount":3,"fingerprint256":"01:31:A7:07:47:57:92:EE:64:39:25:67:94:E4:85:51:B3:0F:63:3D:67:C9:84:FF:8F:CF:70:FB:B5:9E:57:58"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.roundhouseai/roundhouse","url":"https://registry.modelcontextprotocol.io/v0/servers/io.roundhouseai%2Froundhouse","firstSeenAt":"2026-10-17T13:21:54.418Z","fetchedAt":"2026-10-24T10:18:42.209Z","normalizedAt":"2026-10-24T10:18:42.209Z"}]},"firstSeenAt":"2026-10-17T13:21:54.418Z","updatedAt":"2026-10-26T23:26:17.401Z"}