@ledgerproof/mcp-server
Server Quality Checklist
Latest release: v0.1.1
- Disambiguation5/5
Each tool has a clearly distinct purpose: hashing content, issuing a receipt, checking Bitcoin anchoring, and verifying a receipt. There is no overlap in functionality.
Naming Consistency5/5All tool names follow the consistent pattern 'ledgerproof_verb_noun' using snake_case. Verbs and nouns are clear and match the tool's action (hash_artifact, issue_receipt, check_anchor, verify_receipt).
Tool Count5/5Four tools is well-scoped for the domain of managing AI-generated content receipts. Each tool covers a necessary step in the workflow without unnecessary extras.
Completeness5/5The tool set covers the full lifecycle: hash content (hash_artifact), issue receipt (issue_receipt), check anchoring status (check_anchor), and verify receipt (verify_receipt). No obvious gaps for the intended purpose.
Average 4.7/5 across 4 of 4 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 3 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI is passing
This repository is licensed under Apache 2.0.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate idempotent and read-only behavior. The description adds important behavioral context: returns anchor_status, txid, block info, and proof when anchored; notes that anchoring is batched daily so polling may take time. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, well-structured. The first sentence states the core purpose, the second lists return fields, and the third provides usage guidance. No unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple check tool with one input and no output schema, the description covers input, output fields, and polling behavior. It explains what to expect and gives temporal context (daily batching). Complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema has 100% description coverage for the single parameter 'sequence', explaining it is returned by ledgerproof_issue_receipt. The description mentions 'receipt's sequence' but adds no new semantics beyond referencing the same concept.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: checking whether a receipt's daily Merkle root is anchored to Bitcoin. It uses specific verbs ('check') and identifies the resource ('anchor status of receipt'). Distinguishes from sibling tools by focusing on the check operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit guidance on when to use the tool: after issuance, and recommends polling until status changes. Mentions daily batching, implying patience. Does not explicitly list when not to use or alternative tools, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral traits beyond annotations: the anchor_status is always 'pending' first due to asynchronous Bitcoin anchoring, and it instructs users to poll ledgerproof_check_anchor. It also notes that the artifact is hashed locally and never uploaded. There is no contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single paragraph of six sentences, front-loaded with the core action. Every sentence provides essential information (purpose, parameter rules, async behavior, caution). No redundant or extraneous content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 16 parameters, 3 required, no output schema, the description covers the return fields (sequence, entry_hash, verify_url, anchor_status) and explains the asynchronous nature. It references the SDK and provides guidance on polling. This is sufficient for the complexity of the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds meaning beyond schema by explaining the mutual exclusivity of artifact and precomputed_sha256, the context for artifact_bytes, and the difference in usage over Streamable HTTP. These clarifications elevate the score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool produces an EU AI Act Article 50 transparency record and registers it with LedgerProof. It uses specific verbs ('Produce... and register') and distinguishes itself from siblings like ledgerproof_check_anchor and ledgerproof_verify_receipt by focusing on issuance.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use the tool (issuing a receipt) and provides conditional guidance such as 'Provide EXACTLY ONE of artifact or precomputed_sha256' and 'Required over Streamable HTTP'. It also cautions 'Do not issue on loose triggers.' However, it does not explicitly state when not to use this tool versus alternatives, though the sibling tools are distinct enough.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses detailed behavioral traits beyond annotations: the §7 algorithm steps, key loading from environment or API, optional Bitcoin check, and dependency on the SDK's scitt module. Annotations indicate readOnlyHint and openWorldHint, and the description adds substantial context without contradiction.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose but well-structured: it opens with the core purpose, then explains modes, return values, and key loading. Every sentence adds value, but some details (e.g., 'SCITT verification requires the SDK's scitt module') could be more concise. Still, it is effective and not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (5 parameters, no output schema, multi-mode behavior), the description is remarkably complete. It explains return fields for transparent_statement, key resolution, optional parameters (txid, issuer_public_key_hex), and dependencies, leaving little ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters5/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Every parameter has a detailed description in the input schema, and the tool description adds further context (e.g., 'looks up the chain entry from the public verifier' for sequence, 'base64/base64url or hex string' for transparent_statement). Schema coverage is 100%, and the description enriches understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Verify a LedgerProof receipt.' It distinguishes between two operational modes (sequence vs transparent_statement) and explains what each does. It is distinct from sibling tools (check_anchor, hash_artifact, issue_receipt) by focusing on verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit guidance on when to use each mode: provide sequence for API-based chain entry lookup, or transparent_statement for local verification with the §7 algorithm. It does not explicitly exclude alternatives but gives enough context for an agent to decide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior5/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds context beyond annotations: local operation, privacy benefit, and that hash is returned instead of raw payload.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three concise sentences front-loading the core function, then usage and context with no wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple hashing tool: explains purpose, privacy, integration requirement, and the single parameter is fully documented.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema already describes payload parameter well; description adds that hash is SHA-256 hex and its integration with issue_receipt, providing extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it computes SHA-256 hash of a payload, distinguishing it from sibling tools that handle receipts and anchors.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly describes when to use (to obtain precomputed hash for ledgerproof_issue_receipt) and why it's required over Streamable HTTP.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/vsdawkins-creator/ledgerproof-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server