addrbookFor publishers
← The evidence ledger

Evidence row 563325

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 0e260351-8366-4902-aff1-6bd33326b7ff
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
ea9567962b79aebeef593590d2b4f05c35f00e7f354e5db826553e4be91071cd
Leaf
0x599eacdba02eea731ea2375a60b7dcf932327c9d2193f765ea759347d09208fd

What was observed

{
  "count": 12,
  "tools": [
    {
      "description": "Stuck, or something isn't working? Send the problem straight to Doorman's founder, with the error you hit. Your account context (plan, forms, recent errors, never keys) is attached, and the reply goes to the account email. Use it instead of guessing at a fix.",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          },
          "category": {
            "enum": [
              "setup",
              "bug",
              "billing",
              "question",
              "other"
            ],
            "type": "string"
          },
          "error": {
            "description": "The exact error text, if any",
            "type": "string"
          },
          "message": {
            "description": "What you were trying to do and what happened",
            "type": "string"
          }
        },
        "required": [
          "message"
        ],
        "type": "object"
      },
      "name": "doorman_contact_support"
    },
    {
      "description": "Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments).",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          },
          "email_to": {
            "description": "Comma-separated emails to forward real submissions to",
            "type": "string"
          },
          "kind": {
            "description": "lead = contact/demo/quote/sales form (default)",
            "enum": [
              "lead",
              "signup",
              "checkout",
              "comment"
            ],
            "type": "string"
          },
          "name": {
            "description": "Form name",
            "type": "string"
          },
          "redirect_url": {
            "description": "Where to send the visitor after submitting (default: a Doorman thank-you page)",
            "type": "string"
          },
          "site_context": {
            "description": "What the business sells and to whom",
            "type": "string"
          },
          "slack_url": {
            "description": "Slack incoming webhook URL",
            "type": "string"
          },
          "webhook_url": {
            "description": "HTTPS URL that receives a signed JSON POST per real submission",
            "type": "string"
          }
        },
        "required": [
          "name"
        ],
        "type": "object"
      },
      "name": "doorman_create_form"
    },
    {
      "description": "Read how Doorman works and how to integrate it (the same text as /llms.txt). Call this first if you haven't used Doorman before.",
      "inputSchema": {
        "properties": {},
        "type": "object"
      },
      "name": "doorman_docs"
    },
    {
      "description": "Get ready-to-paste integration code for a form on a given platform. Use 'html' for static sites, 'react' for SPA client components, and 'fetch' (plain fetch with timeout and fallback: Workers, Node, Next, Deno), 'nextjs', 'express', 'python', 'ruby' or 'elixir' when the form already posts to the project's own backend.",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          },
          "form_id": {
            "description": "f_...",
            "type": "string"
          },
          "platform": {
            "enum": [
              "html",
              "ajax",
              "react",
              "fetch",
              "nextjs",
              "express",
              "curl",
              "python",
              "ruby",
              "elixir",
              "webflow",
              "framer",
              "wordpress"
            ],
            "type": "string"
          }
        },
        "required": [
          "form_id",
          "platform"
        ],
        "type": "object"
      },
      "name": "doorman_get_install_snippet"
    },
    {
      "description": "Mark a submission real (delivers it if it was held or dropped) or spam.",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          },
          "label": {
            "enum": [
              "real",
              "spam"
            ],
            "type": "string"
          },
          "submission_id": {
            "description": "sub_...",
            "type": "string"
          }
        },
        "required": [
          "submission_id",
          "label"
        ],
        "type": "object"
      },
      "name": "doorman_label_submission"
    },
    {
      "description": "List the account's forms with their action URLs and settings.",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "doorman_list_forms"
    },
    {
      "description": "Recent submissions with their verdicts. Use review=true for held ones waiting for a human.",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          },
          "form_id": {
            "description": "Optional f_...",
            "type": "string"
          },
          "limit": {
            "type": "number"
          },
          "review": {
            "type": "boolean"
          },
          "route": {
            "enum": [
              "deliver",
              "hold",
              "drop"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "doorman_list_submissions"
    },
    {
      "description": "Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked.",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          },
          "form_id": {
            "description": "f_...",
            "type": "string"
          }
        },
        "required": [
          "form_id"
        ],
        "type": "object"
      },
      "name": "doorman_send_test_delivery"
    },
    {
      "description": "Create a Doorman account for the user with a first form and an API key. Ask the user for their email first. They'll get an email to set a dashboard password. Creates the account's first form too and returns its id and action URL, plus the api_key (store it as DOORMAN_KEY in the project's local secrets file, never commit it). Only for new users: if they already have an account, ask for a key instead. Until the user clicks the confirmation link in that email, nothing is emailed to them (100 checks; Slack and webhooks work).",
      "inputSchema": {
        "properties": {
          "email": {
            "description": "The user's email. Real submissions are forwarded here by default.",
            "type": "string"
          },
          "form_name": {
            "description": "Optional name, e.g. 'Contact form' or 'Demo request'",
            "type": "string"
          },
          "mode": {
            "description": "watch delivers would-be drops, tagged; holds still follow forward_holds. Recommended for a new lead form: switch to enforce after a week or two of verdicts look right. Default enforce.",
            "enum": [
              "watch",
              "enforce"
            ],
            "type": "string"
          },
          "site_context": {
            "description": "One or two sentences: what the business sells and to whom. Doorman compares every submission against this. Read the project's README/landing copy to write it.",
            "type": "string"
          },
          "site_url": {
            "description": "The website the form is on, e.g. acme.com",
            "type": "string"
          }
        },
        "required": [
          "email",
          "site_url",
          "site_context"
        ],
        "type": "object"
      },
      "name": "doorman_signup"
    },
    {
      "description": "Judge a sample message against a form's settings. Free, not forwarded, not counted. Use it to show the user Doorman working after setup (try one genuine enquiry and one sales pitch).",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          },
          "email": {
            "description": "Optional sender email",
            "type": "string"
          },
          "form_id": {
            "description": "f_...",
            "type": "string"
          },
          "message": {
            "description": "The message text",
            "type": "string"
          }
        },
        "required": [
          "form_id",
          "message"
        ],
        "type": "object"
      },
      "name": "doorman_test_submission"
    },
    {
      "description": "Change a form's settings: context, destinations, thresholds, watch mode, allow/block lists.",
      "inputSchema": {
        "properties": {
          "allow_list": {
            "description": "Emails or domains always delivered without judging",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          },
          "block_list": {
            "description": "Emails or domains always dropped",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "deliver_at": {
            "description": "Deliver when P(real) >= this (default 0.8)",
            "type": "number"
          },
          "drop_below": {
            "description": "Drop when P(real) < this (default 0.2)",
            "type": "number"
          },
          "email_to": {
            "description": "Comma-separated emails",
            "type": "string"
          },
          "form_id": {
            "description": "f_...",
            "type": "string"
          },
          "forward_holds": {
            "description": "Forward held submissions, flagged (default true)",
            "type": "boolean"
          },
          "kind": {
            "enum": [
              "lead",
              "signup",
              "checkout",
              "comment"
            ],
            "type": "string"
          },
          "mode": {
            "description": "watch = deliver would-be drops, tagged (a safe way to start)",
            "enum": [
              "enforce",
              "watch"
            ],
            "type": "string"
          },
          "name": {
            "description": "Form name",
            "type": "string"
          },
          "redirect_url": {
            "description": "Redirect after submit",
            "type": "string"
          },
          "site_context": {
            "description": "What the business sells and to whom",
            "type": "string"
          },
          "slack_url": {
            "description": "Slack incoming webhook URL",
            "type": "string"
          },
          "webhook_url": {
            "description": "HTTPS webhook URL",
            "type": "string"
          }
        },
        "required": [
          "form_id"
        ],
        "type": "object"
      },
      "name": "doorman_update_form"
    },
    {
      "description": "Account, plan and this month's usage.",
      "inputSchema": {
        "properties": {
          "api_key": {
            "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header.",
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "doorman_whoami"
    }
  ]
}

What the leaf hashes

{"body":"ea9567962b79aebeef593590d2b4f05c35f00e7f354e5db826553e4be91071cd","id":563325,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793137679489394,"prev":null,"subject":"0e260351-8366-4902-aff1-6bd33326b7ff","subject_kind":"endpoint"}

Proof

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

  1. 0x599eb3d138ed60f39ce54dbb2a06da2f8d53d75a7eb1e907903f2927759b47ab
  2. 0x56e83c3225ed3cdddce985a8b5d763c3558b26fb037e31d59ca62304d165a96d
  3. 0x191041fe4577cd6bd6f76ef01bb1f2d64e83116eb45584c332e6244eedeb88a3
  4. 0xe7dd92f2ff08c631d3dcc721b1f9936faa33bf86b55a2cd248a10de604c54ef3
  5. 0x0eac4fa9a97620733538f3b8d431423b1660b9014890f2127638a30592815843
  6. 0x6d5e6f98eea4401c5874bc89ee42881ffca12de8b61219f8428123bce38aaca9
  7. 0xef41d53e15a74c127c23b06c82206fb5c3c43be98eae9173d69422ddb40a1deb
  8. 0x3c404c9515c498d0fd0a6ff519179eac152dc2e681b1192927821ffd5cddc977
  9. 0x0cdf301908f1c103b652e3c1f6757460153aaebab620af58e5730972301a7dc5
  10. 0xcd8fc222358beab19aa2727c9bdbde68de6a3a2cc6fd1b297011037afcd0f0f4
  11. 0x5a36e7e6d5cf42671ca353a841c8b4f2fd6b364ce4d06ca7fb1164d94f39f815
  12. 0x6f9c2e17fd073d07da42da76c8ca2f200b30027f0378b0d9628f8fac6f48cd16
  13. 0x5b3213451efe1e2950dd287afaede00cc8a45dfd9721ef9b3d698bde1eeb9909
  14. 0x674bc1173d39130be4d15bbfc7327f8a8af87eb251e54c8d4409c7e840b9e538
  15. 0xb78ea6a255dd06e2f402a1a733bca392fa6243920bcba95e8b80bdfc6ce5f553
  16. 0x3ed50f053eca72dfd3a9d45a11935240bfe691e57835c367ddebe2cbc49efe9d
  17. 0x0e01aa9525097570a6edaf32bfc959de57bf5c24317cf10c0716affea85ca60d
  18. 0xa20d48798a34aba12eb9c7297722982d910f06c148f5e27ac59307422964a585
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON