TAM Graph PricingFAQBlogDocsSign in

2026-09-02

Querying TAM Graph from Claude over MCP

TAM Graph ships a single-file MCP server. It is a thin wrapper over the REST API at https://api.tamgraph.com, so anything the server can do you can also do with curl. The file is served at https://tamgraph.com/mcp_server.py.

What you need

An API key. Sign up at api.tamgraph.com/login; the key is issued instantly. Adding a card activates the trial of 50 requests, and the card is not charged during the trial. Pass the key to the server as TAMGRAPH_API_KEY.

Registering the server

The script carries PEP 723 inline metadata, so uv installs its dependencies into a throwaway environment and can run it straight from the URL. Add this to your MCP config — claude_desktop_config.json for Claude Desktop, .mcp.json in your project for Claude Code:

{
  "mcpServers": {
    "tamgraph": {
      "command": "uv",
      "args": ["run", "https://api.tamgraph.com/mcp_server.py"],
      "env": { "TAMGRAPH_API_KEY": "tg_live_..." }
    }
  }
}

Restart the client afterwards. A local absolute path to the file works the same way. The server speaks MCP over stdio, so running it by hand just blocks waiting for a client.

The four tools

  • list_datasets — the catalog: every directly queryable dataset with its size, allowed filters and query hints. Call it first; it costs nothing on the trial.
  • search — search one dataset. Datasets are companies (36M global companies), local (2.3M US local businesses with emails), places (7.2M US local businesses from Google Maps), ecommerce (2.9M online stores with revenue estimates and installed apps), startups (1.7M companies with funding data) and saas (170k SaaS companies).
  • company — the merged record for one domain across every dataset, including generic emails and the email pattern.
  • email_pattern — the naming pattern for a domain (for example first.last), known generic inboxes and MX records.

What a filter looks like

Filters accept exact values, lists (which OR together) and _gte/_lte suffixes on numeric and date fields. An unknown field returns 400 with the allowed list, which is why list_datasets is the first call. The same query over HTTP:

curl -X POST https://api.tamgraph.com/v1/search/ecommerce \
  -H "X-API-Key: $KEY" -H "Content-Type: application/json" \
  -d '{"filters": {"platform": "Shopify", "country": "US",
        "monthly_sales_gte": 100000}, "limit": 5}'

Limits

5 requests per second on both the trial and Pro. Query timeout 20 seconds. On Pro, usage is metered on records returned and requests that return zero results are free; on the trial each data call spends one of the 50, while the catalog and job-status polls spend nothing. Fair use on Pro is 500,000 records a day, with no monthly cap and no credits.

← All posts