Skip to main content
Glama

Signed record of which keys said they referred and completed an agent-made sale or job, and the order we saw it in. We witness; we hold no money

attribution_record
Idempotent

Record a signed event of an agent-made sale or job so the parties can settle a commission by checking a signed record. Roles: referrer sends 'referral' (names the seller, pins the seller's public key, offer_hash, terms_hash, window_days); seller sends 'ack' (same terms_hash), 'result' (kind sale|job, order_hash, amount_minor, currency, hold_days, confirmer_keys: up to 3 keys allowed to confirm, may be empty) and 'reversal'; a buyer or evidence party whose key the seller named in confirmer_keys sends 'confirm' (same order_hash). Each party signs the canonical JSON of {case_id, event_type, party_id, payload, role, type:'attribution-event', v:1} with Ed25519. Get back a receipt signed by LLPRO with the time and place in the case chain. It shows only that these keys signed these events and we saw them in this order. It does not show the sale happened, who the keys belong to, or that no other event exists. Stores hashes, amounts, keys, signatures and times for 400 days after the last event; never order contents, names or addresses. Free for now; a fee per verified result is planned, not charging.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "case_id": "<case_id>",
      "party_id": "<party_id>",
      "role": "<role>",
      "event_type": "<event_type>",
      "payload": "<payload>",
      "public_key": "<public_key>",
      "sig": "<sig>"
    },
    "name": "attribution_record"
  }
}

Input Schema

NameRequiredDescriptionDefault
sigYesbase64 Ed25519 signature over the event.
roleYes
case_idYesLong random id for the referral. Anyone who knows it can read the case.
payloadYesFields of the event type (see description). Amounts are whole minor units.
party_idYes
event_typeYes
public_keyYesEd25519 public key, 32 bytes, base64.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Added

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already say readOnlyHint=false, idempotentHint=true, destructiveHint=false, but the description adds substantial behavior: a signed LLPRO receipt is returned, data retention is 400 days after the last event, only hashes/amounts/keys/signatures/times are stored (never order contents, names or addresses), and pricing is free now with a per-verified-result fee planned. It also carefully disclaims what the record does not prove, which is exactly the kind of trust-boundary context an agent needs here.

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?

It is front-loaded with the purpose and every sentence carries information, including the retention and disclaimer clauses. However, it is a single dense paragraph of semicolon-chained parenthetical field lists, which makes the role/event rules harder to parse than they need to be; light structuring would help.

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 7-required-parameter mutation tool with a nested payload and no output schema, the description covers the event lifecycle, per-event payload contents, signing canonicalization, retention, privacy limits, and the contents of the returned receipt. Nothing an agent needs in order to construct a correct event appears to be missing.

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

Parameters5/5

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

With only 57% schema coverage and a free-form nested payload object, the description compensates fully: it enumerates the payload fields per event type (referral: seller name, seller public key, offer_hash, terms_hash, window_days; result: kind, order_hash, amount_minor, currency, hold_days, confirmer_keys up to 3; ack/confirm: matching hashes). It also explains that sig is an Ed25519 signature over the canonical JSON of {case_id, event_type, party_id, payload, role, type, v:1}, giving real meaning to 'sig' and 'public_key' beyond the schema text.

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 first sentence names a specific verb and resource: 'Record a signed event of an agent-made sale or job' and states the downstream purpose (settling a commission by checking a signed record). It also defines the scope boundary 'We witness; we hold no money.' It never names a sibling such as attribution_statement or witness_record, so the agent must infer the split from names alone, which keeps this below a 5.

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?

Usage is spelled out by role and event type: referrer sends 'referral', seller sends 'ack'/'result'/'reversal', and a buyer or named confirmer sends 'confirm'. That gives clear when-to-use context for each party and event. It stops short of explicit exclusions or routing to an alternative tool for read-only or non-attribution flows.

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