Skip to main content
Glama

JIDEC: Bitcoin-anchored public verification ledger (NENRIN)

Server Details

Cite and independently verify Bitcoin-anchored construction-estimate audit records.

Ownership verified
Status
Healthy
Uptime
100.0% over 41 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
ogasurfproject-jpg/horizon-shield
GitHub Stars
1
Server Listing
HORIZON SHIELD KIRA

TDQS

A4.2/5.0

Scored across 4 tools

Disambiguation5/5

Each tool has a distinct function: citing/verifying a specific record, explaining the verification process, listing anchored paths, and re-observing for drift. No overlap; clear boundaries for an agent to select the right tool.

Naming Consistency4/5

All tools follow a consistent pattern with the 'jidec_' prefix, and use consistent verb_noun structure (cite, how_to_verify, list_paths, replay). Minor deviation: 'how_to_verify' is a noun phrase rather than a verb_verb, but it's still clear and follows the prefix pattern.

Tool Count4/5

Four tools is reasonable for a focused verification ledger server. It covers the primary read/verify operations without being overly sparse or heavy, though a couple of additional tools could round it out (e.g., checking anchoring details).

Completeness4/5

The server covers core workflows: verifying individual citations, explaining verification steps, listing anchored paths, and checking for drift. It lacks explicit tools for creating or submitting new citations, but for a verification-focused server that may be outside its scope. Minor gaps such as not listing individual entries without paths, but the surface is functionally complete for its stated purpose.

Available Tools

4 tools
jidec_citeCite and independently verify a JIDEC recordA
Read-onlyIdempotent
Inspect

Resolve and INDEPENDENTLY verify any JIDEC citation. Accepts 'jidec:path:', 'jidec:entry:', a bare 64-hex id, or a ledger URL. Fetches the record's exact bytes, recomputes SHA-256 locally, and confirms it equals the cited id. Returns integrity, Bitcoin anchoring status, the parsed record (verification path, claim, or v0 spec entry), and an explicit statement of what the proof does and does not cover. No trust in HORIZON SHIELD is required to accept the result.

ParametersJSON Schema
NameRequiredDescriptionDefault
citationYesjidec:path:<sha> | jidec:entry:<n> | 64-hex | ledger URL

Output Schema

ParametersJSON Schema
NameRequiredDescription
limitsNo
lookupYesok = the ledger was read and the record exists. absent = the ledger was read and there is no such record. A read that FAILED never appears here: it comes back as a tool error (isError: true), so a consumer can never mistake this server's own failure for a statement about the ledger's contents.
bitcoinNo
citationNo
integrityYesThe whole point: claimed vs recomputed. match:false is an integrity FAILURE, which is a finding, not an error.
trust_noteNo
record_kindNo
resolved_entryNo

TDQS

A4.5/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate read-only, open-world, and idempotent behavior, and the description adds valuable, non-obvious details: fetching exact bytes, recomputing SHA-256 locally, returning integrity and Bitcoin anchoring status, and providing an explicit statement of proof coverage. It also conveys the key trust property that no confidence in HORIZON SHIELD is required, which is beyond any annotation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is dense but every sentence contributes something: the inputs, the cryptographic verification process, the output contents, and the trust guarantee. There is no fluff or redundancy, and it is front-loaded with the primary purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single parameter, clear input syntax, and an output schema, the description is still thorough: it explains the response categories by mentioning integrity, anchoring status, parsed record, and coverage statement. It also addresses verification implications and scope of trust, making the tool complete enough for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents the citation parameter and lists the accepted formats. The description repeats those formats without adding much beyond making the syntax clearer by using 'bare 64-hex' and 'ledger URL'. This does not materially expand on the schema's coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource: resolve and verify a JIDEC citation, and it explicitly states what that verification entails. It is easy to distinguish from sibling tools like jidec_list_paths or jidec_replay because it emphasizes integrity checking and independent proof rather than enumeration or replay.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context for when to use the tool: whenever you have a JIDEC citation of any allowed form and need independent verification. It does not explicitly name alternatives or state when not to use it, but the accepted formats and verification purpose effectively convey the intended use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jidec_how_to_verifyGet the executable verification recipeA
Read-onlyIdempotent
Inspect

Return the step-by-step recipe for verifying a JIDEC record WITHOUT trusting HORIZON SHIELD: which bytes to fetch, which hashes to recompute, which OpenTimestamps proof to check, which algorithm commit to check out, and what must match. Use this when you want to confirm the result yourself rather than repeat an assertion.

ParametersJSON Schema
NameRequiredDescriptionDefault
citationYesjidec:path:<sha> | jidec:entry:<n> | 64-hex | ledger URL

Output Schema

