{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_kn7a4pv6ctx4","handle":"doorman","url":"https://wellknown.network/agents/doorman","links":{"self":"https://wellknown.network/agents/doorman/record.json","html":"https://wellknown.network/agents/doorman","markdown":"https://wellknown.network/agents/doorman/record.md","api":"https://wellknown.network/api/v1/agents/doorman","status":"https://wellknown.network/api/v1/agents/doorman/status","claim":"https://wellknown.network/agents/doorman/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/doorman/claim.json","badge":"https://wellknown.network/agents/doorman/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/doorman/history","tools":"https://wellknown.network/api/v1/agents/doorman/tools"},"ard":{"identifier":"urn:air:withdoorman.com:server:doorman","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Doorman","summary":"Spam, pitch and fraud screening for website forms. Sign up, wire forms, test and review.","description":"Spam, pitch and fraud screening for website forms. Sign up, wire forms, test and review.","publisher":{"name":"com.withdoorman","url":null},"homepage":"https://withdoorman.com","repository":null,"version":"0.1.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://withdoorman.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-30T20:53:41.447018Z","publishedAt":"2026-09-30T20:53:41.447018Z","registryName":"com.withdoorman/doorman"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"communication.notifications","name":"Notifications","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":1,"provenance":"derived"},{"slug":"productivity.crm","name":"CRM & Sales","confidence":0.992,"provenance":"derived"},{"slug":"automation.workflows","name":"Workflow Automation","confidence":0.962,"provenance":"derived"},{"slug":"code.review","name":"Code Review","confidence":0.885,"provenance":"derived"},{"slug":"commerce.payments","name":"Payments","confidence":0.525,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.51,"provenance":"derived"}],"categories":["analytics","automation","code","commerce","communication","dev","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 6h ago.","lastOkAt":"2026-10-10T02:30:39.681Z","lastProbedAt":"2026-10-10T02:30:39.681Z","statusComputedAt":"2026-10-10T02:31:57.072Z","reliability30d":{"probes":24,"successRate":1,"p50Ms":209,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":24,"ok":24,"authBoundaryOk":0,"serviceOk":24,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T02:30:39.681Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":177,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T19:27:20.725Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":363,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T13:30:56.827Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":186,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T06:22:48.176Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":180,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T00:25:42.704Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":459,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T17:26:31.546Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":173,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T10:22:52.969Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":175,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T03:24:19.094Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":190,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T20:30:00.781Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":326,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T13:26:50.458Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":175,"error":null,"detail":{"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"toolCount":25,"toolsHash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","serverName":"doorman","capabilities":["tools"],"serverVersion":"0.1.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"doorman_docs","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."},{"name":"doorman_signup","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. Cr"},{"name":"doorman_whoami","description":"Account, plan and this month's usage (checks used, and blocked_free: bots caught without reading, which don't count), and whether the account has accepted the d"},{"name":"doorman_list_forms","description":"List the account's forms with their action URLs and settings."},{"name":"doorman_create_form","description":"Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments)."},{"name":"doorman_update_form","description":"Change a form's settings: context, what's welcome, destinations, thresholds, watch mode, allow/block lists, per-type routing."},{"name":"doorman_get_install_snippet","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 wit"},{"name":"doorman_inbound_setup","description":"For a form that stays on Tally, Typeform, Jotform, Netlify Forms, Webflow or Framer: the form's inbound webhook URL, its signing secret and the exact clicks in "},{"name":"doorman_test_submission","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"},{"name":"doorman_send_test_delivery","description":"Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked."},{"name":"doorman_list_submissions","description":"Recent submissions with their verdicts. Use review=true for held ones waiting for a human. Attached files are listed under files (name, size, type, kept, and a "},{"name":"doorman_list_workspaces","description":"List the account's client workspaces (an agency's clients): each one's default destinations, form count, this month's numbers and its monthly report link."},{"name":"doorman_create_workspace","description":"Create a client workspace: one per client site an agency manages. Its email_to/slack_url/webhook_url are the defaults for every form in it whose own field is bl"},{"name":"doorman_update_workspace","description":"Change a client workspace: its name, site, default destinations, and its monthly report (report_monthly emails report_to on the 1st; addresses confirm once)."},{"name":"doorman_client_report","description":"A client workspace's monthly report: what reached them, what was kept out, the worst catches (redacted), per form. Returns the numbers and the shareable url (a "},{"name":"doorman_invite","description":"Invite a teammate (role 'member': every client, full access, no keys or billing) or a client (role 'client' with workspace_id: that workspace only, view-only). "},{"name":"doorman_label_submission","description":"Mark a submission real (delivers it if it was held or dropped) or spam. A label that disagrees with Doorman becomes one of the few examples the form's next chec"},{"name":"doorman_audit_rows","description":"Audit old submissions: the user has a CSV export of past form submissions (Webflow, Framer, HubSpot, Formspree, Netlify, Typeform or any tool). Parse it yoursel"},{"name":"doorman_alerts","description":"Open problems on the user's forms: deliveries failing, a flood, a form gone quiet (probably broken). Call it when the user asks why leads stopped arriving or a "},{"name":"doorman_hubspot_status","description":"For a demo form that is a HubSpot form: whether Doorman's HubSpot app is enabled, which HubSpot accounts are connected, which HubSpot forms Doorman screens (and"},{"name":"doorman_hubspot_map_forms","description":"Choose which HubSpot forms Doorman screens on a connected HubSpot account. Replaces the current list. form_id \"new\" makes a lead form named like the HubSpot for"},{"name":"doorman_create_hook","description":"POST every delivered, held or dropped verdict to a URL you run (one JSON POST per submission, the same object as GET /v1/submissions/{id} plus event; not signed"},{"name":"doorman_list_hooks","description":"The account's hook subscriptions (made with doorman_create_hook, the API or the Doorman Zapier app): url, event, form, failures and whether each is paused."},{"name":"doorman_delete_hook","description":"Delete a hook subscription by id (hk_...). A Zap that used it receives nothing until it is turned off and on again."},{"name":"doorman_contact_support","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, nev"}],"package":null,"toolSurface":{"id":"ts_4yxhbnhqcwgx","endpointId":"ep_ubdw67wbgt4h","hash":"0d07811a9956c52c993353c1f29fd596e3ef26f5c551436312693d7f8cabc762","toolCount":25,"serverName":"doorman","serverVersion":"0.1.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-06T17:28:13.596Z","lastSeenAt":"2026-10-10T02:30:39.682Z","observations":13,"toolNames":["doorman_docs","doorman_signup","doorman_whoami","doorman_list_forms","doorman_create_form","doorman_update_form","doorman_get_install_snippet","doorman_inbound_setup","doorman_test_submission","doorman_send_test_delivery","doorman_list_submissions","doorman_list_workspaces","doorman_create_workspace","doorman_update_workspace","doorman_client_report","doorman_invite","doorman_label_submission","doorman_audit_rows","doorman_alerts","doorman_hubspot_status","doorman_hubspot_map_forms","doorman_create_hook","doorman_list_hooks","doorman_delete_hook","doorman_contact_support"],"distinctSurfaces":4},"endpointFacts":[{"id":"ep_ubdw67wbgt4h","url":"https://withdoorman.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-08T10:22:52.989Z","auth":{"observedAt":"2026-10-08T10:22:53.167Z","authRequired":false,"scheme":null,"resourceMetadata":null,"authorizationServer":null,"conformance":{"dpop":false,"rfc8414":false,"rfc9728":false,"pkceS256":false,"clientIdMetadataDocument":false,"dynamicClientRegistration":false}},"tls":{"observedAt":"2026-10-08T10:22:53.188Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"withdoorman.com","issuer":{"commonName":"YE1","organization":"Let's Encrypt"},"validFrom":"2026-09-29T19:17:44.000Z","validTo":"2026-12-28T19:17:43.000Z","daysToExpiry":79,"sanCount":1,"fingerprint256":"E2:A2:1E:B3:E6:C1:76:57:12:1B:0C:94:D7:13:3E:36:F2:63:A1:FE:9C:84:DE:07:A5:DD:5C:34:AC:BE:0A:59"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"com.withdoorman/doorman","url":"https://registry.modelcontextprotocol.io/v0/servers/com.withdoorman%2Fdoorman","firstSeenAt":"2026-10-03T18:21:53.717Z","fetchedAt":"2026-10-09T13:21:40.451Z","normalizedAt":"2026-10-09T13:21:40.451Z"}]},"firstSeenAt":"2026-10-03T18:21:53.717Z","updatedAt":"2026-10-10T02:32:59.159Z"}