BusinessMCP

API reference

The BusinessMCP Data API

22 tools for company data, IP intelligence, website checks and MCP trust, over REST and MCP with one key, prepaid and priced per call in dollars. Everything below is generated from the same registry the API runs on.

Base URLs

REST

https://businessmcp.com/api/hub/v1

MCP (streamable HTTP)

https://businessmcp.com/api/hub/mcp
  • GET /api/hub/v1/tools — the public catalogue: every tool with its input schema, price and example. No key needed.
  • GET /api/hub/v1/openapi.json — an OpenAPI 3.1 document generated from the same registry. No key needed.

Authentication

Send a BusinessMCP API key as Authorization: Bearer mcph_… on every call except the two public documents above. Create keys in the developer portal (sign up free). The same mcph_ key can also reach a BusinessMCP workspace endpoint; a key narrowed to the Data API only never sees workspace data. A missing, revoked or expired key — or one without Data API access — gets 401 with a WWW-Authenticate: Bearer challenge.

Calling a tool

Every tool answers at POST /api/hub/v1/tools/{id}/call with its input as the JSON body. Each also has a readable route, listed with the tool below: a GET route takes its input from the path and the query string, a POST route from the JSON body. Input is validated before anything is charged, so a malformed call is always free.

By id

curl -X POST https://businessmcp.com/api/hub/v1/tools/fp.company.lookup/call \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"stripe.com"}'

Readable route

curl https://businessmcp.com/api/hub/v1/companies/stripe.com \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Response envelope

A success is { ok: true, data, meta }; data is the tool’s own result and meta says what it cost. Results are capped at 400 KB.

{
  "ok": true,
  "data": { … },
  "meta": {
    "request_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
    "tool": "company_lookup",
    "provider": "first_party",
    "trust_tier": "first_party",
    "cost_usd": "$0.02",
    "trial_usd": "$0.02",
    "paid_usd": "$0",
    "replayed": false,
    "trial_left_usd": "$4.98"
  }
}
  • request_id — Your Idempotency-Key when you sent a valid one, otherwise a generated id. Quote it to support.
  • tool — The tool’s MCP name.
  • provider — Who runs the tool: first_party for everything in the catalogue today.
  • trust_tier — How much we vouch for the tool: first_party for ours.
  • cost_usd — What this call cost, in dollars, after any refund for a miss.
  • trial_usd — The part of cost_usd paid by the free trial.
  • paid_usd — The part of cost_usd taken from your purchased balance.
  • replayed — True when the Idempotency-Key was seen before: the call ran but was not charged again.
  • balance_usd — Purchased balance left after the call, when known.
  • trial_left_usd — Free trial left after the call, when one is live.

REST responses repeat the essentials as headers: x-request-id, x-cost-usd, x-balance-usd, x-trial-left-usd.

Pricing and balance

  • Every tool has a fixed price in dollars per call, or per item for a bulk tool. A call reserves the most it can cost before it runs, then gives back what it did not use: misses on tools charged only for results, and the whole call if the tool fails on our side. Money goes back to whichever of trial or balance paid it.
  • The account is prepaid. Add balance on the Billing page of the developer portal in packs from $10; bigger packs add up to 30% bonus balance. There is no subscription and nothing is invoiced afterwards.
  • Saving a card on the Billing page starts a one-time free trial of $5 free for 7 days. The card is not charged. The trial pays for BusinessMCP’s own tools only; people data and marketplace tools are paid from purchased balance.
  • A call pays from the trial first, where it applies, then from the balance. When neither covers it, it is refused with 402 quota_exceeded with details.reason: insufficient_balance and an upgrade_url to add balance — never billed later. A key can carry its own monthly spend limit, set on the API keys page of the developer portal.

Free trial

$5

once, for 7 days, on BusinessMCP’s own tools. It starts when you save a card, which is not charged.

Then prepaid balance

  • Pay $10$10 of balance
  • Pay $50$55 of balance+$5 bonus (10%)
  • Pay $200$240 of balance+$40 bonus (20%)
  • Pay $1,000$1,300 of balance+$300 bonus (30%)

Each call is taken from your balance at the price below. No subscription and no invoice later: an empty balance refuses the call. Any key can carry a monthly spend limit of its own.

Price per tool. Bonus balance from a bigger pack buys more calls; it never changes a price. The trial never pays for people data.
 PriceCovered by the $5 trialWhat $10 buys
