
AgentTrust
io.github.raditotevPublished by GitHub account raditotevv0.1.5Updated Oct 24, 2026
MCP Server for Agent Reputation & Trust Scoring
Overview
MCP server for AI agent reputation: check trust scores, report interactions, file disputes, issue signed attestations and detect Sybil behavior.
- What you can do
- Look up and compare agents: check trust scores, batch-check, rank agents side by side, search by score or capability, read profiles and score breakdowns.
- Register agents and manage identity: register, generate signed tokens, link to an external auth identity, check status.
- Report and confirm interaction outcomes, list pending confirmations and read interaction history.
- File and resolve disputes over reported outcomes.
- Issue, list and verify portable signed trust attestations.
- Run Sybil checks for ring reporting, burst registration and suspicious delegation chains.
- When to use it
- Useful when an assistant acts as or deals with autonomous agents and needs to judge a counterparty before transacting, record how an interaction went, or present verifiable proof of its own reputation to third parties.
- Requirements
- Runs as a local Python process (Python 3.13+, uv) over stdio, or can be reached as a hosted HTTP endpoint. Self-hosting needs PostgreSQL 16 with TimescaleDB, Redis 7, and a signing key file; environment variables DATABASE_URL, REDIS_URL and SIGNING_KEY_PATH are required, plus optional AUTH_PROVIDER and AGENTAUTH_ACCESS_TOKEN. Reporting, disputes and attestations need an access token.
Installation
In SourceWeft
- Open AgentTrust in the dashboard and add it to a workspace.
- Enable the server for the chats that should use its tools.
Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.
Other MCP clients
Follow the launch instructions in the repository.
README
AgentTrust
Reputation and trust scoring service for AI agents, exposed entirely as an MCP server. Evaluate counterparties before transacting, report interaction outcomes, issue portable trust certificates, and detect Sybil attacks.
Table of Contents
- Quickstart
- Connecting to the MCP Server
- Authentication
- Tools Reference
- Resources
- Prompts
- Score Types
- Rate Limits
- Self-Hosting
Quickstart
1. Connect to the MCP server
Add AgentTrust to your MCP client configuration:
Or for local development via stdio:
2. Register your agent
Response:
Store the private_key_hex immediately -- it is shown only once.
3. Generate an access token
Response:
4. Check trust before transacting
5. Report interaction outcomes
Both parties should report for mutual confirmation (higher credibility).
Connecting to the MCP Server
AgentTrust supports two MCP transports:
Authentication
AgentTrust supports two authentication methods. Many tools work without authentication, but reporting interactions, filing disputes, and issuing attestations require it.
AgentAuth (preferred)
Obtain a bearer token from AgentAuth and pass it as access_token. This provides the full set of scopes:
Standalone (Ed25519)
Register with register_agent and generate tokens with generate_agent_token. Provides trust.read and trust.report scopes. You can upgrade to AgentAuth later via link_agentauth.
No authentication
Tools marked as "Auth: none" work without any token. Useful for checking trust scores and verifying attestations.
Tools Reference
Discovery
discover
Auth: none
Returns the complete service catalog: available tools, auth methods, score types, interaction types, rate limits, and a quickstart guide. Call this first when connecting.
Agent Management
register_agent
Auth: none
Register a new agent in the trust network. Three paths:
- AgentAuth -- pass
access_tokenfrom AgentAuth - Standalone -- pass your own
public_key_hex(hex-encoded Ed25519 public key) - Auto-generate -- omit both to get a keypair generated for you
generate_agent_token
Auth: none (uses private key directly)
Generate a signed JWT access token for standalone agents.
whoami
Auth: required
Check your identity, current trust scores, and scopes.
get_agent_profile
Auth: none (authenticated calls get extra detail)
Retrieve the public profile for any agent.
search_agents
Auth: none
Search agents by trust score, capabilities, and interaction count.
link_agentauth
Auth: required (AgentAuth token)
Link an existing standalone profile to an AgentAuth identity, merging interaction history. The canonical agent_id after linking is always the original standalone UUID — the AgentAuth UUID is stored as agentauth_id in metadata.
Response:
On dry_run=true: returns would_link_agent_id, agentauth_id, current_scores, interaction_count, capabilities, and message — no changes are persisted.
Error codes: invalid_input, proof_sig_invalid, proof_expired, key_not_found, already_linked, authentication_failed.
verify_link_proof
Auth: required (AgentAuth token)
Preflight check: validate a link_agentauth proof without writing to the database. Runs the same validation steps (token authenticity, key lookup, proof signature, expiry, already-linked check) but never persists any changes. Use this before calling link_agentauth to confirm everything is in order.
Response:
agent_status
Auth: required
One-call status snapshot combining identity, trust scores, pending confirmation count, and active attestations. Useful as a dashboard or health check.
Response:
Trust Scoring
check_trust
Auth: none (authenticated calls with trust.read scope get factor_breakdown)
Primary tool for evaluating an agent before a transaction. Returns a score (0.0-1.0), confidence (0.0-1.0), interaction count, and a plain-language explanation.
Response:
A score of 0.5 with confidence 0.05 means "unknown", not "average". Low confidence means few interactions -- treat with caution.
check_trust_batch
Auth: none
Check trust scores for up to 20 agents in a single call.
compare_agents
Auth: none
Rank up to 10 agents side-by-side by score.
get_score_breakdown
Auth: required (trust.read scope)
Detailed Bayesian factors behind a score: raw score, dispute penalty, alpha/beta parameters, interaction weights.
Interaction Reporting
report_interaction
Auth: required (trust.report scope)
Report the outcome of an interaction with another agent. Both parties should report for mutual confirmation -- one-sided reports carry less weight.
Response:
confirm_interaction
Auth: required (trust.report scope)
Confirm a counterparty's interaction report. Creates mutual confirmation, which increases the report's weight in score computation.
list_pending_confirmations
Auth: required
List interactions reported by other agents that await your confirmation.
get_interaction_history
Auth: required
Retrieve interaction history for an agent.
Disputes
file_dispute
Auth: required (trust.dispute.file scope)
Challenge an interaction outcome you believe was reported incorrectly.
Limits: max 10 disputes per day, max 30 open disputes at once. Agents with 5+ dismissed disputes are blocked from filing new ones (24h cooldown after each dismissal).
resolve_dispute
Auth: required (trust.dispute.resolve scope, arbitrators only)
Resolve an open dispute. Requires AgentAuth permission check.
Attestations
issue_attestation
Auth: required (trust.attest.issue scope)
Issue a portable, Ed25519-signed JWT capturing an agent's current trust scores. The agent can present this to third parties who verify the signature without querying AgentTrust.
Response:
list_my_attestations
Auth: required
List your active (non-expired, non-revoked) attestations. Each entry includes the attestation ID, validity window, seconds remaining, and the score snapshot captured at issuance.
Response:
verify_attestation
Auth: none
Verify an attestation JWT's signature, expiry, and revocation status. No authentication needed -- this is designed for third-party verification.
Response:
Sybil Detection
sybil_check
Auth: none
Detect potential Sybil behavior: ring reporting (mutual positive feedback loops), burst registration (many agents in a short window), and suspicious delegation chains.
Response:
When signals are detected:
Resources
MCP resources provide read-only access to trust data via URI templates:
Prompts
Pre-built prompt templates for common evaluation workflows:
Score Types
Scores use a Bayesian Beta distribution with exponential time decay (90-day half-life) and dispute penalties. Scores range from 0.0 to 1.0, paired with a confidence value:
- High score + high confidence = trustworthy, well-established agent
- High score + low confidence = looks good but too few interactions to be sure
- 0.5 score + near-zero confidence = unknown agent (prior), not "average"
Rate Limits
Requests are rate-limited per agent per minute, with higher limits for more trusted agents:
Additional limits on specific operations:
- Interaction reports: max 10 per pair per day, 1 per type per pair per hour
- Disputes filed: max 10 per day, max 30 open at once
- Dispute targets: max 10 open disputes per target
Self-Hosting
Prerequisites
- Python 3.13+
- PostgreSQL 16 with the TimescaleDB extension —
interactionsis a hypertable, so plain PostgreSQL is not enough - Redis 7
- uv package manager
Setup
Environment Variables
Create a .env file:
Running
Docker
Run the development stack with Docker Compose:
This starts PostgreSQL (TimescaleDB, port 5433), Redis (port 6380), the MCP server, and the background worker.
Metrics and dashboards are not part of this stack. The server exposes Prometheus metrics at /metrics; point your own Prometheus and Grafana at it, or see docs/deployment.md for how the hosted instance uses a shared observability stack.
Tests
Source: README.md at commit 18ce010
Tools
0Version history
1- v0.1.5LatestSep 16, 2026
Score
40% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 days25 pts
Keep the endpoint answering the MCP handshake; SourceWeft probes it every 30 days.
- Auth declared10 pts
Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.
- Tools listed15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Declare a license in the repository or the registry entry.