The Companies API MCP server for AI agents

Live

API KEY

COMPANY DATA

CRM & Sales

The Companies API gives your agent company data for research and prospecting: search companies by filters or a plain-English prompt, enrich a company from its domain, email, or social profile, find lookalikes, and manage company lists.

  • Per-user credentials: each call uses the actual user's API key, never a shared bot.
  • Encrypted per-tenant vault: AES-256, resolved at request time, never in LLM context.
  • Scoped before every call: pre-call scope check, 90-day SIEM-exportable audit chain.
The Companies API
agent · Acme Q3
Run
Find SaaS companies in the United States with 50 to 200 employees.
S
thecompaniesapi_search_companies_by_prompt
134ms
Company research agent
Found 3,412 matching companies. The first page lists 25 with domain, industry, and employee range.
Sources: The Companies API search
thecompaniesapi
3,412 companies
18:29
Message Claude...

Tools your company data agent reaches for on The Companies API, scoped per user.

CALL ANY TOOL
34 tools for company data in The Companies API: search and count companies, enrich them by domain, email, or social profile, find lookalikes and email patterns, ask questions about a company, and manage lists and bulk jobs.
thecompaniesapi_ask_company
Ask company
Ask an AI question about a company, identified by its domain, and get a structured answer. Returns the answer (output values, explanation and confidence score) inside the prompt object, plus the model used and the credit cost. Use this for a specific fact that is not in the standard profile, such as which products a company sells. Use thecompaniesapi_get_company_context for a general overview.
Parameters
Name
Type
Required
Description
domain
string
Required
Company website domain, without protocol or path. Example: stripe.com
question
string
Required
The question to answer about the company. Example: What products does this company sell?
explain
boolean
Optional
Set to true to include an explanation of how the answer was reached. Defaults to false.
fields
array
Optional
Structured fields the answer must fill. Each field needs a key and a type (string, number, boolean, or array|string, array|number, array|boolean), and can add a description and a fixed set of allowed values. Omit to get a free-form answer. Example: [{"key": "products", "type": "array|string", "description": "The products the company sells"}]
model
string
Optional
AI model size: small (cheaper, faster) or large (more capable). Example: large. One of: `small`, `large`.
thecompaniesapi_count_companies
Count companies
thecompaniesapi_create_list
List create
thecompaniesapi_delete_list
List delete
thecompaniesapi_enrich_job_title
Enrich job title
thecompaniesapi_generate_search_query
Query generate search
thecompaniesapi_get_companies_analytics
Get companies analytics
thecompaniesapi_get_company
Get company
thecompaniesapi_get_company_by_email
Get company by email
thecompaniesapi_get_company_by_social
Get company by social
thecompaniesapi_get_company_context
Get company context
thecompaniesapi_get_company_email_patterns
Get company email patterns
thecompaniesapi_get_company_in_list
List get company in
thecompaniesapi_get_current_user
Get current user
thecompaniesapi_list_actions
List actions
thecompaniesapi_list_companies_in_list
List list companies in
thecompaniesapi_list_lists
List lists
thecompaniesapi_request_action
Request action
thecompaniesapi_retry_action
Retry action
thecompaniesapi_search_cities
Search cities
thecompaniesapi_search_companies
Search companies
thecompaniesapi_search_companies_by_name
Search companies by name
thecompaniesapi_search_companies_by_prompt
Search companies by prompt
thecompaniesapi_search_continents
Search continents
thecompaniesapi_search_countries
Search countries
thecompaniesapi_search_industries
Search industries
thecompaniesapi_search_similar_companies
Search similar companies
thecompaniesapi_search_similar_industries
Search similar industries
thecompaniesapi_search_states
Search states
thecompaniesapi_toggle_companies_in_list
List toggle companies in

For more tools, view docs.

Build your Agent
Same auth pattern across LangChain, OpenAI, Anthropic, and Google ADK.
Python · LlamaIndex
import { ScalekitClient } from "@scalekit-sdk/node";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