Company lookup$0.02 per call, only when a result is found250 calls500 calls
Bulk company lookup$0.02 per item, only when a result is found250 items500 items
Website status$0.005 per call, only when a result is found1,000 calls2,000 calls
Email pattern$0.01 per call, only when a result is found500 calls1,000 calls
Company search$0.01 per item, only when a result is found500 items1,000 items
IP to company$0.02 per call, only when a result is found250 calls500 calls
Bulk IP to company$0.02 per item, only when a result is found250 items500 items
AI readiness grade$0.03 per call166 calls333 calls
AI crawler access$0.01 per call500 calls1,000 calls
WebMCP check$0.01 per call500 calls1,000 calls
Email authentication check$0.01 per call500 calls1,000 calls
MCP server scan$0.05 per call100 calls200 calls
Lead check$0.015 per call333 calls666 calls
Email verify$0.002 per call2,500 calls5,000 calls
Monitor an MCP server$0.05 per call100 calls200 calls
List MCP monitorsFreeUnlimitedFree
MCP monitor eventsFreeUnlimitedFree
Update an MCP monitorFreeUnlimitedFree
Delete an MCP monitorFreeUnlimitedFree
People search$0.08 per item, only when a result is foundNone, paid balance only125 items
Email finder$0.04 per call, only when a result is foundNone, paid balance only250 calls
Person enrichment$0.10 per call, only when a result is foundNone, paid balance only100 calls

Idempotency

Send an Idempotency-Key header on a REST call to make a retry free. A key must match ^[A-Za-z0-9._:-]{8,200}$; anything else is ignored and a fresh id is used. A repeat of the same key in the same workspace runs the tool again but is not charged again, and returns meta.replayed: true. The key becomes the call’s request_id. MCP tool calls carry no idempotency key.

Errors

A failure is { ok: false, error: { code, message, hint?, retryable, upgrade_url?, details? } }. Retry only when retryable is true. When a charge is refused, upgrade_url is the page that fixes it.

  • 400 invalid_input — the input failed validation. Never charged.
  • 401 — missing, invalid or revoked key, or a key without Data API access.
  • 402 quota_exceeded — the charge was refused; see the reasons below.
  • 403 not_permitted — Data API access is suspended for the account.
  • 404 not_found — no such tool or route.
  • 429 quota_exceeded — rate limited (details.reason: rate_limited, a retry-after: 60 header). Retryable.
  • 503 upstream_failed / backend_unavailable — the tool or our billing did not answer. Nothing is kept: a charged call is refunded. Retryable.
  • 500 unavailable — the tool is switched off for maintenance. Retryable.
{
  "ok": false,
  "error": {
    "code": "quota_exceeded",
    "message": "Not enough balance for company_lookup ($0.02). Balance: $0.",
    "hint": "Add balance in the developer portal (Billing). Bigger packs include bonus dollars.",
    "retryable": false,
    "upgrade_url": "https://businessmcp.com/developers/billing",
    "details": {
      "reason": "insufficient_balance",
      "balance_usd": "$0",
      "cost_usd": "$0.02"
    }
  }
}
Why a charge is refused, from details.reason.
ReasonHTTPCodeWhenupgrade_url
insufficient_balance402quota_exceededThe balance (and any live free trial) does not cover the call. People data and marketplace tools are paid from purchased balance only.Yes
key_cap_reached402quota_exceededThis key’s own monthly spend limit would be exceeded.Yes
people_cap402quota_exceededThe daily limit on people records is reached.No
account_suspended403not_permittedHub access is suspended for the workspace.No
kill_switch503unavailableThe tool or its provider is switched off for maintenance. Retryable.No

Rate limits and timeouts

  • 600 calls a minute per key.
  • 3,000 calls a minute per account, across all its keys.
  • 60 calls a minute per key for the heavier tools — those priced at $0.03 a call or more, and every bulk tool: company_bulk_lookup, company_search, ip_bulk_lookup, ai_readiness_grade, mcp_server_scan, mcp_monitor_create, people_search, email_finder, person_enrich.
  • Each tool has a deadline — 12 seconds unless listed otherwise below. A call that misses it fails with upstream_failed and is refunded.

MCP

The MCP endpoint registers every tool under its MCP name, plus hub_search_tools (find a tool by what it does, free) and hub_call_tool (call any tool by id). It takes a bearer key only. A result is the same { data, meta } as REST, as JSON text; a failure comes back with isError: true and the same error object.

Claude Code

