# Tern

> Resolve capability gaps: validate native MCPs, search live web, and record unmet demand.

- name: com.tern0/resolver
- version: 0.3.0
- connection class: R0 (autonomous)
- trust: 76/100 flags: no-repository
- quality: 78/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.tern0%2Fresolver
- tools: https://api.protogrid.dev/v1/servers/com.tern0%2Fresolver/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "resolver": {
      "type": "http",
      "url": "https://mcp.tern0.com/mcp"
    }
  }
}
```


## Trust

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

## Quality 78/100 (good)

### 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: 71 (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
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: work_claim (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); resolve (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); submit_mandate (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 1,354 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 75 (weight 15)

- warn `stability.changes`: 6 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

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

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

- tools: 9, about 1,354 tokens to load them all
- tool set hash: 2a786d39c25c501edc12540bd47d2cf5
- tools last changed: 2026-10-06T07:04:51.670Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.tern0/resolver.svg)](https://protogrid.dev/servers/com.tern0/resolver)
- 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-06 `artifact_get` added
  - Retrieve the latest version of an artifact, or a specific immutable version.
- 2026-10-06 `artifact_put` added
  - Store text or structured content as an immutable artifact version, optionally linked to a work item. Reusing artifactId creates the next version.
- 2026-10-06 `work_update` added
  - Update a claimed work item as it progresses. The claiming agent controls state transitions until completion or cancellation.
- 2026-10-06 `work_claim` added
  - Atomically claim an open work item for an agent. Claims fail if another agent already owns the item.
- 2026-10-06 `work_list` added
  - List durable work items available to agents. Filter by state, capability or current assignee.
- 2026-10-06 `work_create` added
  - Create a durable work item for another agent or for later continuation. Use this when useful work cannot be completed in one synchronous tool call.

Full history: https://api.protogrid.dev/v1/servers/com.tern0%2Fresolver/changes

## Remotes

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

## Packages

_none_

## Tools (9)

- `artifact_get`: Retrieve the latest version of an artifact, or a specific immutable version.
- `artifact_put`: Store text or structured content as an immutable artifact version, optionally linked to a work item. Reusing artifactId creates the next version.
- `report_outcome`: Report whether a resolver request actually worked and how much agent friction it required.
- `resolve`: Resolve a real-world capability request. Search the official MCP Registry, actively validate public candidate MCP tool surfaces, then fall back to live web search when native coverage is weak or absent. Weak Registry matches never suppress capability-gap telemetry.
- `submit_mandate`: Record high-intent demand for a capability an agent wants fulfilled. Supplier contact and spending are not enabled yet.
- `work_claim`: Atomically claim an open work item for an agent. Claims fail if another agent already owns the item.
- `work_create`: Create a durable work item for another agent or for later continuation. Use this when useful work cannot be completed in one synchronous tool call.
- `work_list`: List durable work items available to agents. Filter by state, capability or current assignee.
- `work_update`: Update a claimed work item as it progresses. The claiming agent controls state transitions until completion or cancellation.
