TruCore Product Docs
ProvenGraph
The provenance graph for the agent economy. A shared graph core powering three product lines — Trust, Knowledge, and Memory.
What is ProvenGraph?
ProvenGraph is a provenance graph — a shared, verifiable record of who said what, when, and whether it held up. Every node and every edge carry evidence: URLs, content hashes, timestamps, issuers, and freshness values that decay over time. Trust is computed over the graph, not from a flat table.
Think of it as the credit bureau for the agent economy. Agents don't blindly trust a server they just discovered. They query ProvenGraph: "Has anyone attested to this server? Did it work for them? Is this knowledge claim still current?" The graph answers, weighted by the reputation of the reporters themselves — that's the anti-gaming moat.
One binary, MIT-licensed, zero external dependencies. Deploy behind Caddy or nginx and you have a private trust graph in minutes.
Three Product Lines, One Graph Core
ProvenGraph has three product lines, each built on the same provenance graph core. The graph nodes are Service, Agent, KnowledgeClaim, MemoryEntry, and Org — with edges like attests-to, depends-on, remembers, supersedes, contradicts, and observed-by.
Live
Trust
Server trust scores with outcome-weighted reputation. Register your MCP server, get probed every 60s, accumulate reliability and latency data. Other agents report outcomes — and their own trust weight determines how much their report moves the score. The anti-gaming moat.
Planned
Knowledge
Grounded, verifiable knowledge claims. Every claim carries a source URL, content hash, and attestation edges. Claims can be superseded and contradicted — the graph tracks which claims hold up and which were walked back. "What's already known."
Planned
Memory
Compliant episodic memory for agents. Every memory entry is a graph node with provenance — who remembered what, when, and under what policy. Memory entries can be scoped, expired, and audited. "What's remembered and compliant."
All three share the same graph core — same nodes table, same edges table, same trust-scoring engine. Register a server once and it's a first-class node in all three product lines. That's the power of a provenance graph: each product line is just a different query over the same data.
Trust — Server Verification (Live)
Trust is the first and currently live product line. It's what everyone knows as "MeshDNS" — the capability-based service registry for MCP servers. Servers register with capabilities, get health-checked every 60s, and agents resolve by capability at runtime. Never hardcode an MCP URL again.
The trust scoring engine computes a 0-100 score from five signals: reliability (uptime from probe history), latency (avg response time), cost transparency (disclosed cost earns an honesty bonus), outcome-verified reputation (the moat — weighted by reporter trust), and schema integrity (hash-pinned manifests detect rug pulls).
Architecture
Six components in one static Go binary:
| Component | Role |
|---|---|
| HTTP Server | Go stdlib net/http — no frameworks. Serves REST API, landing page, and JSON export endpoint. |
| Registry Store | SQLite via modernc.org/sqlite — pure Go, no CGo. Server manifests, health history, resolution counters. |
| ProvenGraph Core | Shared nodes + edges tables (pg_nodes, pg_edges). Service/Agent/KnowledgeClaim/MemoryEntry/Org nodes with attests-to, depends-on, remembers, supersedes, contradicts, observed-by edges. |
| Trust Engine | Computes trust scores over the graph: attestations weighted by attester trust, outcomes weighted by reporter reputation (anti-gaming moat), freshness, and contradiction penalties. |
| Health Check Pool | Background worker pool probes every registered health_url on a configurable interval. GET by default, auto-detects POST-only with MCP initialize retry. |
| Resolution Engine | Matches capability queries against UP servers, ranks by 30-day uptime. Dead servers never appear in results. |
Getting Started
Install, start, register, resolve — 60 seconds:
$ go install github.com/trucore-ai/provengraph/cmd/meshdns@latest
$ meshdns serve
ProvenGraph Trust starting on :8080
# Register a server
$ curl -s -X POST http://localhost:8080/v0/servers \
-H "Content-Type: application/json" \
-d '{"name":"weather-agent","description":"Weather data MCP server",
"server_url":"https://weather.example.com",
"health_url":"https://weather.example.com/health",
"capabilities":["weather","forecast","alerts"],
"owner_contact":"ops@example.com"}'
# → {"server_id":"...","write_key":"..."}
# Resolve by capability
$ curl -s "http://localhost:8080/v0/resolve?capability=weather"
# → [{"name":"weather-agent","server_url":"https://weather.example.com",...}]API Reference
| Method | Path | Description |
|---|---|---|
| POST | /v0/servers | Register a new server. Returns server_id + write_key. Optional probe_method (GET | POST). Duplicate names → 409. |
| GET | /v0/servers | List servers with trust scores. Query params: status, query, capability, cursor, limit. |
| GET | /v0/servers/{id} | Get a single server with trust_score, trust_tier, provenance breakdown. |
| PUT | /v0/servers/{id} | Update server manifest. Requires X-Write-Key or Authorization: Bearer. |
| DELETE | /v0/servers/{id} | Delist (soft-delete). Stops health probes within one cycle. |
| POST | /v0/outcomes | Report an outcome. {server_id, success, rating, reporter}. Feeds the reputation-weighted trust score. |
| GET | /v0/resolve | Resolve servers by capability. Query param: capability (required). Returns only UP servers, ranked by 30-day uptime. |
| GET | /v0/stats | Registry statistics: active/total servers, up count, resolutions and probes in the last 24h. |
| GET | /v0/export | Full registry JSON export. Open data — no auth required. Platform-risk hedge. |
Trust Scoring Model
Attestation Score (0-20)
Who vouches for this server? Each attestation weighted by attester's own trust × freshness. Saturates with ~3-4 strong attestations.
Outcome Score (0-25)
The moat. Did it work? Success rate weighted by reporter reputation — a low-trust reporter can't pump a score. Confidence ramps with sample size.
Freshness (0-10)
How recent are the attestations and outcomes? Edges decay over time. Fresh evidence carries more weight.
Contradiction Penalty (0-10)
Evidence of contradiction or supersession. Conflicting claims reduce trust.
Cost Transparency Bonus (+3)
Disclosing cost_per_call earns a small honesty bonus. Undisclosed = 0. Expensive ≠ untrustworthy — cost is surfaced for ranking, not scored.
Total (0-100)
Provenance trust (0-65) + reliability from probe history (0-30) + latency score (0-5) + cost bonus (0-3).
How Health Checks Work
ProvenGraph probes every registered server's health_url every 60s (configurable). GET by default, auto-detects POST-only endpoints (MCP streamable-HTTP servers that answer GET with 405). 5-second timeout. Non-2xx → DOWN. Resolution never returns DOWN servers.
SDK Reference
Python
$ pip install meshdns-clientfrom meshdns_client import MeshDNSClient
client = MeshDNSClient("https://provengraph.trucore.xyz")
# Resolve a capability
servers = client.resolve("weather")
# → [{"name":"weather-agent","server_url":"https://...","up":true}]
# Smart retry — skips recently-failed servers
next_server = client.resolve_next("weather")TypeScript
$ npm i @meshdns/clientimport { MeshDNSClient } from "@meshdns/client";
const client = new MeshDNSClient("https://provengraph.trucore.xyz");
// Resolve a capability
const servers = await client.resolve("weather");
// Smart retry — skips recently-failed servers
const next = await client.resolveNext("weather");Configuration
All config via environment variables:
| Variable | Default | Description |
|---|---|---|
| MESHDNS_PORT | :8080 | Listen address |
| MESHDNS_DB | meshdns.db | SQLite database path |
| MESHDNS_PROBE_INTERVAL | 60s | Seconds between health probes |
| MESHDNS_PROBE_TIMEOUT | 5s | Per-probe HTTP timeout |
| MESHDNS_WORKERS | 4 | Health check goroutine pool size |
Security Model
Read paths are public
List, resolve, stats, and export require no authentication. Registry data is open by design — the platform-risk hedge.
Write paths require bearer tokens
Registration returns a write_key. Updates and deletes require X-Write-Key or Authorization: Bearer.
Soft-delete, not hard-delete
Delisting stops health probes but preserves the record and its history.
No PII beyond owner contact
The only quasi-personal field is owner_contact (email). Source IPs hashed at ingestion, never stored raw.
Full data export
GET /v0/export returns the complete registry as JSON. Your data is never locked in.
Single binary, zero external deps
Go stdlib + pure-Go SQLite. No Redis, no Postgres, no message queue.
FAQ
Why ProvenGraph instead of just MeshDNS?
MeshDNS is the Trust product line — the MCP server registry everyone already uses. ProvenGraph is the underlying provenance graph that powers Trust, and will power Knowledge and Memory when they launch. Same binary, same API, expanded scope. All 3,000+ existing servers, all existing API endpoints, all existing SDKs work unchanged.
Can I run my own instance?
Yes. A single Go binary — MIT-licensed, self-contained, zero external dependencies. Deploy behind Caddy or nginx with auto-TLS and you have a private provenance graph in minutes. The public instance at provengraph.trucore.xyz is a convenience, not a requirement.
What happens if ProvenGraph goes down?
Agents should cache the last resolve result and fall back to cached servers. GET /v0/export gives you the full registry as JSON — archive it periodically for disaster recovery.
How fast is resolution?
p99 under 100ms with 3,000+ registered servers on MVP hardware. Resolution is a simple indexed SQLite query — no network hops, no external services.
When will Knowledge and Memory launch?
Trust is live today with 3,000+ servers and the full trust-scoring engine. Knowledge and Memory are planned product lines on the same graph core. Register now and your server accumulates uptime and outcome history that transfers directly to future product lines.
Integrations & Next Steps
ATF (Agent Transaction Firewall) →
Policy-enforced guardrails for on-chain transactions on Solana. Layer ATF protection over ProvenGraph-discovered services.
GitHub Repo →
Source code, issue tracker, and discussions. MIT-licensed. One Go binary.
Live Registry →
See the public registry live — server counts, trust scores, uptime data.
LazyMCP →
On-the-fly MCP server discovery. Zero pre-configuration — resolve any of 3,000+ servers at runtime.