claude mcp add --transport http businessmcp https://businessmcp.com/api/hub/mcp \
  --header "Authorization: Bearer mcph_YOUR_KEY_HERE"

Claude Desktop / Cursor

{
  "mcpServers": {
    "businessmcp": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://businessmcp.com/api/hub/mcp",
        "--header",
        "Authorization: Bearer mcph_YOUR_KEY_HERE"
      ]
    }
  }
}

Both name the server businessmcp. If a workspace endpoint already uses that name in the same client, give this entry another one, such as businessmcp-hub.

Claude.ai and ChatGPT accept OAuth only, so they cannot hold a bearer key. They reach the same tools, billed the same way, through a BusinessMCP workspace endpoint, which carries hub_company_lookup, hub_ip_lookup, hub_lead_check, hub_email_auth_check, hub_ai_readiness, hub_search_tools, hub_call_tool. See add your endpoint to Claude.ai and ChatGPT.

Usage

GET /api/hub/v1/usage returns the calling account’s balance, trial and month so far. It is free. Amounts are integer mills ($0.001).

  • period_start — The first day of the current calendar month (UTC), which the spend and call counts below cover.
  • balance_mills — Purchased balance left, in mills ($0.001). It can be below zero after a refunded pack, which refuses paid calls.
  • trial_left_mills / trial_expires_at — Free trial left, in mills, and when it ends (null if no trial was ever granted).
  • spent_mills — Spent this month, trial and balance together, in mills.
  • status — The account’s Hub status: active or suspended.
  • by_tool — Per tool this month: calls, and mills spent net of refunds.
  • by_transport — Calls this month by how they arrived: rest, mcp or assistant.

Tools

Company data

Company lookup

id fp.company.lookupmcp company_lookup

$0.02 per call, only when a result is found

Look up a company by its domain (a URL or work email also works) in our company store. Returns name, industry, employee range, founding year, location (ISO-2 country), company phone, LinkedIn page, a short description and whether the website answers. Brand platforms such as google.com are returned name-only. Charged only when a company is found.

GET/api/hub/v1/companies/{domain}

also POST /api/hub/v1/tools/fp.company.lookup/call

Deadline 12s

Input

  • domainstringRequired · max 253 chars

Request

curl https://businessmcp.com/api/hub/v1/companies/stripe.com \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "found": true,
  "company": {
    "domain": "stripe.com",
    "name": "Stripe",
    "industry": "financial services",
    "category": null,
    "employee_range": "5001-10000",
    "employee_count": null,
    "founded_year": 2010,
    "country": "US",
    "region": "california",
    "city": "south san francisco",
    "phone": null,
    "linkedin_url": "https://www.linkedin.com/company/stripe",
    "description": "Financial infrastructure for the internet.",
    "tech_stack": null,
    "brand_only": false,
    "website_status": "live",
    "source": "store"
  }
}

Bulk company lookup

id fp.company.bulkmcp company_bulk_lookup

$0.02 per item, only when a result is found

Look up to 100 company domains at once. Returns one entry per input domain, in order, with found=false for unknown domains. Charged per company found; misses are refunded.

POST/api/hub/v1/companies/bulk

also POST /api/hub/v1/tools/fp.company.bulk/call

Deadline 20s · 60 calls a minute per key

Input

  • domainsstring[]Required · 1–100 items

Request

curl -X POST https://businessmcp.com/api/hub/v1/companies/bulk \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domains":["stripe.com","notarealcompany-xyz.com"]}'

Example data

{
  "results": [
    {
      "domain": "stripe.com",
      "found": true,
      "company": {
        "domain": "stripe.com",
        "name": "Stripe",
        "industry": "financial services",
        "category": null,
        "employee_range": "5001-10000",
        "employee_count": null,
        "founded_year": 2010,
        "country": "US",
        "region": "california",
        "city": "south san francisco",
        "phone": null,
        "linkedin_url": "https://www.linkedin.com/company/stripe",
        "description": "Financial infrastructure for the internet.",
        "tech_stack": null,
        "brand_only": false,
        "website_status": "live",
        "source": "store"
      }
    },
    {
      "domain": "notarealcompany-xyz.com",
      "found": false,
      "company": null
    }
  ],
  "found": 1
}

Website status

id fp.company.livenessmcp company_website_status

$0.005 per call, only when a result is found

Report whether a company website answers, as last measured by our crawler: live, offline or unknown, when it was checked, and the domain it redirects to when it moved. Useful for cleaning a CRM of dead accounts before outreach. An unknown status is never reported as offline.

