addrbookFor publishers
← The evidence ledger

Evidence row 222566

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint c85672c0-8ad5-4765-8d67-fbc346c1e8b5
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
566fd2737d1f16844e9677a003ef0564eb4a74b6f059ee7ce4ea0d5d03996bec
Leaf
0x4aa6f98c6b46d0d42d0f5e9fa7b766f94d3181e4f56e71c847abddd3f78999d5

What was observed

{
  "count": 8,
  "tools": [
    {
      "description": "Create a brand-new ANONYMOUS Impreza account — no e-mail, no KYC — and get an operating credential in ONE call. Use this when you have no account or token yet. Returns: account_id, api_key + api_secret (REST), a fresh mcp_token valid for 15 minutes (reconnect THIS MCP server with it as the Bearer to unlock the full toolset), its mcp_token_expires_at, renewal instructions, and a recovery_code shown once (save it for account recovery, including after MCP expiry). Renew with POST /v1/credentials authenticated by the returned REST key and secret, explicit scopes and ttl_seconds; the renewal example includes daily and monthly spending ceilings for manage. Omit manage to prevent purchases. After bootstrapping, reconnect with the mcp_token. Have a server already? impreza_add_server installs the agent on it, and the first external server is free (no plan, no credit). Otherwise fund the account in crypto with impreza_topup (BTC/XMR) before ordering a VPS.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "idempotency_key": {
            "description": "Optional unique string so a retried call does not create a duplicate account.",
            "type": "string"
          },
          "label": {
            "description": "Optional label for the account/credential (e.g. your agent name).",
            "type": "string"
          },
          "scopes": {
            "description": "Optional credential scopes. Omit for read, deploy and manage; provide a non-empty list to restrict the returned REST and MCP credentials.",
            "items": {
              "enum": [
                "read",
                "deploy",
                "manage"
              ],
              "type": "string"
            },
            "minItems": 1,
            "type": "array",
            "uniqueItems": true
          }
        },
        "type": "object"
      },
      "name": "impreza_bootstrap_account"
    },
    {
      "description": "Check domain availability + price before registering. Pass one domain or several comma-separated. Read-only.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "domain": {
            "description": "Domain(s) to check, e.g. \"example.com\" or \"a.com,b.net\".",
            "type": "string"
          }
        },
        "required": [
          "domain"
        ],
        "type": "object"
      },
      "name": "impreza_domain_check"
    },
    {
      "description": "List registration, renewal and transfer prices for the TLDs Impreza sells, in the account currency. Use this to compare prices and choose a TLD before impreza_domain_check or impreza_register_domain. Read-only.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {},
        "type": "object"
      },
      "name": "impreza_domain_pricing"
    },
    {
      "description": "List apps available in the Impreza curated catalog. Optional filters: category and search. For a custom app outside the catalog, use impreza_deploy_custom.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "category": {
            "description": "Optional category filter.",
            "type": "string"
          },
          "search": {
            "description": "Optional case-insensitive search term.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "impreza_list_apps"
    },
    {
      "description": "List the products a customer can order (VPS, Tor hosting, dedicated servers, …) with pricing in the account currency. Filter to server products with type \"server\". The VPS is one configurable product (configurable: true, priced from its smallest size) — get its locations, operating systems and sizes with impreza_vps_offer. Fixed plans return id, name, group and per-cycle price + setup fee — feed the id + a billing_cycle into impreza_order_vps.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "group": {
            "description": "Filter by product group name (substring), e.g. \"VPS\".",
            "type": "string"
          },
          "type": {
            "description": "Product type filter. Use \"server\" for VPS / dedicated plans.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "impreza_list_products"
    },
    {
      "description": "Search the Impreza documentation and get the actual paragraph back. Use this BEFORE guessing an argument, a field name or how a flow works — \"container_name 502\", \"onion\", \"how does topup work\", \"manifest routing\", \"rate limit\". Returns the matching sections with their heading trail and the relevant excerpt, so you answer from what the docs say instead of from a guess. A guessed argument costs a 400 and a round trip; this costs one call. Also use it when a customer asks how something works: the answer is written down and you can quote it.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "limit": {
            "description": "Maximum sections (1-10, default 3).",
            "type": "number"
          },
          "query": {
            "description": "Plain words or an exact term, e.g. \"container_name\", \"ready_for_deploy\", \"crypto payment\".",
            "type": "string"
          },
          "section": {
            "description": "Instead of searching, return one whole section by the heading a previous result gave you (e.g. \"Manifest-mode routing contract\"). Use when the excerpt was cut short.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "impreza_search_docs"
    },
    {
      "description": "Check a custom-deploy manifest BEFORE deploying it. Returns `errors` — the exact reasons the deploy endpoint would reject it, checked by the same validator, so no errors means it will not be turned away for a known reason — and `warnings`: footguns that deploy fine and then hurt (unpinned image, no restart policy, a published port bypassing the reverse proxy) plus the PRIVACY findings that matter on this product: third-party CDN/font/analytics origins, public DNS resolvers, hardcoded timezones, literal secrets, outbound mail. Every finding carries a `fix`. Call this before impreza_deploy_custom: one call here beats a deploy that reports \"running\" and 502s. Never include credentials in source text: secret detection cannot inspect arbitrary source or configuration. Enter runtime secrets through the owner portal link.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "manifest": {
            "description": "The full manifest object you would pass to impreza_deploy_custom, including runtime.compose_yaml and any network.reverse_proxy.routes.",
            "type": "object"
          }
        },
        "required": [
          "manifest"
        ],
        "type": "object"
      },
      "name": "impreza_validate_manifest"
    },
    {
      "description": "What a new VPS can be, and what it costs. Lists the locations (with each jurisdiction's note), the operating systems, the CPU/memory/disk ranges with the price per unit for every billing cycle, and the apps it can be born with, in the account currency. Pass a whole configuration (billing_cycle, location, os, cpu_cores, memory_gb, disk_gb) to get its exact price instead — what is due today, what it renews at, whether the balance covers it and whether that location has room right now. With app omitted the quote means '@agent', this MCP's default, the same as impreza_order_vps. Then order it with impreza_order_vps using the same values. Read-only.",
      "inputSchema": {
        "additionalProperties": false,
        "properties": {
          "app": {
            "description": "Optional: what it is born with — '@agent' (this MCP's default when omitted: the Impreza agent, which installs on first boot, not instantly); 'none' for a bare OS; '@agent-mcp', a '@panel-*' choice or a catalog app name. The customer can request the agent later via impreza_install_agent with confirmation.",
            "type": "string"
          },
          "billing_cycle": {
            "description": "Optional, to price a configuration: monthly, quarterly, semiannually, annually, biennially or triennially.",
            "type": "string"
          },
          "cpu_cores": {
            "description": "Optional: vCPU count, inside the range this tool lists.",
            "type": "number"
          },
          "disk_gb": {
            "description": "Optional: SSD disk in GB, inside the range this tool lists.",
            "type": "number"
          },
          "location": {
            "description": "Optional: a location id, slug or name from this tool, e.g. \"romania\".",
            "type": [
              "string",
              "number"
            ]
          },
          "memory_gb": {
            "description": "Optional: memory in GB, inside the range this tool lists.",
            "type": "number"
          },
          "os": {
            "description": "Optional: an operating system id, slug or name from this tool, e.g. \"ubuntu-24.04\".",
            "type": [
              "string",
              "number"
            ]
          }
        },
        "type": "object"
      },
      "name": "impreza_vps_offer"
    }
  ]
}

