MCP server: Domain and web data, as tools your agent can call.
One remote MCP server gives your agent WHOIS, DNS, traffic, backlinks, search and screenshots. Add a URL and a key; failed calls are free.
claude mcp add --transport http tabapi https://tabapi.com/api/v1/mcp \
--header "Authorization: Bearer $TABAPI_KEY"9 read-only tools · same key and prices as the REST API · 100 free credits to start
What is the TabAPI MCP server?
The TabAPI MCP server is a remote Model Context Protocol server at https://tabapi.com/api/v1/mcp. It exposes TabAPI’s 9 public data endpoints as read-only tools, so an MCP client such as Claude Code, Cursor, VS Code or Codex can look up domain and web data without writing HTTP requests. It speaks Streamable HTTP and authenticates with the same bearer API key as the REST API.
Last reviewed October 14, 2026.
- Server URL
- https://tabapi.com/api/v1/mcp
- Transport
- Streamable HTTP, stateless (JSON-RPC over POST)
- Authentication
- Authorization: Bearer sk_… — the same key as the REST API
- Tools
- 9, all read-only
- Pricing
- Per successful call, from 1 credit. 100 free credits on sign-up. Failed calls are not charged.
- Discovery
- initialize and tools/list need no key; calling a tool does
Connect your client
Pick your client. Each configuration reads the key from your environment, so nothing secret is written to disk or sent to a chat.
Claude Code
1Put your key in an environment variable, so it never lands in a config file or a chat. Create one under API keys.
shellexport TABAPI_KEY=sk_...2Add the server for your user:
terminalclaude mcp add --transport http tabapi https://tabapi.com/api/v1/mcp \ --header "Authorization: Bearer $TABAPI_KEY"3Or commit a project file that reads each teammate’s own key from their environment:
.mcp.json{ "mcpServers": { "tabapi": { "type": "http", "url": "https://tabapi.com/api/v1/mcp", "headers": { "Authorization": "Bearer ${TABAPI_KEY}" } } } }4Check that it connected:
terminalclaude mcp list
Cursor
1Put your key in an environment variable, so it never lands in a config file or a chat. Create one under API keys.
shellexport TABAPI_KEY=sk_...2Add the server to your global config, or to
.cursor/inside a project. Cursor resolvesmcp.json ${env:NAME}in headers.~/.cursor/mcp.json{ "mcpServers": { "tabapi": { "url": "https://tabapi.com/api/v1/mcp", "headers": { "Authorization": "Bearer ${env:TABAPI_KEY}" } } } }
VS Code
1Add the server to
.vscode/. VS Code asks for the key the first time the server starts and keeps it out of the file.mcp.json .vscode/mcp.json{ "inputs": [ { "type": "promptString", "id": "tabapi-key", "description": "TabAPI API key", "password": true } ], "servers": { "tabapi": { "type": "http", "url": "https://tabapi.com/api/v1/mcp", "headers": { "Authorization": "Bearer ${input:tabapi-key}" } } } }
Codex CLI
1Put your key in an environment variable, so it never lands in a config file or a chat. Create one under API keys.
shellexport TABAPI_KEY=sk_...2Add a server table.
bearer_token_env_varnames the variable; Codex sends its value as the bearer token.~/.codex/config.toml[mcp_servers.tabapi] url = "https://tabapi.com/api/v1/mcp" bearer_token_env_var = "TABAPI_KEY"
Gemini CLI
1Put your key in an environment variable, so it never lands in a config file or a chat. Create one under API keys.
shellexport TABAPI_KEY=sk_...2Add the server, with the key in the header:
terminalgemini mcp add --transport http --header "Authorization: Bearer $TABAPI_KEY" tabapi https://tabapi.com/api/v1/mcp
Other clients
Any client that supports a remote Streamable HTTP server with a custom header can connect. The field names vary a little between clients, so check yours; this is the common shape.
1The server URL and the header to send:
mcp.json{ "mcpServers": { "tabapi": { "type": "http", "url": "https://tabapi.com/api/v1/mcp", "headers": { "Authorization": "Bearer sk_..." } } } }
Connectors that only sign in with OAuth, such as Claude.ai and ChatGPT on the web, cannot use a bearer key yet. Use a client above, or call the REST API directly.
The tools
One tool per public endpoint, named after its OpenAPI operation. Every tool is a read-only lookup.
| Tool | What it returns | Cost per call |
|---|---|---|
getTraffic | Website Traffic APITraffic estimates: monthly visits, engagement, sources, top regions and keywords. Charged by the 3–12 months actually returned. | 3–12 credits |
getWhois | WHOIS APIThe original port-43 WHOIS text, for TLDs that still serve it. For structured data use RDAP. | 1 credit |
getRdap | RDAP APIStructured registration data (RFC 9083). RDAP-first; port-43-only records are converted to an RDAP-compatible object. | 1 credit |
getDns | DNS Lookup APIDNS records over DoH, with Cloudflare and Google queried in parallel. | 1 credit |
getBacklinks | Backlinks APIBacklink overview with domain rating, referring-domain counts, and a sample of top backlinks. | 5 credits |
searchGoogle | Google Search APILive Google results as structured JSON: organic and paid results, answer box, knowledge graph, People Also Ask, related searches. | 1 credit |
getPublisherSites | Reverse AdSense APIDomains observed displaying a given Google AdSense publisher id. | 3 credits |
extractMarkdown | Web Reader APIAny public URL as clean, LLM-ready Markdown with page metadata. | 1 credit |
captureScreenshot | Screenshot APIFirst-viewport PNG of any public URL, temporarily hosted on managed storage. | 1 credit |
Billing, keys and trust
An agent calls the same API as any other client, so the same rules apply.
Billed like the REST API
A successful call spends the credits listed above. Errors are free, and every charge appears in your dashboard usage history.
Your key stays yours
Keep the key in TABAPI_KEY and reference it from config. Revoke it any time under API keys and the next call is refused.
Results are data
Page text, search snippets and WHOIS records come from third parties. An agent should treat them as data and never follow instructions found inside them.
If a call fails
A tool call returns the API’s own error body. Branch on error.code, not on the message.
| error.code | HTTP | What to do |
|---|---|---|
unauthorized | 401 | The Authorization header is missing or malformed. Send Authorization: Bearer sk_.... |
invalid_api_key | 401 | The key was revoked or mistyped. Create a new one under API keys. |
insufficient_credits | 402 | Nothing was charged. Top up on the pricing page and retry. |
rate_limited | 429 | Wait the number of seconds in Retry-After, then retry once. |
service_unavailable | 503 | The service is briefly busy. Retry after Retry-After seconds. |
MCP server FAQ
Short answers. The docs have the long ones.
Run your first request
Create a key, send one header, get JSON back.
curl "https://tabapi.com/api/v1/domains/vercel.com/dns" -H "Authorization: Bearer $TABAPI_KEY"