GET/api/hub/v1/companies/{domain}/status

also POST /api/hub/v1/tools/fp.company.liveness/call

Deadline 12s

Input

  • domainstringRequired · max 253 chars

Request

curl https://businessmcp.com/api/hub/v1/companies/acme.com/status \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "domain": "acme.com",
  "known": true,
  "status": "live",
  "checked_at": "2026-09-20T10:00:00Z",
  "redirects_to": null
}

Email pattern

id fp.company.email_patternmcp email_pattern

$0.01 per call, only when a result is found

Return the email address format a company uses (for example {first}.{last}), how confident we are in it, whether it was validated by a live mailbox check, whether the domain accepts mail (MX) and whether it is a catch-all domain that accepts any address. Company-level data only: no person is returned. Charged only when a pattern is known.

GET/api/hub/v1/companies/{domain}/email-pattern

also POST /api/hub/v1/tools/fp.company.email_pattern/call

Deadline 12s

Input

  • domainstringRequired · max 253 chars

Request

curl https://businessmcp.com/api/hub/v1/companies/acme.com/email-pattern \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "domain": "acme.com",
  "found": true,
  "pattern": "{first}.{last}",
  "confidence": 0.8,
  "validated": true,
  "example": "jane.doe@acme.com",
  "accepts_mail": true,
  "catch_all": false,
  "mail_checked_at": "2026-09-01T00:00:00Z"
}

Company search

id fp.company.searchmcp company_search

$0.01 per item, only when a result is found

Search our company store for prospects by industry or vertical, country (ISO-2 or name), city and employee range, optionally only companies with a phone number. Returns up to 25 companies per call with the same fields as company_lookup. For more, call again with the domains you already have in exclude_domains; more_available says whether the store likely holds further matches. Companies whose website is offline are excluded. Charged per company returned.

POST/api/hub/v1/companies/search

also POST /api/hub/v1/tools/fp.company.search/call

Deadline 20s · 60 calls a minute per key

Input

  • industrystringOptional · max 80 chars — An industry or vertical, e.g. "dental clinic", "logistics", "saas".
  • keywordsstring[]Optional · 0–5 items — Extra category words matched against the structured industry and category fields only.
  • countrystringOptional · max 60 chars — ISO-2 code or country name, e.g. "US" or "germany".
  • citystringOptional · max 60 chars
  • employees_minintegerOptional
  • employees_maxintegerOptional
  • has_phonebooleanOptional — Only companies with a known phone number.
  • limitintegerOptional
  • exclude_domainsstring[]Optional · 0–200 items — Domains you already have, to get different companies on the next call.

Request

curl -X POST https://businessmcp.com/api/hub/v1/companies/search \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"industry":"logistics","country":"US","employees_min":50,"limit":2}'

Example data

{
  "companies": [
    {
      "domain": "acme-freight.com",
      "name": "Acme Freight",
      "industry": "logistics",
      "country": "US"
    }
  ],
  "returned": 1,
  "more_available": true
}

IP intelligence

IP to company

id fp.ip.lookupmcp ip_lookup

$0.02 per call, only when a result is found

Resolve a public IP address against our nightly IP graph. Returns a verdict (company, non_business, low_confidence, unidentified), the network class (business, isp, mobile, hosting, vpn, tor, education, government), the company name and domain when the verdict is company, and flags for hosting, CDN edges and secure-egress/SASE ranges, whose addresses belong to their customers rather than the vendor. Trust company.domain only when verdict is company.

GET/api/hub/v1/ip/{ip}

also POST /api/hub/v1/tools/fp.ip.lookup/call

Deadline 12s

Input

  • ipstringRequired · max 45 chars

Request

curl https://businessmcp.com/api/hub/v1/ip/17.253.144.10 \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "ip": "17.253.144.10",
  "verdict": "company",
  "network_class": "business",
  "company": {
    "name": "Apple Inc.",
    "domain": "apple.com"
  },
  "name_hint": null,
  "confidence": 0.95,
  "country": "US",
  "asn": 714,
  "network": "17.0.0.0/8",
  "sources": [
    "bgp",
    "arin",
    "swip"
  ],
  "flags": {
    "hosting": false,
    "isp_or_mobile": false,
    "cdn_edge": false,
    "secure_egress": false,
    "sase_dedicated": false
  },
  "graph_version": "v20260926"
}

Bulk IP to company

id fp.ip.bulkmcp ip_bulk_lookup

