# ProvenGraph Trust — the provenance graph for the agent economy > Trust scores for MCP servers, computed over a provenance graph. Agents query reliability, latency, cost, and outcome-verified reputation at runtime. Discovery is commoditizing; trust is the unowned layer. MIT-licensed. ## What it is ProvenGraph Trust is the first product line on the ProvenGraph core — a shared provenance graph (nodes: Service/Agent/KnowledgeClaim/MemoryEntry/Org; edges: attests-to, depends-on, remembers, supersedes, contradicts, observed-by). Trust is computed *over* the graph: attestations weighted by attester trust, outcomes weighted by reporter reputation (the anti-gaming moat), freshness, and contradiction resolution. ## Install `go install github.com/trucore-ai/meshdns/cmd/meshdns@latest` ## API - `POST /v0/servers` — Register a server. Returns server_id + write_key. Optional `probe_method`: `GET` (default), `POST` for streamable-HTTP MCP endpoints, or omit for auto-detect — ProvenGraph auto-detects POST-only at runtime (see Health Checks). - `POST /v0/outcomes` — Report an outcome ("did it work?"). `{server_id, success, rating 0-5, reporter}`. Feeds the outcome-verified reputation edge. - `GET /v0/resolve?capability=` — Returns UP servers ranked by 30-day uptime. - `GET /v0/servers` — List servers with filters: status, query, capability, cursor, limit. Includes `trust_score`, `trust_tier`, `verified`, and `provenance` breakdown. - `GET /v0/capabilities` — All capabilities with active server counts. - `GET /v0/tools` — Tools extracted from server descriptions (`?query=`, `?capability=`, `?limit=`). - `GET /v0/stats` — Registry statistics. - `GET /v0/export` — Full registry JSON export. Open data. ## Health Checks Servers with a `health_url` are probed every 60s (default). Probe method: 1. **GET by default.** If the server answers 2xx, it's marked UP. 2. **Auto-detect POST-only.** If GET fails with **405, any 4xx error, or a transport error (connection refused/timeout)**, ProvenGraph retries with a `POST` MCP `initialize` request. If that succeeds, the server is marked UP and the method switch is persisted — future probes go straight to POST. 3. **Explicit `probe_method: "POST"`** skips the GET attempt entirely. Set this when registering servers known to be POST-only (e.g., streamable-HTTP MCP endpoints). 4. **5s timeout.** Non-2xx after POST retry → marked DOWN. 5. **`/v0/resolve` never returns DOWN servers.** The POST probe sends a valid MCP `initialize` request (`jsonrpc: "2.0"`, `method: "initialize"`, `protocolVersion: "2025-06-18"`) with `Accept: application/json, text/event-stream`. This works with all standards-compliant streamable-HTTP MCP servers. ## SDKs - Python: `pip install meshdns-client` → `from meshdns_client import MeshDNSClient` - TypeScript: `npm i @meshdns/client` → `import { MeshDNSClient } from "@meshdns/client"` ## Docs - [Full Documentation](https://trucore.xyz/docs/meshdns): Architecture, API reference, SDK quickstart, health check model, FAQ. - [GitHub](https://github.com/trucore-ai/meshdns): Source code, issues, discussions. - [License](https://github.com/trucore-ai/meshdns/blob/main/LICENSE): MIT.