addrbookFor publishers
← The evidence ledger

Evidence row 3694396

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint f1d2232c-8602-407c-8957-65571cb8250e
Recorded
Previous row
#3357942
Body SHA-256
b474307711a4bf26f1af0c7355c65fd7586b569b58d9b6242cbca207d36e5ccd
Leaf
0x8399f05da6f476bab1f0103b9ab98ad0f5139a00ae6e344cac79ad1df4ded759

What was observed

{
  "count": 7,
  "tools": [
    {
      "description": "Initiate a handshake on a contract on behalf of your delegating principal.\n\nRequires an API key with an active delegation (principal wallet registered via /api/v1/delegations).\nRecords the agent's intent to accept, reject, or request changes on the contract.\nThe principal must separately approve via wallet signature on the Reader Portal.\n\nArgs:\n  - contract_id (string, required): Contract ID (amb-YYYY-NNNN), SHA-256 hash, or UUID\n  - intent (string, required): \"accept\" | \"reject\" | \"request_changes\"\n  - message (string, optional): Note for the counterparty\n  - visibility_preference (string, optional): \"private\" | \"metadata_only\" | \"public\" | \"encrypted\"\n\nReturns: Handshake status and next steps for principal approval.\n\nLegibility: the handshake itself is auditable — delegation scope, agent identity, and principal approval are recorded alongside the contract hash.",
      "inputSchema": {
        "properties": {
          "contract_id": {
            "description": "Contract ID, SHA-256 hash, or UUID",
            "type": "string"
          },
          "intent": {
            "description": "Handshake intent",
            "enum": [
              "accept",
              "reject",
              "request_changes"
            ],
            "type": "string"
          },
          "message": {
            "description": "Optional note for counterparty",
            "type": "string"
          },
          "visibility_preference": {
            "description": "Optional visibility preference for negotiation",
            "enum": [
              "private",
              "metadata_only",
              "public",
              "encrypted"
            ],
            "type": "string"
          }
        },
        "required": [
          "contract_id",
          "intent"
        ],
        "type": "object"
      },
      "name": "ambr_agent_handshake"
    },
    {
      "description": "Check one payment against what an agreement allows. Advisory only: Ambr compares what\nyou report with the agreement's terms; it does not authorize, block or see payments, and in_scope\nis not an approval or a guarantee.\n\nTests the payment against the agreement's status, validity window, currency, per-transaction\nlimit, monthly limit, approved categories, enumerated actions and approval threshold. If the\nagreement was amended, the newest approved version is checked. Free: no credits are burned.\nAmbr does not hold funds or track spend, so the monthly limit is checked only when you pass\nperiod_spent. A rule the agreement sets no limit for comes back as not_evaluated, never as a pass.\nIf a rule has a limit but you did not send what it needs (category, action, currency, period_spent),\nthe verdict is \"incomplete\", not \"in_scope\". Send everything the agreement limits.\n\nAccess: a public contract is open to anyone; otherwise use the creator's API key or pass a share_token.\n\nArgs:\n  - contract_id (string, required): Contract ID (amb-YYYY-NNNN), SHA-256 hash, or UUID\n  - amount (number, required): payment amount, zero or more\n  - currency (string, optional): e.g. \"USD\"\n  - category (string, optional): spending category\n  - action (string, optional): the action the agent is taking\n  - period_spent (number, optional): already spent this month, to check the monthly limit\n  - share_token (string, optional): share token for a private contract\n\nReturns: verdict (\"in_scope\" | \"out_of_scope\" | \"incomplete\" | \"needs_approval\"), the per-rule checks, plain-language reasons, and the contract that was checked (contract_id, effective_contract_id, sha256_hash, reader_url).",
      "inputSchema": {
        "properties": {
          "action": {
            "description": "Action the agent is taking",
            "type": "string"
          },
          "amount": {
            "description": "Payment amount",
            "minimum": 0,
            "type": "number"
          },
          "category": {
            "description": "Spending category",
            "type": "string"
          },
          "contract_id": {
            "description": "Contract ID, SHA-256 hash, or UUID",
            "type": "string"
          },
          "currency": {
            "description": "Payment currency, e.g. USD",
            "type": "string"
          },
          "period_spent": {
            "description": "Already spent this month",
            "minimum": 0,
            "type": "number"
          },
          "share_token": {
            "description": "Share token for a private contract",
            "type": "string"
          }
        },
        "required": [
          "contract_id",
          "amount"
        ],
        "type": "object"
      },
      "name": "ambr_check_transaction"
    },
    {
      "description": "Generate a Ricardian Contract from a template.\n\nCreates a dual-format contract (human-readable legal text + machine-parsable JSON)\nusing AI, linked by SHA-256 hash. The contract is stored on Ambr and accessible\nvia the Reader Portal.\n\nRequires a valid API key (X-API-Key header on the HTTP request) with available credits.\nUse ambr_list_templates first to discover templates and their required parameters.\n\nArgs:\n  - template (string, required): Template slug (e.g. \"d1-general-auth\")\n  - parameters (object, required): Template-specific parameters matching the schema\n  - principal_declaration (object, required): { agent_id, principal_name, principal_type }\n  - principal_wallet (string, optional): the deploying party's own wallet. It must differ from the\n    counterparty wallet in parameters (same_wallet_both_parties otherwise); left out, the first\n    wallet that signs fills the principal side\n  - parent_contract_hash (string, optional): SHA-256 hash of a contract you created, which this one is\n    created under (its oversight threshold then applies). Not for amendments: propose those with\n    POST /api/v1/contracts/{id}/amend\n  - oversight_threshold_usd (number, optional): spending level above which work created under\n    this contract needs human approval. Children exceeding it halt at awaiting_principal_approval.\n\nReturns:\n  - contract_id: Unique ID (e.g. \"amb-2026-0042\")\n  - sha256_hash: SHA-256 hash for verification\n  - status: Contract status\n  - reader_url: URL to view in Reader Portal\n  - credits_remaining: Remaining API credits\n\nLegibility: Output is dual-format by construction and replayable to the original SHA-256 hash — the basis of Ambr's legibility guarantee.",
      "inputSchema": {
        "properties": {
          "oversight_threshold_usd": {
            "description": "Spending level above which work created UNDER this contract requires human approval. A child contract exceeding the parent threshold is held at awaiting_principal_approval until a human signs, and cannot be signed or activated before then (EU AI Act Art. 14).",
            "type": "number"
          },
          "parameters": {
            "additionalProperties": true,
            "description": "Template-specific parameters",
            "type": "object"
          },
          "parent_contract_hash": {
            "description": "SHA-256 hash of a contract you created, which this one is created under. Amendments are proposed with POST /api/v1/contracts/{id}/amend, not here.",
            "type": "string"
          },
          "principal_declaration": {
            "properties": {
              "agent_id": {
                "description": "Agent identifier",
                "type": "string"
              },
              "principal_name": {
                "description": "Name of the principal (person or company)",
                "type": "string"
              },
              "principal_type": {
                "description": "Type of principal",
                "enum": [
                  "company",
                  "individual"
                ],
                "type": "string"
              }
            },
            "required": [
              "agent_id",
              "principal_name",
              "principal_type"
            ],
            "type": "object"
          },
          "principal_wallet": {
            "description": "The deploying party's own wallet (0x…). Must differ from the counterparty wallet in parameters.",
            "type": "string"
          },
          "template": {
            "description": "Template slug from ambr_list_templates",
            "type": "string"
          }
        },
        "required": [
          "template",
          "parameters",
          "principal_declaration"
        ],
        "type": "object"
      },
      "name": "ambr_create_contract"
    },
    {
      "description": "Retrieve a contract by ID, SHA-256 hash, or UUID.\n\nWith a valid API key (contract creator): returns the full contract including\nhuman-readable text, machine-readable JSON, status, and principal declaration.\nWithout authentication: returns metadata only (contract_id, status, hash, dates).\n\nSupports three lookup formats:\n  - Contract ID: \"amb-2026-0042\"\n  - SHA-256 hash: 64-character hex string\n  - UUID: Standard UUID format\n\nArgs:\n  - id (string, required): Contract ID, SHA-256 hash, or UUID\n\nReturns: Full contract (if authorized) or metadata-only response.\n\nLegibility: retrieval preserves the dual-format pairing — prose and JSON always replay to the same SHA-256.",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "Contract ID (amb-YYYY-NNNN), SHA-256 hash, or UUID",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "ambr_get_contract"
    },
    {
      "description": "Check the status of a contract and its amendment chain.\n\nReturns the current status and any linked amendments (parent or child contracts).\nUseful for verifying if a contract is active, amended, or terminated.\n\nArgs:\n  - id (string, required): Contract ID, SHA-256 hash, or UUID\n\nReturns:\n  - contract_id, status, created_at\n  - amendment_type, parent_contract_hash\n  - amendments: Array of child contracts (if any)\n\nLegibility: amendments are bilateral and themselves dual-format — the chain stays legible from original through every revision.",
      "inputSchema": {
        "properties": {
          "id": {
            "description": "Contract ID (amb-YYYY-NNNN), SHA-256 hash, or UUID",
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "ambr_get_contract_status"
    },
    {
      "description": "List available contract templates on Ambr.\n\nReturns all active Ricardian Contract templates with their slugs, names, descriptions,\ncategories, parameter schemas, and pricing. Use this to discover which templates are\navailable before creating a contract with ambr_create_contract.\n\nNo authentication required.\n\nReturns: Array of template objects with slug, name, description, category,\nparameter_schema, price_cents, and version fields.\n\nLegibility: templates are the parameter schema for the dual-format contracts you create — starting here keeps your request conformant and your output defensible.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "ambr_list_templates"
    },
    {
      "description": "Verify a contract's SHA-256 hash to confirm document integrity.\n\nChecks whether the provided hash matches a contract stored on Ambr. Returns\nverification status, contract metadata, and Reader Portal URL if found.\n\nArgs:\n  - hash (string, required): SHA-256 hash (64-character hex string)\n\nReturns:\n  - verified: boolean\n  - contract_id: string (if found)\n  - status: string (if found)\n  - reader_url: string (if found)\n\nLegibility: verification is the point at which legibility becomes provable — matching hash means the prose a human reads and the JSON a machine parses are the same document that was originally signed.",
      "inputSchema": {
        "properties": {
          "hash": {
            "description": "SHA-256 hash to verify (64-character hex)",
            "type": "string"
          }
        },
        "required": [
          "hash"
        ],
        "type": "object"
      },
      "name": "ambr_verify_hash"
    }
  ]
}

What the leaf hashes

{"body":"b474307711a4bf26f1af0c7355c65fd7586b569b58d9b6242cbca207d36e5ccd","id":3694396,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793948354652928,"prev":3357942,"subject":"f1d2232c-8602-407c-8957-65571cb8250e","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (303443 rows).

  1. 0x8399e4ddfdd0799560c3a900b746ffb677cb84d1165befe5a7dffad13fc02463
  2. 0xb88cb663b7ec13edfb38b022a11550ea51285c76d953b40d17005c14b7f3db58
  3. 0xb9979ca2adffabd899ed6a527204cf1a11a36c81e0ae4422a41b282d3b081a06
  4. 0x21e76b58344ccf757023b798e847e667a5002095c9a74d1e4915c080b3e6b737
  5. 0x9d8c9b0f1960af89bd73d493b5f222709c5d43af9fa1bd0273e38378c3683dca
  6. 0x316ee541927c16be4c4868e4095455a33d3b1a1e774bfe45307febd0d3f447a5
  7. 0x3c52367cf2bcde08ed0770ee3890993622796b2c129c3dcf49afde39df3939ab
  8. 0xf46e567a32b80fc31aec42e373eef4f5aba2255219670196bbfd25cc48a742b9
  9. 0x2c7e9201128c28daefc5d653650b67b18199809666a69d327123ff5c51aad6b8
  10. 0x00e42ee62b957fb955a73a86213d134e489e4625bbbab6ba9e25e656ba44c313
  11. 0xbe0f05ba4a27600ae4f20a6431a6a2f373d7e44629f96f0ccc574b0ee741ce2f
  12. 0xd6c1915e797634e525bf1402ef3e901bdb03d544dcc28aae8ea8770dcc28659f
  13. 0x4209c39fa0cabd462a9fdb6f1aa333a43e88caba97ae99e1bfb6a491dcb250e9
  14. 0x1603f9c33c35ccefb72fc33655d873fa8e090c77e8690f54f34f291f55d977a8
  15. 0x4aa18de7ba70c1384dfa5e9fde2ce72817bb169f51aa0c98d197468e304aabd5
  16. 0xa020619e8f130eeb03f3c2beaba0422017bd8b95688ddf44db1c31cf0fd40a6a
  17. 0xe98c6c6b56a21a2fc4c1edfe2563812e690a6a4336d11aef772ac1799d1ee7ca
  18. 0xd422a75f6c3780ed53eca52b50bf40b8f17dc14cffb804142e44fc9f2672029d
  19. 0xc0d08d48601d1be90bcfc025e66bcaa0030120d688dd9c919b36c2c4446f4948
Day root
0xb30ccefe7182c6f767e1fcbfb5f64ffd649da831f665f65c5ff39cd40512284f
Chained
0xc383f7ef68d2914082484765aa09e42c12c59a74a096ae64127c562618c506d3
Published
On Arc Testnet, block 71111178: 0xfba13cb7ee4ada7f2fee3702a786a2201596be2ffea37dfc281ab4c8e9942fe1

How to check it · This row as JSON