$0.02 per item, only when a result is found

Resolve up to 100 public IP addresses at once. Returns one result per input IP, in order. Charged per IP that names a company; every other verdict is free.

POST/api/hub/v1/ip/bulk

also POST /api/hub/v1/tools/fp.ip.bulk/call

Deadline 25s · 60 calls a minute per key

Input

  • ipsstring[]Required · 1–100 items

Request

curl -X POST https://businessmcp.com/api/hub/v1/ip/bulk \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"ips":["17.253.144.10"]}'

Example data

{
  "results": [
    {
      "ip": "17.253.144.10",
      "verdict": "company",
      "network_class": "business",
      "company": {
        "name": "Apple Inc.",
        "domain": "apple.com"
      },
      "name_hint": null,
      "confidence": 0.95,
      "country": "US",
      "asn": 714,
      "network": "17.0.0.0/8",
      "sources": [
        "bgp",
        "arin",
        "swip"
      ],
      "flags": {
        "hosting": false,
        "isp_or_mobile": false,
        "cdn_edge": false,
        "secure_egress": false,
        "sase_dedicated": false
      },
      "graph_version": "v20260926"
    }
  ]
}

Website checks

AI readiness grade

id fp.site.ai_readinessmcp ai_readiness_grade

$0.03 per call

Grade how ready a website is for AI crawlers and agents: robots.txt access, llms.txt, structured data, metadata and sitemap, scored 0–100 with a letter grade and a fix list. If the homepage cannot be read, the call fails and is refunded rather than graded.

GET/api/hub/v1/sites/{domain}/ai-readiness

also POST /api/hub/v1/tools/fp.site.ai_readiness/call

Deadline 25s · 60 calls a minute per key

Input

  • domainstringRequired · max 253 chars

Request

curl https://businessmcp.com/api/hub/v1/sites/acme.com/ai-readiness \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "ok": true,
  "domain": "acme.com",
  "score": 72,
  "grade": "C",
  "checks": [],
  "robotsFound": true,
  "robotsState": "found",
  "homepageFetched": true
}

AI crawler access

id fp.site.ai_crawlersmcp ai_crawler_access

$0.01 per call

Check which AI crawlers and agents a website allows in robots.txt, and whether it publishes llms.txt. When robots.txt could not be read, `allowed` is null rather than a guess.

GET/api/hub/v1/sites/{domain}/ai-crawlers

also POST /api/hub/v1/tools/fp.site.ai_crawlers/call

Deadline 15s

Input

  • domainstringRequired · max 253 chars

Request

curl https://businessmcp.com/api/hub/v1/sites/acme.com/ai-crawlers \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "ok": true,
  "domain": "acme.com",
  "robotsFound": true,
  "robotsState": "found",
  "llmsTxtFound": false,
  "llmsState": "absent",
  "crawlers": [
    {
      "agent": "GPTBot",
      "label": "OpenAI GPTBot",
      "purpose": "training",
      "allowed": true
    }
  ]
}

WebMCP check

id fp.site.webmcpmcp webmcp_check

$0.01 per call

Check whether a website carries a live WebMCP origin-trial token and registers tools for browser agents. Reads the served HTML only and does not run JavaScript; the note says what that means for the result.

GET/api/hub/v1/sites/{domain}/webmcp

also POST /api/hub/v1/tools/fp.site.webmcp/call

Deadline 15s

Input

  • domainstringRequired · max 253 chars

Request

curl https://businessmcp.com/api/hub/v1/sites/acme.com/webmcp \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "ok": true,
  "domain": "acme.com",
  "reachable": true,
  "verdict": "none",
  "note": "We read the served HTML only."
}

Email authentication check

id fp.site.email_authmcp email_auth_check

$0.01 per call

Check a domain’s email authentication: MX, SPF, DMARC policy and DKIM on common selectors, each graded pass, warn, fail or unknown with the fix. A DNS lookup we could not complete is reported as unknown, never as fail.

GET/api/hub/v1/sites/{domain}/email-auth

also POST /api/hub/v1/tools/fp.site.email_auth/call

Deadline 15s

Input

  • domainstringRequired · max 253 chars

Request

curl https://businessmcp.com/api/hub/v1/sites/acme.com/email-auth \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "domain": "acme.com",
  "score": 3,
  "checks": [
    {
      "id": "mx",
      "label": "MX records",
      "status": "pass",
      "detail": "Mail is routed via aspmx.l.google.com (5 records)."
    }
  ]
}

Trust & safety

MCP server scan

id fp.mcp.probemcp mcp_server_scan

$0.05 per call

Connect to a remote MCP server (initialize + tools/list) and report whether it is live, needs auth or is not MCP, its server name and version, and every tool with a security scan of its name and description: hidden instructions, exfiltration requests, tool shadowing, credential reads and similar. Each tool gets a fingerprint you can pin to detect a later silent change. A bearer token, if given, is used once and never stored.

POST/api/hub/v1/mcp/scan

also POST /api/hub/v1/tools/fp.mcp.probe/call

Deadline 20s · 60 calls a minute per key

Input

  • urlstringRequired · URL · max 2,000 chars
  • bearerstringOptional · max 4,000 chars — Optional bearer token for a server that requires auth. Used for this call only and never stored.

Request

curl -X POST https://businessmcp.com/api/hub/v1/mcp/scan \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://mcp.example.com/mcp"}'

Example data

{
  "status": "live",
  "server": {
    "name": "example",
    "version": "1.0.0",
    "protocol_version": "2026-07-28"
  },
  "tools": [
    {
      "name": "search",
      "blocking": [],
      "warnings": [],
      "fingerprint": "1a2b3c4d9f"
    }
  ],
  "summary": {
    "tools": 1,
    "blocked": 0,
    "warned": 0
  }
}

Lead check

id fp.lead.checkmcp lead_check

$0.015 per call

Score an inbound lead before it reaches your CRM: email domain age (RDAP), whether it accepts mail, disposable or free-mail provider, gibberish local part, the network class of the submitting IP (hosting, VPN, Tor) and headless-browser signals. Returns a band (ok, suspect, spam) with the reasons. Use it to FLAG a lead for review, never to silently drop one: an unknown fact counts as zero, so a lookup failure never makes a lead look worse.

POST/api/hub/v1/leads/check

also POST /api/hub/v1/tools/fp.lead.check/call

Deadline 15s

Input

  • emailstringOptional · email · max 320 chars
  • ipstringOptional · max 45 chars
  • user_agentstringOptional · max 1,000 chars
  • bot_signalsobjectOptional · fields: webdriver, noLanguages, noChrome, headlessUa — Client signals from the browser that submitted the form, if you collect them.

Request

curl -X POST https://businessmcp.com/api/hub/v1/leads/check \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"jane@acme.com","ip":"17.253.144.10"}'

Example data

{
  "band": "ok",
  "reasons": [],
  "email": {
    "domain": "acme.com",
    "disposable": false,
    "free_mail": false,
    "quality": {
      "score": 0,
      "band": "ok",
      "signals": []
    }
  },
  "ip": null,
  "automated": false
}

Email verify

id fp.email.verifymcp email_verify

$0.002 per call

Check whether an email address can receive mail before you send to it: well-formed syntax, a live mail server (MX) on the domain, whether the domain is catch-all, disposable or a free-mail provider, whether it is a shared role inbox (info@, sales@), and whether the local part fits the company address format we know. Returns a verdict of undeliverable, risky, domain_ok or unknown with the reasons. No mail server is contacted, so domain_ok means the domain accepts mail, not that this exact mailbox exists. The address is not stored.

POST/api/hub/v1/emails/verify

also POST /api/hub/v1/tools/fp.email.verify/call

Deadline 15s

Input

  • emailstringRequired · max 320 chars

Request

curl -X POST https://businessmcp.com/api/hub/v1/emails/verify \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"jane.doe@acme.com"}'

Example data

{
  "email": "jane.doe@acme.com",
  "verdict": "domain_ok",
  "reasons": [
    "The domain accepts mail. The mailbox itself was not contacted."
  ],
  "checks": {
    "syntax": true,
    "mx": [
      "aspmx.l.google.com"
    ],
    "catch_all": false,
    "disposable": false,
    "free_mail": false,
    "role": false,
    "fits_company_pattern": true,
    "company_pattern": "{first}.{last}"
  }
}

Monitor an MCP server

id fp.mcp.monitor.createmcp mcp_monitor_create

$0.05 per call

Start monitoring a remote MCP server. The first check pins a fingerprint of every tool; after that the server is checked hourly, every 6 hours or daily, and you are alerted (in-app, email, Slack and the alert.raised webhook) when it goes down, recovers, adds or removes a tool, or changes a tool definition without notice, which is how a trusted server turns hostile. A tool whose description trips a blocking security rule is flagged at once. Creating a monitor costs the baseline scan; each scheduled check costs $0.002, and a monitor pauses itself if the balance runs out.

POST/api/hub/v1/mcp/monitors

also POST /api/hub/v1/tools/fp.mcp.monitor.create/call

Deadline 25s · 60 calls a minute per key

Input

  • urlstringRequired · URL · max 2,000 chars
  • intervalstringOptional — hourly, 6h or daily. Each scheduled check costs $0.002.
  • bearerstringOptional · max 4,000 chars — Optional bearer token for a server that requires auth. Stored encrypted and used only for these checks.

Request

curl -X POST https://businessmcp.com/api/hub/v1/mcp/monitors \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url":"https://mcp.example.com/mcp","interval":"daily"}'

Example data

{
  "monitor": {
    "id": "5f0c…",
    "url": "https://mcp.example.com/mcp",
    "interval": "daily",
    "status": "active",
    "last_status": "live",
    "tools_pinned": 12
  },
  "baseline": {
    "status": "live",
    "tools": 12,
    "alerts": []
  }
}

List MCP monitors

id fp.mcp.monitor.listmcp mcp_monitor_list

Free

List the MCP server monitors in this workspace with their interval, status, last check, consecutive failures and how many tools are pinned. Free.

GET/api/hub/v1/mcp/monitors

also POST /api/hub/v1/tools/fp.mcp.monitor.list/call

Deadline 12s

Input

Request

curl https://businessmcp.com/api/hub/v1/mcp/monitors \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "monitors": [
    {
      "id": "5f0c…",
      "url": "https://mcp.example.com/mcp",
      "interval": "daily",
      "status": "active",
      "last_status": "live"
    }
  ]
}

MCP monitor events

id fp.mcp.monitor.eventsmcp mcp_monitor_events

Free

Read the event history of your MCP monitors, newest first: baseline, down, recovered, tool_added, tool_removed, tool_changed, blocking_finding and paused, each with its detail. Pass monitor_id for one monitor. Free.

GET/api/hub/v1/mcp/monitors/events

also POST /api/hub/v1/tools/fp.mcp.monitor.events/call

Deadline 12s

Input

  • monitor_idstringOptional · uuid
  • limitintegerOptional

Request

curl https://businessmcp.com/api/hub/v1/mcp/monitors/events?limit=5 \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY"

Example data

{
  "events": [
    {
      "id": 1,
      "monitor_id": "5f0c…",
      "kind": "tool_changed",
      "detail": {
        "tools": [
          "search"
        ]
      },
      "created_at": "2026-09-28T09:00:00Z"
    }
  ]
}

Update an MCP monitor

id fp.mcp.monitor.updatemcp mcp_monitor_update

Free

Change how often a monitor checks, pause or resume it (resuming also restarts a monitor that paused for billing or repeated failures), or replace or remove its stored bearer token. Free.

POST/api/hub/v1/mcp/monitors/{monitor_id}

also POST /api/hub/v1/tools/fp.mcp.monitor.update/call

Deadline 12s

Input

  • monitor_idstringRequired · uuid
  • intervalstringOptional
  • statusstringOptional — paused stops checks and charges; active resumes, including a monitor paused for billing.
  • bearervalueOptional — A new bearer token, or null to remove the stored one.

Request

curl -X POST https://businessmcp.com/api/hub/v1/mcp/monitors/8a1f2c3d-0000-4000-8000-000000000001 \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"status":"paused"}'

Example data

{
  "monitor": {
    "id": "8a1f…",
    "status": "paused"
  }
}

Delete an MCP monitor

id fp.mcp.monitor.deletemcp mcp_monitor_delete

Free

Delete a monitor: checks and charges stop at once and its stored bearer token is erased. Its event history stays readable. Free.

POST/api/hub/v1/mcp/monitors/{monitor_id}/delete

also POST /api/hub/v1/tools/fp.mcp.monitor.delete/call

Deadline 12s

Input

  • monitor_idstringRequired · uuid

Request

curl -X POST https://businessmcp.com/api/hub/v1/mcp/monitors/8a1f2c3d-0000-4000-8000-000000000001/delete \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{}'

Example data

{
  "deleted": true
}

People data

People search

id fp.people.searchmcp people_search

$0.08 per item, only when a result is found

List named people at a company domain, decision-makers first (c_level, vp, director) unless you pass seniority. Filter by department or a title substring. Returns name, title, seniority, department, LinkedIn profile, work email with its status (valid, catch_all or unknown) and location. People in the EU, EEA, UK or Switzerland, people we cannot place, and anyone who opted out are never returned. Charged per person returned; the rest of the limit is refunded.