ParametersJSON Schema
NameRequiredDescription
lookupYesok = the ledger was read and the record exists. absent = the ledger was read and there is no such record. A read that FAILED never appears here: it comes back as a tool error (isError: true), so a consumer can never mistake this server's own failure for a statement about the ledger's contents.
recipeNo
path_idNo
citationNo
resolved_entryNo

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses that the tool returns a recipe (a set of steps) and lists the elements it covers. It does not explicitly mention potential errors or edge cases, but given the readOnlyHint and destructiveHint=false annotations, it's clear there are no side effects. The description adds value by clarifying the 'without trusting HORIZON SHIELD' aspect, which is a behavioral trait not covered by 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/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is succinct—two sentences—and well-structured. The first sentence states the purpose and lists the included components, while the second gives the usage condition. No redundant words or vague phrases; every sentence earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (no output schema, single input parameter) and the read-only nature, the description provides enough context for a user to understand what they will receive (a recipe) and how to invoke it. It doesn't detail the exact format or structure of the returned recipe, but listing the components (bytes, hashes, proof, commit) gives a clear idea. It could mention that the recipe is meant to be followed manually, but that is implied by 'step-by-step'.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'citation' is well-described in the schema with examples of valid formats ('jidec:path:<sha> | jidec:entry:<n> | 64-hex | ledger URL'), which covers all likely use cases. The tool description does not add further details, but the schema description is already sufficient for understanding what to pass. Since schema coverage is 100%, the baseline is high, and no additional semantics are needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: returning a step-by-step verification recipe for a JIDEC record without trusting HORIZON SHIELD. It lists specific components (bytes, hashes, proof, commit) and uses a strong verb 'Return'. It also differentiates from sibling tools (cite, list_paths, replay) by focusing on the how-to-verify aspect.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use the tool: 'Use this when you want to confirm the result yourself rather than repeat an assertion.' This gives a clear condition for usage and implicitly indicates when not to use it (when trusting the existing assertion is acceptable). It also aligns with the idempotent and read-only annotations, suggesting it is safe to call whenever verification is needed.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jidec_list_pathsList anchored verification pathsA
Read-onlyIdempotent
Inspect

List the anchored JIDEC verification paths (most recent first), with purpose, verdict and Bitcoin anchoring status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
countYesHow many anchored paths the ledger returned. 0 means the ledger answered and holds none. It never means the ledger could not be read, that is an error.
pathsNo
lookupYesok = the ledger was read and the record exists. absent = the ledger was read and there is no such record. A read that FAILED never appears here: it comes back as a tool error (isError: true), so a consumer can never mistake this server's own failure for a statement about the ledger's contents.

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds the ordering behavior ('most recent first') and the included fields, which is useful but not extensive. 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/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single sentence that front-loads the action and resource, then packs the key output details (ordering, fields, anchoring status) with no wasted words. Every element earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter read-only list tool with a rich output schema and safety annotations, the description is nearly complete. It could have explicitly mentioned that no arguments are required, but the empty input schema already makes that obvious. The output schema covers return values, so the description's job is done.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the schema provides no parameter semantics to clarify. The description compensates by explaining what the returned list contains (purpose, verdict, Bitcoin anchoring status) and its ordering, which is the only meaningful semantic context an agent needs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('anchored JIDEC verification paths'), and adds ordering ('most recent first') plus the fields shown ('purpose, verdict and Bitcoin anchoring status'). It is clear enough to distinguish from siblings like jidec_cite or jidec_replay, though it does not explicitly name a sibling alternative.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies a read-only listing use case, and the sibling names suggest alternatives for citing, verifying, or replaying. However, it does not explicitly state when to use this tool versus those alternatives, leaving the agent to infer the boundary.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

jidec_replayRe-observe an anchored path and report driftA
Read-onlyIdempotent
Inspect

Re-observe an anchored JIDEC verification path against the live system right now and report drift. Returns MATCH (the live system still matches what was anchored) or DRIFT (it changed), node by node. Nodes that cannot be re-observed server-side are reported as deferred, never counted as drift.

ParametersJSON Schema
NameRequiredDescriptionDefault
citationYesjidec:path:<sha> | jidec:entry:<n> | ledger URL

Output Schema

