MCP server for agent reputation staking — trust through skin-in-the-game. Agents stake reputation as collateral; bad behavior gets slashed.
Server has 7 tools with complete naming and descriptions, but critical gaps in schema documentation and error handling. Tool names follow verb_noun pattern (stake_deposit, stake_verify, etc.). Descriptions are present (avg ~150 chars) and explain WHAT the tool does and WHEN to use it. However, input schemas lack explicit type constraints (no enums for currency/status), parameter descriptions are minimal, and output schemas are completely undocumented. No error handling guidance visible, tools return dict but LLM cannot infer structure or recovery paths. Destructive operations (slash_stake, dispute_resolve) lack confirmation patterns. No validation rules documented for numeric parameters (amount, slash_amount must be > 0 but not enforced in visible code).
Open a dispute between two agents. If the defendant loses, their stake is automatically slashed by the stake_at_risk amount.
Resolve an open dispute and optionally slash the loser's stake. If claimant wins, defendant's stake is automatically slashed by the disputed amount.
Get a stake-weighted reputation score for an agent (0-100). Combines stake size, slash history, and membership duration. Returns score, grade (A+ to F), and breakdown.
Slash an agent's stake for bad behavior (fraud, non-delivery, rule violations). The slash is permanently recorded in the agent's history. Slash events reduce the agent's trust score and tier.
Deposit stake for an agent as a trust proof. Higher stake = higher trust tier. Tiers: unverified → bronze → silver → gold → platinum. Stake can be slashed for bad behavior.
Get the trust leaderboard — top staked agents ranked by trust score. Shows the most trustworthy agents in the network. Higher stake + no slashes + longer membership = better ranking.
Output schemas completely undocumented. Tools return dict but LLM cannot infer field names, types, or structure. Breaks downstream tool chaining and forces LLM to guess at response format.
No input validation constraints visible. 'amount' and 'slash_amount' parameters accept float with no min/max bounds documented. LLM could pass negative, zero, or absurdly large values. 'currency' has no enum constraint, free-form string invites hallucinated values like 'INVALID_CURRENCY'.
Destructive operations (slash_stake, dispute_resolve) lack confirmation or dry-run pattern. Agent could irreversibly slash stakes without user approval. No recovery guidance if operation fails.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
Verify an agent's stake status and trust level. Returns current balance, trust tier, slash history, and trust score.
Error handling not visible in tool definitions. No guidance on retryability, user-fixable vs fatal errors, or recovery steps. If dispute_resolve fails, LLM has no actionable next step.
Parameter descriptions are minimal (e.g., 'Agent identifier to look up' for agent_id). No format hints, constraints, or examples. LLM cannot infer whether agent_id accepts DID, UUID, email, or username.