Doorman

Spam, pitch and fraud screening for website forms. Sign up, wire forms, test and review.

사용해야 할까요

품질 및 안전성

A
설명 품질
96%
스키마 완전성
89%
이름 품질
80%
오염 위험
100%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (1)

  • LOWTool 'doorman_label_submission' description lacks action verbdoorman_label_submission에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~1,947토큰 (도구 정의)
~1.4 KB일반적인 응답 크기
중간 정도의 주의 영향 (128k 컨텍스트의 1.52%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "doorman": {
      "url": "https://withdoorman.com/mcp"
    }
  }
}

원격 엔드포인트

https://withdoorman.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (12)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢doorman_docs

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.

입력 스키마

{
  "type": "object",
  "properties": {}
}
🟡doorman_signup(email, site_url, site_context, form_name, mode)

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).

입력 스키마

{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "description": "The user's email. Real submissions are forwarded here by default."
    },
    "site_url": {
      "type": "string",
      "description": "The website the form is on, e.g. acme.com"
    },
    "site_context": {
      "type": "string",
      "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."
    },
    "form_name": {
      "type": "string",
      "description": "Optional name, e.g. 'Contact form' or 'Demo request'"
    },
    "mode": {
      "type": "string",
      "enum": [
        "watch",
        "enforce"
      ],
      "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."
    }
  },
  "required": [
    "email",
    "site_url",
    "site_context"
  ]
}
🟢doorman_whoami(api_key)

Account, plan and this month's usage.

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    }
  }
}
🟢doorman_list_forms(api_key)

List the account's forms with their action URLs and settings.

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    }
  }
}
🟡doorman_create_form(api_key, name, kind, site_context, email_to, ...)

Create another form endpoint (one per distinct form on the site: contact, demo request, checkout, comments).

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    },
    "name": {
      "type": "string",
      "description": "Form name"
    },
    "kind": {
      "type": "string",
      "enum": [
        "lead",
        "signup",
        "checkout",
        "comment"
      ],
      "description": "lead = contact/demo/quote/sales form (default)"
    },
    "site_context": {
      "type": "string",
      "description": "What the business sells and to whom"
    },
    "email_to": {
      "type": "string",
      "description": "Comma-separated emails to forward real submissions to"
    },
    "webhook_url": {
      "type": "string",
      "description": "HTTPS URL that receives a signed JSON POST per real submission"
    },
    "slack_url": {
      "type": "string",
      "description": "Slack incoming webhook URL"
    },
    "redirect_url": {
      "type": "string",
      "description": "Where to send the visitor after submitting (default: a Doorman thank-you page)"
    }
  },
  "required": [
    "name"
  ]
}
🟡doorman_update_form(api_key, form_id, name, kind, site_context, ...)

Change a form's settings: context, destinations, thresholds, watch mode, allow/block lists.

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    },
    "form_id": {
      "type": "string",
      "description": "f_..."
    },
    "name": {
      "type": "string",
      "description": "Form name"
    },
    "kind": {
      "type": "string",
      "enum": [
        "lead",
        "signup",
        "checkout",
        "comment"
      ]
    },
    "site_context": {
      "type": "string",
      "description": "What the business sells and to whom"
    },
    "mode": {
      "type": "string",
      "enum": [
        "enforce",
        "watch"
      ],
      "description": "watch = deliver everything, tag would-be drops (a safe way to start)"
    },
    "deliver_at": {
      "type": "number",
      "description": "Deliver when P(real) >= this (default 0.8)"
    },
    "drop_below": {
      "type": "number",
      "description": "Drop when P(real) < this (default 0.2)"
    },
    "forward_holds": {
      "type": "boolean",
      "description": "Forward held submissions, flagged (default true)"
    },
    "email_to": {
      "type": "string",
      "description": "Comma-separated emails"
    },
    "webhook_url": {
      "type": "string",
      "description": "HTTPS webhook URL"
    },
    "slack_url": {
      "type": "string",
      "description": "Slack incoming webhook URL"
    },
    "redirect_url": {
      "type": "string",
      "description": "Redirect after submit"
    },
    "allow_list": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Emails or domains always delivered without judging"
    },
    "block_list": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Emails or domains always dropped"
    }
  },
  "required": [
    "form_id"
  ]
}
🟢doorman_get_install_snippet(api_key, form_id, platform)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    },
    "form_id": {
      "type": "string",
      "description": "f_..."
    },
    "platform": {
      "type": "string",
      "enum": [
        "html",
        "ajax",
        "react",
        "fetch",
        "nextjs",
        "express",
        "curl",
        "python",
        "ruby",
        "elixir",
        "webflow",
        "framer",
        "wordpress"
      ]
    }
  },
  "required": [
    "form_id",
    "platform"
  ]
}
🟢doorman_test_submission(api_key, form_id, message, email)

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).

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    },
    "form_id": {
      "type": "string",
      "description": "f_..."
    },
    "message": {
      "type": "string",
      "description": "The message text"
    },
    "email": {
      "type": "string",
      "description": "Optional sender email"
    }
  },
  "required": [
    "form_id",
    "message"
  ]
}
🟡doorman_send_test_delivery(api_key, form_id)

Send a sample delivery to the form's email/Slack/webhook destinations and report whether each one worked.

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    },
    "form_id": {
      "type": "string",
      "description": "f_..."
    }
  },
  "required": [
    "form_id"
  ]
}
🟢doorman_list_submissions(api_key, form_id, route, review, limit)

Recent submissions with their verdicts. Use review=true for held ones waiting for a human.

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    },
    "form_id": {
      "type": "string",
      "description": "Optional f_..."
    },
    "route": {
      "type": "string",
      "enum": [
        "deliver",
        "hold",
        "drop"
      ]
    },
    "review": {
      "type": "boolean"
    },
    "limit": {
      "type": "number"
    }
  }
}
⚪doorman_label_submission(api_key, submission_id, label)

Mark a submission real (delivers it if it was held or dropped) or spam.

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    },
    "submission_id": {
      "type": "string",
      "description": "sub_..."
    },
    "label": {
      "type": "string",
      "enum": [
        "real",
        "spam"
      ]
    }
  },
  "required": [
    "submission_id",
    "label"
  ]
}
🟡doorman_contact_support(api_key, message, error, category)

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.

입력 스키마

{
  "type": "object",
  "properties": {
    "api_key": {
      "type": "string",
      "description": "Doorman API key (dm_live_...). Only needed if the MCP connection has no Authorization header."
    },
    "message": {
      "type": "string",
      "description": "What you were trying to do and what happened"
    },
    "error": {
      "type": "string",
      "description": "The exact error text, if any"
    },
    "category": {
      "type": "string",
      "enum": [
        "setup",
        "bug",
        "billing",
        "question",
        "other"
      ]
    }
  },
  "required": [
    "message"
  ]
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 12개