// The Companies API tools scoped to this user
const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["thecompaniesapi"], toolNames: [
    "thecompaniesapi_search_companies_by_prompt",
    "thecompaniesapi_get_company",
    "thecompaniesapi_create_list"] },
  pageSize: 100,
});

const agent = createReactAgent({ llm, tools });
await agent.invoke({ messages: [{ role: "user", content: "Find US SaaS companies with 50 to 200 employees and save them to a list" }] });
import OpenAI from "openai";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const openai = new OpenAI();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["thecompaniesapi"] }, pageSize: 100,
});

const res = await openai.chat.completions.create({
  model: "gpt-5",
  messages: [{ role: "user", content: "Find US SaaS companies with 50 to 200 employees and save them to a list" }],
  tools,
});

// Execute the tool call with the user's vaulted The Companies API key
await sk.tools.executeTool(res.choices[0].message.tool_calls[0], "user_123");
import Anthropic from "@anthropic-ai/sdk";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);
const anthropic = new Anthropic();

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["thecompaniesapi"] }, pageSize: 100,
});

const msg = await anthropic.messages.create({
  model: "claude-sonnet-5",
  max_tokens: 1024,
  messages: [{ role: "user", content: "Find US SaaS companies with 50 to 200 employees and save them to a list" }],
  tools,
});

// Tool call runs with the user's vaulted The Companies API key
await sk.tools.executeTool(msg.content, "user_123");
import { Agent } from "@google/adk/agents";
import { ScalekitClient } from "@scalekit-sdk/node";

const sk = new ScalekitClient(env.SCALEKIT_ENV_URL, env.SCALEKIT_CLIENT_ID, env.SCALEKIT_CLIENT_SECRET);

const { tools } = await sk.tools.listScopedTools("user_123", {
  filter: { connectionNames: ["thecompaniesapi"] }, pageSize: 100,
});

const agent = new Agent({
  name: "company_research_agent",
  model: "gemini-2.5-pro",
  instruction: "The Companies API tools scoped to this user",
  tools,
});

await agent.run("Find US SaaS companies with 50 to 200 employees and save them to a list");
Try these prompts
Copy any prompt into your agent. Each maps directly to a The Companies API tool. Click to copy, paste into your agent, done.
Search
Copy the prompt
Copied
Find SaaS companies in the United States with 50 to 200 employees.
Copy the prompt
Copied
How many companies in Germany use Shopify?
Copy the prompt
Copied
Find companies similar to northwind.io.
Enrich
Copy the prompt
Copied
Enrich contoso.com.
Copy the prompt
Copied
Which company is behind sam@fabrikam.com?
Copy the prompt
Copied
What email pattern does northwind.io use?
Lists and briefs
Copy the prompt
Copied
Create a list of lookalikes of our 5 best customers.
Copy the prompt
Copied
Give me a briefing on contoso.com's market and business model.
Copy the prompt
Copied
Break down my Target accounts list by industry.
SEE HOW AUTH WORKS
Each user connects their own The Companies API key once, and Scalekit sends it with every call. Keys stay vaulted, every call is scope checked, and every action is logged.
1
Authorize
Your user connects
The Companies API
once. We tie it to their identity and the meetings they approved — no shared bot account, no org-wide access
Who:
user ‘A’
when:
Once per user
access:
Limited to user
2
Store
Their
The Companies API
token lives in a vault scoped to them. User A's meetings are never reachable by an agent acting for user B, even on the same connection
vault:
encrypted
scope:
per-user
tokens:
auto-refreshed
3
Resolve
When your agent calls a
The Companies API
tool, we fetch the right token server-side. It never touches your agent, never appears in the LLM context, never shows up in your logs
speed:
~40ms
check:
before every call
seen by:
nobody
4
Audit
Every
The Companies API
tool call is logged — who triggered it, which meeting was fetched, what came back. 90 days of history, tied to the user who authorized it
history:
90 days
export:
SIEM-ready
logged:
every call
Test other agents
See the same per-user auth pattern across other sales and search connectors.
GTM and RevOps Teams
Outbound prospecting agent
Searches Apollo for prospects matching your ICP, scores and ranks them, drafts personalized outreach in Gmail, and logs every send to Google Sheets. Mail goes out as the rep, not from a shared inbox.
GTM and RevOps Teams
Competitive intelligence briefing agent
Scans Gong calls for competitor mentions, matches each one to its Notion battlecard, and DMs every affected rep a single Slack digest per cycle. Every call runs as the PMM who owns the briefing, never a shared bot.
Test other agents
See the same per-user auth pattern across other sales and search connectors.
SALES
Outbound prospecting agent
Search Apollo for ICP matches, rank them, draft personalised Gmail outreach, and log every send to Google Sheets.
GTM
Competitive intelligence briefing agent
Scan Gong calls for competitor mentions, match each one to its Notion battlecard, and DM every affected rep a single Slack digest.
Why Scalekit
Secure your agent's access. Connectors ship in minutes
01.
Shared tokens break per-user analytics
A shared The Companies API key looks fine in a demo. In production every enrichment and list change looks like one service account, and you cannot tell which user triggered it. Scalekit resolves the credential of the actual user who triggered the agent, never a shared bot.
// shared key
audit → bot_service_account

