Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,556Letters: 14Defects: 1,331counted just now
teppi

Server definition

Hash
sha256:a5b039ae3867ce2db9d424ddf4420bc5d38b66218f1e1d14fc6e9f6f2c3c6544
What it is
What a remote MCP server returned when asked what it offers: 12 tools

The blob, as servednamed by its sha256

{ "instructions": "Doorman screens a website's form submissions (contact, demo, checkout, comments) for sales pitches, bots and fraud, and forwards only the real ones. Act on a check's `action` (or the boolean `deliver`), never on `route`: route is Doorman's opinion, action is what to do (they differ in watch mode). To set it up for a new user: doorman_signup (ask for their email). If they already have an account and this connection has no key, ask them for one (https://withdoorman.com/app#/settings) and pass it as api_key; don't sign up again. Then, put the returned action URL in the project's form, set a destination, then doorman_test_submission to show it working. Docs: https://withdoorman.com/llms.txt", "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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", "outputSchema": null }, { "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 forwards everything and only tags would-be drops. 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", "outputSchema": null }, { "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", "outputSchema": null }, { "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 everything, tag would-be drops (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", "outputSchema": null }, { "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", "outputSchema": null } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:a5b039ae3867ce2db9d424ddf4420bc5d38b66218f1e1d14fc6e9f6f2c3c6544 | sha256sum