POST/api/hub/v1/people/search

also POST /api/hub/v1/tools/fp.people.search/call

Deadline 12s · 60 calls a minute per key · paid from purchased balance only; never covered by the free trial

Input

  • domainstringRequired · max 253 chars
  • senioritystring[]Optional · 0–6 items
  • departmentstringOptional · max 40 chars
  • title_containsstringOptional · max 60 chars
  • limitintegerOptional

Request

curl -X POST https://businessmcp.com/api/hub/v1/people/search \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"acme-logistics.com","seniority":["vp","director"],"limit":5}'

Example data

{
  "domain": "acme-logistics.com",
  "people": [
    {
      "full_name": "Jordan Rivera",
      "first_name": "Jordan",
      "last_name": "Rivera",
      "title": "VP of Sales",
      "seniority": "vp",
      "department": "sales",
      "company_domain": "acme-logistics.com",
      "linkedin_url": "linkedin.com/in/jordan-rivera-example",
      "email": "jordan.rivera@acme-logistics.com",
      "email_status": "valid",
      "email_confidence": 92,
      "location": "Dallas, Texas, United States",
      "country": "US"
    }
  ],
  "withheld": {
    "jurisdiction": 1,
    "opted_out": 0
  }
}

Email finder

id fp.people.email_findermcp email_finder

$0.04 per call, only when a result is found

Find the work email for a named person at a company domain. Returns the stored address with its status when we hold the person, otherwise the company email pattern applied to the name (email_status "pattern": built, never checked, verify before sending). Never returns people in the EU, EEA, UK or Switzerland, companies we cannot place, or opted-out addresses. Charged only when an address is returned.

POST/api/hub/v1/people/email-finder

also POST /api/hub/v1/tools/fp.people.email_finder/call

Deadline 12s · 60 calls a minute per key · paid from purchased balance only; never covered by the free trial

Input

  • domainstringRequired · max 253 chars
  • first_namestringRequired · max 60 chars
  • last_namestringRequired · max 60 chars

Request

curl -X POST https://businessmcp.com/api/hub/v1/people/email-finder \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"domain":"acme-logistics.com","first_name":"Jordan","last_name":"Rivera"}'

Example data

{
  "found": true,
  "person": {
    "full_name": "Jordan Rivera",
    "first_name": "Jordan",
    "last_name": "Rivera",
    "title": "VP of Sales",
    "seniority": "vp",
    "department": "sales",
    "company_domain": "acme-logistics.com",
    "linkedin_url": "linkedin.com/in/jordan-rivera-example",
    "email": "jordan.rivera@acme-logistics.com",
    "email_status": "valid",
    "email_confidence": 92,
    "location": "Dallas, Texas, United States",
    "country": "US"
  }
}

Person enrichment

id fp.people.enrichmcp person_enrich

$0.10 per call, only when a result is found

Look up one person by work email or by LinkedIn profile URL. Returns name, title, seniority, department, employer domain, LinkedIn profile and work email with its status. Never returns people in the EU, EEA, UK or Switzerland, people we cannot place, or anyone who opted out. Charged only when a person is found.

POST/api/hub/v1/people/enrich

also POST /api/hub/v1/tools/fp.people.enrich/call

Deadline 12s · 60 calls a minute per key · paid from purchased balance only; never covered by the free trial

Input

  • emailstringOptional · email · max 320 chars
  • linkedin_urlstringOptional · max 300 chars

Request

curl -X POST https://businessmcp.com/api/hub/v1/people/enrich \
  -H "Authorization: Bearer $BUSINESSMCP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email":"jordan.rivera@acme-logistics.com"}'

Example data

{
  "found": true,
  "person": {
    "full_name": "Jordan Rivera",
    "first_name": "Jordan",
    "last_name": "Rivera",
    "title": "VP of Sales",
    "seniority": "vp",
    "department": "sales",
    "company_domain": "acme-logistics.com",
    "linkedin_url": "linkedin.com/in/jordan-rivera-example",
    "email": "jordan.rivera@acme-logistics.com",
    "email_status": "valid",
    "email_confidence": 92,
    "location": "Dallas, Texas, United States",
    "country": "US"
  }
}

Ready to call it?

Prepaid, with $5 free for 7 days to start. Looking for the workspace endpoint instead? That is the platform API reference.

Get an API key