What the leaf hashes

{"body":"566fd2737d1f16844e9677a003ef0564eb4a74b6f059ee7ce4ea0d5d03996bec","id":222566,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793028133590734,"prev":null,"subject":"c85672c0-8ad5-4765-8d67-fbc346c1e8b5","subject_kind":"endpoint"}

Proof

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

  1. 0x4aa70f564eb440adfc12fc747f99b90f5adf3b5f6be998f801498f8bf599c028
  2. 0x97dd8709af9f0c9948ee6af309626e35efd3b4b086dd7888adb28cb6f615cc8b
  3. 0x3d30b38e131655eeb4ed39ea13222f2041d159c81262fca18a78fdee9235d0a8
  4. 0x2a6299210f775c9aa9eacfb1ac9399f483a39d83e6ebb6257fc3a6da309cc1c3
  5. 0x03b8b60611099497bdbd84ae2c8d802cea61ce32d2efc629dedaa56f4d865bc8
  6. 0xf2da0df90014523eb1502a32421eb37b6965b26f67494ef2a371da86f265362f
  7. 0xab02f6e4d4d5ff0069fc6210755673688d82ed944ec1340e595163aa6869cdb5
  8. 0x616675a0ba8eaf48c9c8783af26547b52ee13bfc55d2122a8538acaeb8ada576
  9. 0x3524309e6831e713c362548f4a446e06df06f23708410213dd9d60ebcd20a204
  10. 0xb9c44c195c511a74ed82b24db714e43b1a5a80029db27888948baa71082b81f9
  11. 0x401a323dfcffdb4ec1a75537dabf1f5c7403e6d01d2965f0f6eba13263cf7c64
  12. 0x67ae8949b58cb7b0dd4cfa0f9aeeee715e0ae6b87fef0ba46483bbf280004c53
  13. 0x1ffd24a0422348bb2305058cc138e276511e1c074bf8139af5b773941f0e5de2
  14. 0x88e326a39b26e2c125306c9d3805d14398ace088bba9a2a0aa376b811cfb201a
  15. 0x2be1e80e065dd6b2cc75a7142be22225acd144ac975d70bf24b4f01fd76dc497
  16. 0x2e6a32eb32761c210560e852405e2f865f958ddbe01027894f8b9c1b3433b9f0
  17. 0x9a83be955a206deb65b995adfd92c58fa31c95fbbf926bd199d300e70b08b26d
  18. 0x20704208aa6923d6b2450ef74ede87a6e0265d46447926038fe9506e9e154b2d
  19. 0x9b9ce5b74b9bab5121612ef6b64920a8d453cbf311096a423eef9702747e868a
Day root
0xf43e8dcc3d451a4788b26be904c55e8c4c0fa75c9666796c51db38d37e2c0df8
Chained
0x702d5ac508f08b0d1accf36af25822d8e5660367494edd17a642fb61e158a57a
Published
On Arc Testnet, block 69251483: 0x495162f8936e19f0039918feebe6c307f327cd6bf8c37219620b1970041fa9ae

How to check it · This row as JSON