Skip to main content
Glama

Broadcast Telemetry Snapshot to Mesh

mesh.broadcast

PURPOSE & BOUNDARIES: Sign a stored daily telemetry snapshot selected by date and distribute it to pinned mesh peers for cross-validation; arbitrary payloads or inbound peer sync publication are not supported. USAGE GUIDELINES: Use this instead of mesh.get_status only when sending a snapshot for peer acknowledgment. BEHAVIOR & CONSEQUENCES: Side-effecting and costs 250 sats via HTTP L402 without valid credentials; missing records, invalid agent events, unavailable peers, or failed quorum return errors.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
payloadYesUTC date selector for an existing telemetry record submitted for peer attestation, not a caller-supplied record object; for example, {"date":"2026-09-09"}.
agentEventNoOptional NIP-01 kind 20079 signature over JSON.stringify({networkId,date}) for this exact date selector. The signer must have a trusted mesh attestation. Example: a complete signed event with a matching date.
signalTypeYesEnforces the broadcast event schema; must be telemetry_snapshot to trigger peer validation, not an arbitrary signal. Constraints: allowed values: telemetry_snapshot. Example: "telemetry_snapshot".

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
dateYesUTC date of the distributed telemetry record. Constraints: format: date. Example: "2026-09-09".
networkIdYesMesh network identifier committed in peer attestations. Example: "bitcoin-stratigraphy-mainnet-v1".
merkleRootYesMerkle root of local and peer attestation event identifiers. Constraints: pattern: ^[0-9a-f]{64}$. Example: "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd".
signalTypeYesSignal distributed to configured peers. Constraints: allowed values: telemetry_snapshot. Example: "telemetry_snapshot".
agentPubkeyNoPresent only when an agent-signed session was verified and accepted by the peer mesh. Constraints: pattern: ^[0-9a-f]{64}$. Example: "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd".
snapshotDigestYesSHA-256 digest of the canonical mesh-encoded signed snapshot. Constraints: pattern: ^[0-9a-f]{64}$. Example: "abababababababababababababababababababababababababababababababab".
quorumThresholdYesRequired total attestation count, including this node. Constraints: minimum: 1. Example: 2.
peerAttestationsYesNumber of remote pinned peers whose signatures were verified; excludes this node. Constraints: minimum: 1. Example: 1.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / payload / properties / date / description
      Previous value: -"UTC calendar date of the existing record to distribute, formatted YYYY-MM-DD. Constraints: format: date; pattern: ^\\d{4}-\\d{2}-\\d{2}$. Example: \"2026-09-09\"."New value: +"Required UTC date of an existing indexed record (YYYY-MM-DD, e.g. '2026-09-09'); selects the stored snapshot signed for peer validation, not a caller-supplied payload. Constraints: format: date; pattern: ^\\d{4}-\\d{2}-\\d{2}$. Example: \"2026-09-09\"."
  2. Changed2 schema fields changed
    • addedInput schema / properties / agentEvent
      Added value: +{
      +  "additionalProperties": false,
      +  "description": "Optional NIP-01 kind 20079 signature over JSON.stringify({networkId,date}) for this exact date selector. The signer must have a trusted mesh attestation. Example: a complete signed event with a matching date.",
      +  "examples": [
      +    {
      +      "content": "{\"networkId\":\"bitcoin-stratigraphy-mainnet-v1\",\"date\":\"2026-09-09\"}",
      +      "created_at": 1790000000,
      +      "id": "abababababababababababababababababababababababababababababababab",
      +      "kind": 20079,
      +      "pubkey": "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",
      +      "sig": "efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef",
      +      "tags": []
      +    }
      +  ],
      +  "properties": {
      +    "content": {
      +      "description": "Exact JSON.stringify({networkId,date}) session binding. Example: \"{\\\"networkId\\\":\\\"bitcoin-stratigraphy-mainnet-v1\\\",\\\"date\\\":\\\"2026-09-09\\\"}\".",
      +      "example": "{\"networkId\":\"bitcoin-stratigraphy-mainnet-v1\",\"date\":\"2026-09-09\"}",
      +      "examples": [
      +        "{\"networkId\":\"bitcoin-stratigraphy-mainnet-v1\",\"date\":\"2026-09-09\"}"
      +      ],
      +      "type": "string"
      +    },
      +    "created_at": {
      +      "description": "Unix event timestamp in seconds. Example: 1790000000.",
      +      "example": 1790000000,
      +      "examples": [
      +        1790000000
      +      ],
      +      "type": "integer"
      +    },
      +    "id": {
      +      "description": "NIP-01 event hash. Constraints: pattern: ^[0-9a-f]{64}$. Example: \"abababababababababababababababababababababababababababababababab\".",
      +      "example": "abababababababababababababababababababababababababababababababab",
      +      "examples": [
      +        "abababababababababababababababababababababababababababababababab"
      +      ],
      +      "pattern": "^[0-9a-f]{64}$",
      +      "type": "string"
      +    },
      +    "kind": {
      +      "const": 20079,
      +      "description": "Agent session event kind. Example: 20079.",
      +      "example": 20079,
      +      "examples": [
      +        20079
      +      ],
      +      "type": "integer"
      +    },
      +    "pubkey": {
      +      "description": "Signing agent Nostr pubkey. Constraints: pattern: ^[0-9a-f]{64}$. Example: \"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd\".",
      +      "example": "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",
      +      "examples": [
      +        "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
      +      ],
      +      "pattern": "^[0-9a-f]{64}$",
      +      "type": "string"
      +    },
      +    "sig": {
      +      "description": "Schnorr signature over the NIP-01 event. Constraints: pattern: ^[0-9a-f]{128}$. Example: \"efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef\".",
      +      "example": "efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef",
      +      "examples": [
      +        "efefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef"
      +      ],
      +      "pattern": "^[0-9a-f]{128}$",
      +      "type": "string"
      +    },
      +    "tags": {
      +      "description": "NIP-01 string tag arrays. Example: [].",
      +      "examples": [
      +        []
      +      ],
      +      "items": {
      +        "description": "One NIP-01 tag. Example: [\"t\",\"session\"].",
      +        "examples": [
      +          [
      +            "t",
      +            "session"
      +          ]
      +        ],
      +        "items": {
      +          "description": "One string tag element. Example: \"session\".",
      +          "example": "session",
      +          "examples": [
      +            "session"
      +          ],
      +          "type": "string"
      +        },
      +        "type": "array"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "id",
      +    "pubkey",
      +    "sig",
      +    "kind",
      +    "created_at",
      +    "tags",
      +    "content"
      +  ],
      +  "type": "object"
      +}
    • addedOutput schema / properties / agentPubkey
      Added value: +{
      +  "description": "Present only when an agent-signed session was verified and accepted by the peer mesh. Constraints: pattern: ^[0-9a-f]{64}$. Example: \"cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd\".",
      +  "example": "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",
      +  "examples": [
      +    "cdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd"
      +  ],
      +  "pattern": "^[0-9a-f]{64}$",
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / payload / description
      Previous value: -"Select one existing UTC-dated telemetry record; for example, {\"date\":\"2026-09-09\"}."New value: +"UTC date selector for an existing telemetry record submitted for peer attestation, not a caller-supplied record object; for example, {\"date\":\"2026-09-09\"}."
    • changedInput schema / properties / signalType / description
      Previous value: -"Only telemetry_snapshot is supported; this sends one canonical record rather than accepting arbitrary signals. Constraints: allowed values: telemetry_snapshot. Example: \"telemetry_snapshot\"."New value: +"Enforces the broadcast event schema; must be telemetry_snapshot to trigger peer validation, not an arbitrary signal. Constraints: allowed values: telemetry_snapshot. Example: \"telemetry_snapshot\"."
  4. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already declare non-read-only, open-world, non-idempotent, non-destructive, but the description adds materially new behavior: an L402 payment cost of 250 sats when credentials are absent, and the concrete failure modes (missing records, invalid agent events, unavailable peers, failed quorum). This is enforcement/error semantics the agent cannot get from the annotations or schema.

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

Conciseness4/5

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

Front-loaded with purpose and organized under explicit PURPOSE / USAGE / BEHAVIOR labels, with no filler sentences. It is somewhat dense per line, but every clause carries scope, routing, or error information rather than restating the title.

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 side-effecting, costly, non-idempotent tool with nested objects and an output schema, the definition supplies the scope boundaries, the sibling routing, the payment precondition, and the error surface. Return values are covered by the output schema, so nothing an agent needs before invoking is missing.

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?

Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema cannot: it clarifies that payload is a date selector for an already-stored record rather than a caller-supplied payload object. It does not add format or validation detail beyond the schema, so it stops short of 5.

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?

States a specific verb chain (sign + distribute) on a specific resource (a stored daily telemetry snapshot selected by date) and names the target (pinned mesh peers for cross-validation). It also rules out the two nearest misreadings — arbitrary payloads and inbound peer sync publication — so it is distinguishable from siblings without opening the schema.

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?

Explicitly names the alternative (mesh.get_status) and the precise condition that selects this tool instead ('only when sending a snapshot for peer acknowledgment'). That is a when-to-use plus a when-not, leaving little to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources