# Agent Service Directory

> A directory of agent services, with metrics.

- name: com.agentservicedirectory/agent-service-directory
- version: 0.2.0
- connection class: R0 (autonomous)
- trust: 83/100 flags: no-repository
- quality: 87/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.agentservicedirectory%2Fagent-service-directory
- tools: https://api.protogrid.dev/v1/servers/com.agentservicedirectory%2Fagent-service-directory/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "agent-service-directory": {
      "type": "http",
      "url": "https://agentservicedirectory.com/mcp",
      "headers": {
        "Authorization": "Bearer ${AGENT_SERVICE_DIRECTORY_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${AGENT_SERVICE_DIRECTORY_TOKEN}`.

## Trust

- hygiene: 80
- liveness: 100
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-100% +updated-4d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 87/100 (new)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 86 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_service (destructiveHint); get_changes (destructiveHint, idempotentHint); get_tree (destructiveHint, idempotentHint); …
- pass `tools.token_cost`: about 3,399 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: n/a (weight 15)

- n/a `stability.changes`, `stability.rug_pull`: tool history recorded for 3 of the 7 days needed

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 9, about 3,399 tokens to load them all
- tool set hash: 0b5962f8a6b5821eec6da82eb025d2db
- tools last changed: 2026-10-20T12:15:00.585Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.agentservicedirectory/agent-service-directory.svg)](https://protogrid.dev/servers/com.agentservicedirectory/agent-service-directory)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-20 `search_services` changed (inputSchema)
- 2026-10-20 `search_services` changed (inputSchema)
- 2026-10-20 `search_services` changed (inputSchema)
- 2026-10-19 `get_tree` changed (inputSchema)
- 2026-10-19 `search_services` changed (description, inputSchema) **meaning changed**
  - before: Find payable APIs and agent task marketplaces by purpose, with evidence for each. Filter on the evidence (passing, min_pass_rate, max_price_usd) and pick one; then call get_service for connection details. Results are compact; use limit/offset to page.
  - after: Find services an agent can use, by what they do: remote MCP servers (with the tools each lists), local MCP servers (packages), pay-per-call APIs (x402, MPP), A2A agents and task marketplaces, with our checks for each. Search by words (query) or by capability tree node (branch); filter on type, access (none_asked, payment, credentials), max_price_usd and the evidence (passing, min_pass_rate); then call get_service for connection details. Results are compact; use limit/offset to page.
- 2026-10-18 `search_services` changed (inputSchema)
- 2026-10-18 `search_services` changed (inputSchema)
- 2026-10-18 `get_tree` changed (description, inputSchema)
  - before: The capability tree: what services do, as branches, leaves and leaves' children, each with a one-line description and the number of services in it (zeros included). Read it once (follow its guide), choose the most specific node that matches your task, then call search_services with branch set to its id, or up to three ids separated by commas when more than one fits. IDs are permanent: an id that moved (listed under moved) still works as a branch filter.
  - after: The capability tree: what services do, as branches, leaves and leaves' children, each with a one-line description and the number of services in it (zeros included). Read it once (follow its guide), choose the most specific node that matches your task, then call search_services with branch set to its id, or up to three ids separated by commas when more than one fits. format "text" returns the same tree as plain text, one line per node: the cheapest to read. Keep it and pass since_revision later to get only what changed. IDs are permanent: an id that moved (listed under moved) still works as a branch filter.
- 2026-10-17 `get_tree` changed (description)
  - before: The capability tree: what services do, as branches and leaves with a one-line description and the number of services in each (zeros included). Read it once, choose the leaf that matches your task, then call search_services with branch set to its id. IDs are permanent: an id that moved (listed under moved) still works as a branch filter.
  - after: The capability tree: what services do, as branches, leaves and leaves' children, each with a one-line description and the number of services in it (zeros included). Read it once (follow its guide), choose the most specific node that matches your task, then call search_services with branch set to its id, or up to three ids separated by commas when more than one fits. IDs are permanent: an id that moved (listed under moved) still works as a branch filter.
- 2026-10-17 `search_services` changed (inputSchema)

Full history: https://api.protogrid.dev/v1/servers/com.agentservicedirectory%2Fagent-service-directory/changes

## Remotes

- https://agentservicedirectory.com/mcp (streamable-http, auth none, reachable true, uptime30d 1)

## Packages

_none_

## Tools (9)

- `get_changes`: Recently detected changes to monitored documentation and API schemas, across all reviewed services or for one. A detected change is pending interpretation, not necessarily a breaking change.
- `get_history`: Individual check results for a service over the last days, newest first. Use it to see patterns (intermittent failures, slowdowns) behind the summary figures.
- `get_report`: The weekly State of Agent Services report: coverage, probe results, payment networks, prices and purpose tags across everything we track. Counts and distributions only, with their method. Omit id for the latest published report; 'current' gives provisional week-to-date figures.
- `get_service`: Full evidence and connection details for one service, plus a referral_id. Use the referral_id with report_outcome after you use the service (valid 7 days).
- `get_stats`: How many services we track and how many checks ran in the last 24 hours.
- `get_tree`: The capability tree: what services do, as branches, leaves and leaves' children, each with a one-line description and the number of services in it (zeros included). Read it once (follow its guide), choose the most specific node that matches your task, then call search_services with branch set to its id, or up to three ids separated by commas when more than one fits. format "text" returns the same tree as plain text, one line per node: the cheapest to read. Keep it and pass since_revision later to get only what changed. IDs are permanent: an id that moved (listed under moved) still works as a branch filter.
- `report_outcome`: After using a service, report whether it worked. Requires a free API key (Authorization: Bearer asd_...; get one with POST https://agentservicedirectory.com/api/v1/keys). Quote the referral_id from get_service. Reports are stored as unverified claims and published only after moderation. Never include task data, secrets or personal information.
- `search_services`: Find services an agent can use, by what they do: remote MCP servers (with the tools each lists), local MCP servers (packages), pay-per-call APIs (x402, MPP), A2A agents and task marketplaces, with our checks for each. Search by words (query) or by capability tree node (branch); filter on type, access (none_asked, payment, credentials), max_price_usd and the evidence (passing, min_pass_rate); then call get_service for connection details. Results are compact; use limit/offset to page.
- `send_feedback`: Tell us what is missing or wrong: a service or kind of service we don't list, a metric you need, a feature, wrong data or unclear docs. No key needed. We use it to decide where to look next; counts by kind are public on the roadmap, the messages are not. Never include task data, secrets or personal information.