ParametersJSON Schema
NameRequiredDescription
lookupYesok = the ledger was read and the record exists. absent = the ledger was read and there is no such record. A read that FAILED never appears here: it comes back as a tool error (isError: true), so a consumer can never mistake this server's own failure for a statement about the ledger's contents.
verdictNoMATCH or DRIFT. Nodes that could not be re-observed are deferred, never counted as drift.

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate a safe, read-only, idempotent operation. The description adds valuable behavioral context: it returns MATCH or DRIFT node by node, and nodes that cannot be re-observed are deferred rather than counted as drift. This goes beyond basic safety and explains edge-case handling.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences: first states the primary action, second explains the return values (MATCH/DRIFT), and third clarifies the deferred behavior. No filler or redundancy; it is well-structured and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with a single parameter and rich annotations, the description is fully adequate. It explains the core operation, result interpretation, and an important edge case (deferred nodes). The presence of an output schema further reduces the need to detail return formats.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema provides 100% coverage for the single 'citation' parameter with clear format examples. The description does not add new parameter-level detail beyond referring to 'anchored path', so the baseline score of 3 applies as the schema handles the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: 'Re-observe an anchored JIDEC verification path against the live system right now and report drift.' It specifies the resource (anchored JIDEC verification path) and the action (re-observe and report), and distinguishes itself from siblings by focusing on drift detection with MATCH/DRIFT output.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage context: this tool is for checking current alignment of an anchored path via re-observation. It does not explicitly name alternatives or exclusions relative to sibling tools, but the focus on drift reporting implies when to use it. A 4 reflects clear context without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool update
    • Changedjidec_list_paths1 field changed
      • changedOutput schema / properties / count / description
        Previous value: -"How many anchored paths the ledger returned. 0 means the ledger answered and holds none. It never means the ledger could not be read — that is an error."New value: +"How many anchored paths the ledger returned. 0 means the ledger answered and holds none. It never means the ledger could not be read, that is an error."
  2. 4 tool updates
    • Changedjidec_cite1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "bitcoin": {
        +      "properties": {
        +        "status": {
        +          "type": "string"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "citation": {
        +      "type": "string"
        +    },
        +    "integrity": {
        +      "description": "The whole point: claimed vs recomputed. match:false is an integrity FAILURE, which is a finding, not an error.",
        +      "properties": {
        +        "claimed_sha256": {
        +          "type": "string"
        +        },
        +        "match": {
        +          "type": "boolean"
        +        },
        +        "recomputed_sha256": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "match"
        +      ],
        +      "type": "object"
        +    },
        +    "limits": {
        +      "type": "string"
        +    },
        +    "lookup": {
        +      "description": "ok = the ledger was read and the record exists. absent = the ledger was read and there is no such record. A read that FAILED never appears here: it comes back as a tool error (isError: true), so a consumer can never mistake this server's own failure for a statement about the ledger's contents.",
        +      "enum": [
        +        "ok",
        +        "absent"
        +      ],
        +      "type": "string"
        +    },
        +    "record_kind": {
        +      "type": "string"
        +    },
        +    "resolved_entry": {
        +      "type": [
        +        "number",
        +        "string",
        +        "null"
        +      ]
        +    },
        +    "trust_note": {
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "lookup",
        +    "integrity"
        +  ],
        +  "type": "object"
        +}
    • Changedjidec_how_to_verify1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "citation": {
        +      "type": "string"
        +    },
        +    "lookup": {
        +      "description": "ok = the ledger was read and the record exists. absent = the ledger was read and there is no such record. A read that FAILED never appears here: it comes back as a tool error (isError: true), so a consumer can never mistake this server's own failure for a statement about the ledger's contents.",
        +      "enum": [
        +        "ok",
        +        "absent"
        +      ],
        +      "type": "string"
        +    },
        +    "path_id": {
        +      "type": "string"
        +    },
        +    "recipe": {
        +      "type": [
        +        "object",
        +        "string"
        +      ]
        +    },
        +    "resolved_entry": {
        +      "type": [
        +        "number",
        +        "string",
        +        "null"
        +      ]
        +    }
        +  },
        +  "required": [
        +    "lookup"
        +  ],
        +  "type": "object"
        +}
    • Changedjidec_list_paths1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "count": {
        +      "description": "How many anchored paths the ledger returned. 0 means the ledger answered and holds none. It never means the ledger could not be read — that is an error.",
        +      "type": "number"
        +    },
        +    "lookup": {
        +      "description": "ok = the ledger was read and the record exists. absent = the ledger was read and there is no such record. A read that FAILED never appears here: it comes back as a tool error (isError: true), so a consumer can never mistake this server's own failure for a statement about the ledger's contents.",
        +      "enum": [
        +        "ok",
        +        "absent"
        +      ],
        +      "type": "string"
        +    },
        +    "paths": {
        +      "items": {
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "lookup",
        +    "count"
        +  ],
        +  "type": "object"
        +}
    • Changedjidec_replay1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "additionalProperties": true,
        +  "properties": {
        +    "lookup": {
        +      "description": "ok = the ledger was read and the record exists. absent = the ledger was read and there is no such record. A read that FAILED never appears here: it comes back as a tool error (isError: true), so a consumer can never mistake this server's own failure for a statement about the ledger's contents.",
        +      "enum": [
        +        "ok",
        +        "absent"
        +      ],
        +      "type": "string"
        +    },
        +    "verdict": {
        +      "description": "MATCH or DRIFT. Nodes that could not be re-observed are deferred, never counted as drift.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "lookup"
        +  ],
        +  "type": "object"
        +}
  3. 4 tool updates
    • First observedjidec_cite
    • First observedjidec_how_to_verify
    • First observedjidec_list_paths
    • First observedjidec_replay

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Enables revision-bound source audits with exact article fingerprinting, claim-to-source mapping, quotation verification, and immutable JSON evidence reports for prepublication review.
    9
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    Provides cryptographic truth infrastructure for AI agents, enabling them to seal content with SHA-256 and Ed25519, verify receipts, anchor them to Bitcoin via OpenTimestamps, generate citations, and audit chains of receipts.
    5
    26 npm
    1
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Cryptographically anchored, tamper-evident evidence receipts for AI agents — verified run receipts, existence-at-time proofs, and cited answers from an anchored public record. Remote MCP with proof-gated settlement; attests existence and integrity, never truth.
    -
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.