// scalekit
audit → user_abc ✓
02.
Authentication is not authorization
03.
Multi-tenancy is architectural
04.
The Companies API today. Ten connectors tomorrow.
“Our agents act across Salesforce, Gong, Google Drive, and more, on behalf of every customer. Scalekit behind the scenes meant we can keep adding tools without ever rebuilding how credentials or tool calling work.”
Venu Madhav Kattagoni
Head of Engineering / Von
FAQs
Frequently Asked Questions
Does the agent access The Companies API as the user or through a shared API key?
As the user. Each user connects their own The Companies API key once, and Scalekit sends it with every call. Audit logs attribute every search, enrichment, and list change to that user, not a shared service account.
Where is the The Companies API API key stored?
In Scalekit's managed AES-256 token vault, namespaced per tenant. To rotate it, the user reconnects with a new API key. Revocation is a single dashboard action. Credentials never appear in prompts, logs, or LLM context.
Can I limit what the agent does in The Companies API?
Yes. Filter by tool name in listScopedTools to expose only what you want, for example search and enrichment without thecompaniesapi_delete_list, which deletes a company list and cannot be undone, or thecompaniesapi_request_action, which starts bulk jobs. Scalekit also enforces scope checks before every API call.
What happens when a user revokes The Companies API access?
The connection is invalidated on the next tool call. Subsequent requests for that user fail closed with a clear error. Other users in the tenant remain unaffected. The event is logged for audit.
Can the agent search The Companies API in plain English?
Yes. thecompaniesapi_search_companies_by_prompt takes a description such as SaaS companies in the United States, and thecompaniesapi_generate_search_query turns a description into the filter conditions the other search tools take.
Start in your coding agent
Up and running in one command
Install the Scalekit skill in your editor of choice. Connector, auth, tools, prompt, all wired up
Claude Code REPL
/plugin marketplace add scalekit-inc/claude-code-authstack
/plugin install agentkit@scalekit-auth-stack
Cursor Code REPL
# ~/.cursor/mcp.json
{
""mcpServers"": {
""thecompaniesapi"": {
""url"": ""https://mcp.scalekit.com/thecompaniesapi"",
""headers"": { ""Authorization"": ""Bearer $SCALEKIT_TOKEN"" }
}
}
}
Codex Code REPL
# ~/.codex/config.toml
[mcp_servers.thecompaniesapi]
url = ""https://mcp.scalekit.com/thecompaniesapi""
auth_env = ""SCALEKIT_TOKEN""
Copilot Code REPL
# .vscode/mcp.json
{
""servers"": {
""thecompaniesapi"": {
""url"": ""https://mcp.scalekit.com/thecompaniesapi"",
""type"": ""http""
}
}
}