addrbookFor publishers
← The evidence ledger

Evidence row 770845

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint b6e25ca4-d7cd-4568-9a54-a158e172d873
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
41cd1808fc762d53e9e839c98a379391ae7988719e08f689a4594b86f66e787b
Leaf
0xeea224227ff035dd67a5a9b3479ab79e99854c0e07555a4d681e529330e12657

What was observed

{
  "count": 8,
  "tools": [
    {
      "description": "Add a customer's hostname (e.g. careers.acme.com or acme.com) to the app this API key belongs to. Idempotent: adding a hostname the app already has returns the existing domain. The domain starts in pending_dns; the customer must then add the DNS record in status_explained / get_dns_instructions, or open the connect_url to be guided through it. Apexly checks DNS every 15 seconds and issues the TLS certificate itself. With a test key (sk_test_…) the domain is a sandbox one that goes active by itself in about 30 seconds. Never invent a hostname: ask the user which one.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "apex_redirect": {
            "description": "Apex domains only: also serve www.<apex> and redirect it",
            "enum": [
              "none",
              "www"
            ],
            "type": "string"
          },
          "hostname": {
            "description": "The customer's hostname, no scheme or path, e.g. careers.acme.com",
            "maxLength": 1024,
            "type": "string"
          },
          "metadata": {
            "additionalProperties": {},
            "description": "Any JSON object up to 4 KB, e.g. {\"customer\": \"Acme\", \"tenant_id\": \"42\"}",
            "propertyNames": {
              "type": "string"
            },
            "type": "object"
          },
          "origin": {
            "description": "Per-domain origin override (paid plans); omit to use the app origin",
            "maxLength": 2048,
            "type": "string"
          }
        },
        "required": [
          "hostname"
        ],
        "type": "object"
      },
      "name": "create_domain"
    },
    {
      "description": "Remove a domain: it stops being served within 5 seconds and its certificate is dropped. Irreversible (adding the hostname again starts over with a new record). Only call it after the user explicitly confirmed deleting this hostname, and pass confirm: true.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "confirm": {
            "description": "Must be true: the user confirmed deleting this domain",
            "type": "boolean"
          },
          "id": {
            "description": "The domain id (dom_…), from create_domain or list_domains",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "delete_domain"
    },
    {
      "description": "Why a domain is not live and what to change (the domain doctor, same as GET /v1/domains/{id}/diagnose): runs every check live (the record at 1.1.1.1, 8.8.8.8 and the domain's own nameservers, other A and stale AAAA records, the Cloudflare proxy, CAA, the certificate, the origin, the www pair). Each check is pass, fail, warn or skip with what we saw (detail) and what to change (fix); blocking_check_id is the one to fix first. status_explained says why the domain is in its status. Use it when a domain stays in pending_dns, dns_broken or cert_failed, then relay the fix to the customer. Results are reused for 20 seconds.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "id": {
            "description": "The domain id (dom_…), from create_domain or list_domains",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "diagnose_domain"
    },
    {
      "description": "The link to send the customer (the domain owner): a page branded with the app that detects their DNS provider, shows the exact record with copy buttons and tells them when the domain is live. Prefer it when the customer is not technical. It is safe to share with the customer, not publicly.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "id": {
            "description": "The domain id (dom_…), from create_domain or list_domains",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "get_connect_url"
    },
    {
      "description": "The exact DNS record(s) the customer must add for this domain, plus step-by-step instructions for their DNS provider (detected from the domain's nameservers: GoDaddy, Cloudflare, Namecheap, Route 53 and ~40 more; generic steps otherwise). Record names are relative to the registrable domain (\"careers\" in acme.com, \"@\" for the apex).",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "id": {
            "description": "The domain id (dom_…), from create_domain or list_domains",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "get_dns_instructions"
    },
    {
      "description": "Current state of one domain: status (pending_dns → verifying → issuing → active; or dns_broken, cert_failed, held, expired), the DNS record the customer must add, the connect_url and the certificate. status_explained says in one sentence why it is in that status and what to do next. Use it to poll after create_domain or verify_domain.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "id": {
            "description": "The domain id (dom_…), from create_domain or list_domains",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "get_domain"
    },
    {
      "description": "The app's domains, newest first, one page at a time. Pass next_cursor back as cursor for the next page (null means there are no more). Filter by status or by hostname prefix to find a domain id.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "cursor": {
            "description": "next_cursor of the previous page",
            "maxLength": 200,
            "type": "string"
          },
          "hostname": {
            "description": "Hostname prefix, e.g. careers.",
            "maxLength": 253,
            "type": "string"
          },
          "limit": {
            "default": 20,
            "maximum": 100,
            "minimum": 1,
            "type": "integer"
          },
          "status": {
            "enum": [
              "pending_dns",
              "verifying",
              "issuing",
              "active",
              "dns_broken",
              "cert_failed",
              "expired",
              "held",
              "deleted"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "list_domains"
    },
    {
      "description": "Queue a DNS check right away instead of waiting for the next scheduled one; use it after the customer says they added the record. On cert_failed it retries the certificate. At most one per 15 seconds per domain. The check runs in the background: call get_domain a few seconds later for the result.",
      "inputSchema": {
        "$schema": "http://json-schema.org/draft-07/schema#",
        "properties": {
          "id": {
            "description": "The domain id (dom_…), from create_domain or list_domains",
            "maxLength": 64,
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "id"
        ],
        "type": "object"
      },
      "name": "verify_domain"
    }
  ]
}

What the leaf hashes

{"body":"41cd1808fc762d53e9e839c98a379391ae7988719e08f689a4594b86f66e787b","id":770845,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793187288024456,"prev":null,"subject":"b6e25ca4-d7cd-4568-9a54-a158e172d873","subject_kind":"endpoint"}

Proof

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

  1. 0xeea1d3dff19cb7fa2527abf34062856e14e8920d9986d33126746d3da6a732b6
  2. 0xc41bde4299bc3b13e28055dcbc081f818b226c609f39c570d6483d98b4feb791
  3. 0xb122994314ce4c65ff103d7ccd955ccdfd646237024a6f0c8a5c88984e0b97ea
  4. 0x0c60c3f30b88e7adbdbd8bfaf6cb507f62560579261c22bdcd8ff574d348d144
  5. 0x6036af328a7bb3f4546f856b26c7d38ab5c48142f6e2386b6842fae70e71db2c
  6. 0xe6f79c2efa9bc343f96f3d79e673a6778a3d6bb28c7b00200fa6b5d38060f8e8
  7. 0x510fe8793722e01300c7b2259e842f6d3c2dbccacc8a680b348b4bf809ad03e2
  8. 0xe1876a493d3c73a2d3248e56339fe787d52c2ff2e58a2d67ef1a863e585e6b99
  9. 0x53d4b544325db5efd92d7fbc10744b67cefdee5265dd146345c6d6dcd963d0ad
  10. 0x77239d6ec515fde3d658f9ff05ebe02cdbd94895cee1568d732f5d3fb0f9fd40
  11. 0xe2b694cd210ad43c1eba274309908cc1d47fbf23f118e26484faac76b0f862e9
  12. 0x20179cde505821813c2d635df6658dedf9c5dac9aa60296802366454e3b0de3b
  13. 0x7c7680a693651307890c3f1e37c63eee03c1c637cfe36c210695030d5edb22bc
  14. 0xfb2274fa79452c1e494276a3ee3eadb7c66f76a08a80f6923416f3d591053e02
  15. 0x33bfb51cb957137510d8a1502cd50241c4c0982e2741290f3b8f2d2b1e69de70
  16. 0xef2ebd45f2cfd41dc3eb213cc4cc144c46b7e9ead2de0b9f627463bad16e3ec8
  17. 0x67e9ff3e48c515135fcf3df2675aa4996d35d4a328ce41588ee1a7d93347c823
  18. 0xe6cfe00ae4e02bc12327e45b5f3334ea5850ba3bcc8e3101d30a8189856a95af
Day root
0x2c19037464cc4c493624565f01775d6446fc78eaa118fc6865bfe2bfca9ff78e
Chained
0xd1d7dee8322ceff8f4c8d83aa1fe4a4466825c2af1c97dbde3d35db61234f7be
Published
On Arc Testnet, block 69584042: 0x8bae2b1d097834c8b458513862d70d29ee807e98dc2e863b27250131c15b35ae

How to check it · This row as JSON