# Canopy documentation

> Answers questions about the Canopy dashboards and API from the published docs. No sign-in.

- name: com.canopy-io/docs
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 96/100
- quality: 81/100 (new)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.canopy-io%2Fdocs
- tools: https://api.protogrid.dev/v1/servers/com.canopy-io%2Fdocs/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "docs": {
      "type": "http",
      "url": "https://canopy-io.com/mcp"
    }
  }
}
```


## Trust

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

## Quality 81/100 (new)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### 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`: 5 of 5 tools declare readOnlyHint or destructiveHint
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: explain_capability (destructiveHint, idempotentHint, openWorldHint); get_guide (destructiveHint, idempotentHint, openWorldHint); search_api (destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 585 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 6 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: 5, about 585 tokens to load them all
- tool set hash: 5823e2c6f9a185de82e0d114b3dc0a4b
- badge: [![protogrid quality](https://protogrid.dev/badge/com.canopy-io/docs.svg)](https://protogrid.dev/servers/com.canopy-io/docs)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

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

## Packages

_none_

## Tools (5)

- `explain_capability`: What a capability such as env_roles.manage or billing.manage lets someone do, and which pages it opens. The answer to "why can't I see this button": a page shows only for someone holding one of its listed capabilities, and its write actions only for the matching manage capability.
- `find_surface`: Given what someone wants to do ("rotate a webhook secret", "invite an administrator", "why can't I see Hierarchy"), return the pages where it happens, ranked, each with its menu path, the capability that opens it, and its guide.
- `get_guide`: A docs page as markdown: for a dashboard guide, the menu path, the exact controls to click in order, and the reasons a control may be missing. Pass the guide URL or path from find_surface or list_surfaces, or a surface id such as console.roles.
- `list_surfaces`: Every left-nav page of both signed-in applications: the application, the menu path in the labels on screen, the capability that opens it, what must be selected first, and the guide that walks through it. The same data as /ai/ui-map.json.
- `search_api`: Search the published OpenAPI documents by words from the task or the resource. Returns method, path, operation id, and the reference page for each match. Reference pages live at /docs/api-reference/{operationId}; never guess those URLs.
