AI
MCP server
Let Claude, ChatGPT, Cursor and other AI assistants check your domain and move your verification forward, step by step.
MCP (Model Context Protocol) is how AI assistants use tools. Our MCP server gives your assistant every VerifiedInbox capability, from the first free check to certificate renewals.
The easiest way to start: paste this into your assistant.
Add a verified VMC mark to my email domain using verifiedinbox.ai/get-started.md
The get-started guide tells your assistant everything else.
Endpoint#
- URL:
https://api.verifiedinbox.ai/mcp - Transport: Streamable HTTP, JSON responses. Protocol versions
2025-11-25,2025-06-18,2025-03-26. - Every tool wraps one or more API operations, and its arguments are generated from the OpenAPI schema, so they always match the API.
Connecting#
| Mode | How | Can do |
|---|---|---|
| Anonymous | Connect with no credentials | All free tools. start_application returns a guest_token to pass to later calls. |
| OAuth | Clients that support MCP sign-in open a sign-in window when an account tool is first used | Everything your role allows |
| API key | Authorization: Bearer vi_live_… or vi_test_… (API keys) |
One organization and environment |
Claude#
claude.ai and Claude Desktop: Settings → Connectors → Add custom connector, URL https://api.verifiedinbox.ai/mcp.
Claude Code:
claude mcp add --transport http verifiedinbox https://api.verifiedinbox.ai/mcpCursor#
~/.cursor/mcp.json (or .cursor/mcp.json in a project):
{
"mcpServers": {
"verifiedinbox": { "url": "https://api.verifiedinbox.ai/mcp" }
}
}With an API key, add "headers": { "Authorization": "Bearer vi_test_…" }.
ChatGPT#
Add a custom connector with the URL https://api.verifiedinbox.ai/mcp (Settings → Apps & Connectors; some plans require developer mode).
More clients and details: get-started.md.
Your progress never resets#
- Everything is saved on our servers under a stable
application_id. - Without an account, your assistant keeps the
guest_token(valid 30 days from last use). In a new conversation it callslist_applicationsorget_applicationand continues. create_resume_linkgives you a one-time link (24 hours) to continue in your browser.- After you sign in,
claim_applicationmoves the draft into your account. - Every response includes
next_actions, so your assistant always knows what's next.
Tools#
Each tool does the same thing as one or more API operations. The table is generated from the OpenAPI schema and the server's tool list, so it always matches what your assistant sees. Free tools accept guest_token (to continue an anonymous draft); account tools accept environment (live or test).
get_started#
Explains the whole process (free checks, paid setup, certificate, go-live), pricing, what the user must do themselves, and how to continue later. Call this first if you're new to VerifiedInbox.
| Field | Value |
|---|---|
| Arguments | None |
| Access | Free |
| API operations | GET /v1/meta |
check_domain#
Free, instant check of an email domain: can it get a verified logo? Detects shared providers that can't be used (gmail.com, outlook.com…), unregistered domains, the mailbox provider and a DMARC/BIMI summary. Accepts a domain, URL or email address.
| Field | Value |
|---|---|
| Arguments | domain* |
| Access | Free |
| API operations | POST /v1/checks/domain |
check_email_security#
Free full inspection of SPF, DKIM, DMARC and BIMI with plain-English findings and exact fixes. Uses the domain's authoritative nameservers (sees changes within seconds).
| Field | Value |
|---|---|
| Arguments | domain*, dkim_selectors |
| Access | Free |
| API operations | POST /v1/checks/email-auth |
start_application#
Starts the verification for a domain, or returns the existing one. Anonymous callers receive a guest_token — tell the user to keep it (with the application_id) to continue in a later conversation. Background checks start immediately. Returns the full state and next_actions.
| Field | Value |
|---|---|
| Arguments | domain*, environment, guest_token |
| Access | Free |
| API operations | POST /v1/applications |
list_applications#
Lists the verifications visible to the caller (guest drafts for a guest_token, or the account's domains).
| Field | Value |
|---|---|
| Arguments | environment, guest_token |
| Access | Free |
| API operations | GET /v1/applications |
get_application#
Full current state: separate outcomes (eligibility, payment, business, ownership, logo, trademark, certificate, BIMI, inbox display), the 11 wizard steps with status, running background work, and next_actions (what to do next and which tool to use). Call this whenever you need to know where things stand.
| Field | Value |
|---|---|
| Arguments | application_id*, guest_token |
| Access | Free |
| API operations | GET /v1/applications/{application_id}, GET /v1/applications/{application_id}/next-steps |
complete_step#
Moves the verification to the next step once the current step's required items are met (each step lists them in requirements; status ready means it can be completed). Background work never completes steps; this does, on the user's behalf. Also re-confirms an earlier step marked attention after it was fixed. Confirm with the user before completing a step they haven't reviewed.
| Field | Value |
|---|---|
| Arguments | application_id, step, guest_token |
| Access | Free |
| API operations | POST /v1/applications/{application_id}/steps/{step}/complete |
set_email_usage#
Ask the user how email is used on their domain and record the answer: none (new domain, no email yet), low (only their mailbox provider, e.g. Google Workspace, sends email) or active (several tools send email: newsletters, billing, support…). none/low can block fake emails right away; active should follow the staged rollout, though the user may skip ahead. The email security step needs DMARC published with a report address (watch mode is enough); filtering or blocking is required by the DNS step. Returns the email security report with the recommended DMARC record.
| Field | Value |
|---|---|
| Arguments | application_id, email_usage, guest_token |
| Access | Free |
| API operations | PUT /v1/applications/{application_id}/email-usage |
set_dmarc_report_address#
Sets the email address for daily DMARC reports, used in every suggested DMARC record (rua=). Ask the user for a mailbox they read (or a DMARC reporting service); by default reports go to dmarc@
| Field | Value |
|---|---|
| Arguments | application_id, email, guest_token |
| Access | Free |
| API operations | PUT /v1/applications/{application_id}/dmarc-reports |
recheck_email_security#
Re-checks SPF, DKIM and DMARC for the application right now (after the user published records) and returns the report plus the DMARC rollout plan: every stage's exact record, what to monitor and what happens to email at that stage.
| Field | Value |
|---|---|
| Arguments | application_id*, guest_token |
| Access | Free |
| API operations | POST /v1/applications/{application_id}/email-security/check |
submit_logo#
Provide the company logo: SVG text (preferred), a URL to an SVG, or use_discovered=true to use the logo found on the company website. The original is kept untouched; an inbox-ready SVG Tiny P/S version is produced automatically and a US trademark search starts.
| Field | Value |
|---|---|
| Arguments | application_id*, guest_token, svg, url, use_discovered |
| Access | Free |
| API operations | PUT /v1/applications/{application_id}/logo |
get_logo_status#
Logo processing status, compliance issues, the list of changes made for the inbox version (lossy ones flagged), visual difference, and preview URLs. Also lists logos discovered on the website.
| Field | Value |
|---|---|
| Arguments | application_id*, guest_token |
| Access | Free |
| API operations | GET /v1/applications/{application_id}/logo, GET /v1/applications/{application_id}/logo-candidates |
search_trademark#
Starts (or re-runs) the USPTO trademark search, or verifies a specific US serial/registration number the user provides. A registered trademark matching the logo unlocks the blue checkmark (VMC). Rate-limited for anonymous users.
| Field | Value |
|---|---|
| Arguments | application_id*, guest_token, mark_text, owner_name, serial_or_registration_number |
| Access | Free |
| API operations | POST /v1/applications/{application_id}/trademark/search, POST /v1/applications/{application_id}/trademark/claim |
get_trademark_status#
Trademark search result: matched registration (with similarity to the logo), candidates, and what it means.
| Field | Value |
|---|---|
| Arguments | application_id*, guest_token |
| Access | Free |
| API operations | GET /v1/applications/{application_id}/trademark |
get_eligibility#
Outcome: vmc_eligible (logo + blue checkmark), cmc_eligible (logo only, no checkmark), not_currently_eligible (with evidence, estimated date and next steps such as the trademark filing service at trademark@getverifiedinbox.com), or assessing.
| Field | Value |
|---|---|
| Arguments | application_id*, guest_token |
| Access | Free |
| API operations | GET /v1/applications/{application_id}/eligibility |
get_estimate#
Itemized yearly price before payment: plan (CMC $899 or VMC $1,499 per domain) plus the certificate issuer's fee (pass-through, no markup, ~$750–$1,750). Full refund if issuance is rejected.
| Field | Value |
|---|---|
| Arguments | application_id*, guest_token, product |
| Access | Free |
| API operations | GET /v1/applications/{application_id}/estimate |
watch_eligibility#
Emails the user when the domain becomes eligible (we re-check daily). Use for not_currently_eligible outcomes.
| Field | Value |
|---|---|
| Arguments | application_id, email, guest_token |
| Access | Free |
| API operations | POST /v1/applications/{application_id}/eligibility/watch |
create_resume_link#
Creates a one-time link (valid 24h) that opens this verification in the web app — useful for visual steps like reviewing the logo or copying DNS records. Optionally emails it.
| Field | Value |
|---|---|
| Arguments | application_id*, email, guest_token |
| Access | Free |
| API operations | POST /v1/applications/{application_id}/resume-links |
explain_term#
Plain-English explanation of a term such as BIMI, VMC, CMC, DMARC, SPF, DKIM, selector, alignment, SVG Tiny P/S.
| Field | Value |
|---|---|
| Arguments | term* |
| Access | Free |
| API operations | GET /v1/glossary/{term} |
contact_support#
Sends a message to the VerifiedInbox team (a human replies by email within one business day). Include the user's email.
| Field | Value |
|---|---|
| Arguments | message*, application_id, email, guest_token, kind, name |
| Access | Free |
| API operations | POST /v1/support |
send_feedback#
Sends feedback or a feature request to the VerifiedInbox team.
| Field | Value |
|---|---|
| Arguments | message*, email, guest_token, kind |
| Access | Free |
| API operations | POST /v1/support |
get_account#
Organizations, environment (live/test), every domain with its status and pending actions, and recent orders.
| Field | Value |
|---|---|
| Arguments | environment |
| Access | Account |
| API operations | GET /v1/me, GET /v1/applications, GET /v1/orders |
claim_application#
Atomically moves a guest draft (application_id + guest_token) into the signed-in account. If the account already has the domain, keeps the more advanced one and reports which.
| Field | Value |
|---|---|
| Arguments | application_id, guest_token, environment |
| Access | Account (applications:write) |
| API operations | POST /v1/applications/{application_id}/claim |
create_checkout#
Creates a Stripe checkout link for the chosen plan. Only a human can pay: give the link to the user, and confirm the price first (see get_estimate).
| Field | Value |
|---|---|
| Arguments | application_id, product, environment, idempotency_key |
| Access | Account (billing:write) |
| API operations | POST /v1/applications/{application_id}/checkout |
submit_business_details#
Legal company details + the applicant (starts business registration verification). Requires payment. jurisdiction is the US state code like us_de.
| Field | Value |
|---|---|
| Arguments | address, applicant, application_id, jurisdiction, legal_name*, authority_attested, environment, registration_number |
| Access | Account (applications:write) |
| API operations | PUT /v1/applications/{application_id}/business |
get_business_status#
Business verification status, matched registry record and applicant authority.
| Field | Value |
|---|---|
| Arguments | application_id*, environment |
| Access | Account |
| API operations | GET /v1/applications/{application_id}/business |
approve_logo#
Approves the exact inbox-ready logo the user reviewed (pass converted_sha256 from get_logo_status). Ask the user to look at the preview first (create_resume_link helps).
| Field | Value |
|---|---|
| Arguments | application_id, converted_sha256, environment |
| Access | Account (applications:write) |
| API operations | POST /v1/applications/{application_id}/logo/approve |
get_dns_records#
Every DNS record the user must add (ownership TXT, DMARC at the right rollout stage, BIMI) with copy-paste values and live status from the authoritative nameservers. The user adds them at their DNS provider.
| Field | Value |
|---|---|
| Arguments | application_id*, environment |
| Access | Account |
| API operations | GET /v1/applications/{application_id}/dns |
verify_dns#
Re-checks the DNS records right now (and watches closely for the next minutes).
| Field | Value |
|---|---|
| Arguments | application_id*, environment |
| Access | Account |
| API operations | POST /v1/applications/{application_id}/dns/verify |
verify_dkim_selectors#
Checks DKIM selectors the user provides. Needed only when the common selectors we try automatically found no key; the user's email provider shows the selector in its DKIM settings.
| Field | Value |
|---|---|
| Arguments | application_id, selectors, guest_token |
| Access | Free |
| API operations | POST /v1/applications/{application_id}/dkim-selectors |
create_test_message#
Returns an address the user sends a real email to; we then report SPF/DKIM/DMARC alignment on that actual message. Free. Also finds the DKIM key when the common selectors didn't: an aligned signature on the test email is added to the email security report.
| Field | Value |
|---|---|
| Arguments | application_id*, guest_token |
| Access | Free |
| API operations | POST /v1/applications/{application_id}/test-messages |
get_test_message_result#
Result of the test email: SPF, DKIM, DMARC alignment and findings.
| Field | Value |
|---|---|
| Arguments | application_id, test_message_id, guest_token |
| Access | Free |
| API operations | GET /v1/applications/{application_id}/test-messages/{test_message_id} |
get_certificate#
Certificate status timeline, prerequisites (with the step that fixes each), the latest final check, actions the issuer needs from the user, validity and renewal dates.
| Field | Value |
|---|---|
| Arguments | application_id*, environment |
| Access | Account |
| API operations | GET /v1/applications/{application_id}/certificate |
run_final_check#
Re-verifies live everything the certificate issuer checks (domain, email protection, logo, company, trademark, DNS records). Runs automatically before the order is submitted and daily during the issuer's review; anything that fails marks its step attention and holds the order.
| Field | Value |
|---|---|
| Arguments | application_id*, environment |
| Access | Account |
| API operations | POST /v1/applications/{application_id}/certificate/check |
order_certificate#
Submits the certificate order (normally automatic once prerequisites are met). Safe to call repeatedly.
| Field | Value |
|---|---|
| Arguments | application_id*, environment, idempotency_key |
| Access | Account (certificates:write) |
| API operations | POST /v1/applications/{application_id}/certificate/order |
reissue_certificate#
Requests a reissue (e.g. after a logo change). Re-checks domain ownership first.
| Field | Value |
|---|---|
| Arguments | application_id, reason, environment, idempotency_key |
| Access | Account (certificates:write) |
| API operations | POST /v1/applications/{application_id}/certificate/reissue |
renew_certificate#
Starts the renewal early (renewal is otherwise automatic 45 days before expiry).
| Field | Value |
|---|---|
| Arguments | application_id*, environment, idempotency_key |
| Access | Account (certificates:write) |
| API operations | POST /v1/applications/{application_id}/certificate/renew |
revoke_certificate#
PERMANENTLY revokes the certificate; the logo disappears from inboxes. Only with explicit user confirmation: confirm must be exactly "REVOKE
| Field | Value |
|---|---|
| Arguments | application_id, confirm, reason*, environment, idempotency_key |
| Access | Account (certificates:write) |
| API operations | POST /v1/applications/{application_id}/certificate/revoke |
confirm_inbox_display#
Records that the user saw their logo (and checkmark for VMC) in a mailbox such as Gmail — the final 'display observed' outcome.
| Field | Value |
|---|---|
| Arguments | application_id*, environment, mailbox, observed |
| Access | Account (applications:write) |
| API operations | POST /v1/applications/{application_id}/inbox-display |
list_orders#
Orders and payments for the account.
| Field | Value |
|---|---|
| Arguments | environment |
| Access | Account |
| API operations | GET /v1/orders, GET /v1/orders/{order_id} |
* required.
Resources and prompts#
verifiedinbox://get-started: the full get-started guide.verifiedinbox://glossary: the glossary.- Prompt
verify_my_domain(domain): starts the guided flow.
Errors#
Tool failures return isError: true with a clear message and next_actions (for example: sign in, pay, add a DNS record). Rate limits include retry_after_seconds.
What your assistant won't do#
By design, assistants can't pay, can't change your DNS, and need your explicit confirmation to revoke a certificate. You approve your logo yourself. See Security.