Tools, prompts, and resources
The remote MCP server has 28 tools, each of which uses your Tomba account. This page lists every tool with its parameters as the server validates them, followed by the prompts and resources. The local server differs in the ways listed under Local server differences.
Conventions
- Tool and parameter names are snake_case. Leave out optional parameters rather than sending
null. - The server checks arguments against each tool's input schema before it calls the API. Invalid arguments return a tool error; see Errors.
- The parameter tables use these formats:
- Domain: a domain name such as
stripe.com, without a scheme or path. It must match^[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$. - Country: two uppercase letters, as in ISO 3166-1 alpha-2, such as
US. - Phone: an optional
+and 2 to 15 digits, the first of which isn't 0, with no spaces, such as+14155552671. - Public URL: an
httporhttpsURL whose host isn'tlocalhostor a private IPv4 address.
- Domain: a domain name such as
- Each tool returns the API response as
structuredContentin the form{"data": <response>}, and the same JSON as text. The response fields are those of the API endpoint listed for the tool. - A tool call is billed as the API request it makes; see Credit costs. With OAuth, a tool needs the scope of its endpoint; see OAuth 2.0.
create_flagandcreate_leadchange data in your account. Every other tool carries the annotationreadOnlyHint: true, and all tools carryopenWorldHint: true. Clients that read annotations, such as ChatGPT, ask you to confirm the two write tools.- Where a tool accepts
webhook_url, the API also sends the result to that URL; see Per-request callbacks.
A tools/call request looks like this. limit is a string, not a number:
Code
Find email addresses
domain_search
Finds the email addresses Tomba has for a company, by domain or company name. Calls GET /v1/domain-search.
| Parameter | Type | Required | Rules |
|---|---|---|---|
domain | string | domain or company | Domain |
company | string | domain or company | 3 to 75 characters |
limit | string | No | "10", "20", or "50". Default "10". |
page | number | No | 1 or more |
department | string | No | A department, such as executive, it, or marketing. The tomba://data/departments resource lists common values. |
country | string | No | Country |
enrich_mobile | boolean | No | Accepted but not passed to the API, so it has no effect |
webhook_url | string | No | Public URL |
email_finder
Finds a person's email address from their name and company. Calls GET /v1/email-finder.
| Parameter | Type | Required | Rules |
|---|---|---|---|
domain | string | domain or company | Domain |
company | string | domain or company | 3 to 75 characters |
full_name | string | full_name, or both first_name and last_name | At least 1 character |
first_name | string | See full_name | At least 1 character |
last_name | string | See full_name | At least 1 character |
enrich_mobile | boolean | No | true also looks up the phone number of the address found |
webhook_url | string | No | Public URL |
author_finder
Finds the email address of an article's author. Calls GET /v1/author-finder.
| Parameter | Type | Required | Rules |
|---|---|---|---|
url | string | Yes | Public URL of the article |
webhook_url | string | No | Public URL |
linkedin_finder
Finds the email address that belongs to a LinkedIn profile. Calls GET /v1/linkedin.
| Parameter | Type | Required | Rules |
|---|---|---|---|
url | string | Yes | Public URL that contains linkedin.com |
enrich_mobile | boolean | No | true also looks up the phone number of the address found |
webhook_url | string | No | Public URL |
email_count
Counts the email addresses Tomba has for a domain. Calls GET /v1/email-count.
| Parameter | Type | Required | Rules |
|---|---|---|---|
domain | string | Yes | Domain |
email_format
Returns the patterns a domain uses to build email addresses. Calls GET /v1/email-format.
| Parameter | Type | Required | Rules |
|---|---|---|---|
domain | string | Yes | Domain |
email_sources
Lists the web pages where Tomba found an email address. Calls GET /v1/email-sources.
| Parameter | Type | Required | Rules |
|---|---|---|---|
email | string | Yes | Email address |
Verify
email_verifier
Checks whether an email address can receive mail. Calls GET /v1/email-verifier. The status and result values are explained in Email verifier response.
| Parameter | Type | Required | Rules |
|---|---|---|---|
email | string | Yes | Email address |
enrich_mobile | boolean | No | true also looks up the phone number of the address |
webhook_url | string | No | Public URL |
domain_status
Checks whether a domain belongs to a webmail or disposable email provider. Calls GET /v1/domain-status.
| Parameter | Type | Required | Rules |
|---|---|---|---|
domain | string | Yes | Domain |
Enrich
email_enrichment
Returns the person and company behind an email address. Calls GET /v1/enrich.
| Parameter | Type | Required | Rules |
|---|---|---|---|
email | string | Yes | Email address |
person_enrichment
Returns a person's profile from their email address. Calls GET /v1/people/find.
| Parameter | Type | Required | Rules |
|---|---|---|---|
email | string | Yes | Email address |
company_enrichment
Returns a company's profile from its domain. Calls GET /v1/companies/find.
| Parameter | Type | Required | Rules |
|---|---|---|---|
domain | string | Yes | Domain |
combined_enrichment
Returns the person and company profiles for an email address in one call. Calls GET /v1/combined/find.
| Parameter | Type | Required | Rules |
|---|---|---|---|
email | string | Yes | Email address |
Phone numbers
phone_finder
Finds phone numbers from an email address, a domain, or a LinkedIn profile. Calls GET /v1/phone, which behaves like GET /v1/phone-finder.
| Parameter | Type | Required | Rules |
|---|---|---|---|
email | string | At least one of email, domain, or linkedin | Email address |
domain | string | See email | Domain |
linkedin | string | See email | Public URL that contains linkedin.com |
full | boolean | No | true returns every phone number found instead of one |
webhook_url | string | No | Public URL |
phone_validator
Validates a phone number. Calls GET /v1/phone-validator.
| Parameter | Type | Required | Rules |
|---|---|---|---|
phone | string | Yes | Phone |
Companies and domains
companies_search
Searches Tomba's company database with a text query and filters. Calls POST /v1/reveal/search.
| Parameter | Type | Required | Rules |
|---|---|---|---|
query | string | No | 8 to 100 characters |
filters | object | No | See below |
page | number | No | 1 to 1000. Default 1. |
webhook_url | string | No | Public URL. The API ignores it for this endpoint. |
filters accepts the keys location_country, location_city, location_state, industry, size, type, keywords, founded, technologies, similar, revenue, sic, and naics. Each key takes an object with include and exclude arrays of strings. The accepted values are described in the request body of Search companies.
Code
similar_finder
Finds companies similar to a domain. Calls GET /v1/similar.
| Parameter | Type | Required | Rules |
|---|---|---|---|
domain | string | Yes | Domain |
technology_finder
Lists the technologies a website uses. Calls GET /v1/technology.
| Parameter | Type | Required | Rules |
|---|---|---|---|
domain | string | Yes | Domain |
autocomplete
Suggests companies, with their domains and logos, for a partial company name. Calls GET /v1/domain-suggestions.
| Parameter | Type | Required | Rules |
|---|---|---|---|
query | string | Yes | 1 to 100 characters |
location
Counts a company's employees by country. Calls GET /v1/location.
| Parameter | Type | Required | Rules |
|---|---|---|---|
domain | string | Yes | Domain |
Account
account_info returns your API secret, in secret_token, and list_keys
returns the full value of every API key in your workspace. Like any tool
result, both reach the assistant and your model provider. Turn these tools
off in your client if the assistant doesn't need them.
account_info
Returns your account details, plan, and usage. Calls GET /v1/me. It takes no parameters.
usage_info
Returns your API usage. Calls GET /v1/usage. It takes no parameters. It needs key authentication and fails when you signed in with OAuth.
list_keys
Lists the API keys of your workspace. Calls GET /v1/keys. It takes no parameters.
get_logs
Returns your recent API requests. Calls GET /v1/logs. It needs key authentication and fails when you signed in with OAuth.
| Parameter | Type | Required | Rules |
|---|---|---|---|
page | number | No | Page of results |
limit | number | No | Results per page |
Leads and flags
list_leads
Lists your leads. Calls GET /v1/leads.
| Parameter | Type | Required | Rules |
|---|---|---|---|
page | number | No | Page of results |
limit | number | No | Results per page |
domain | string | No | Return only leads at this domain |
create_lead
Adds a lead to one of your lead lists. This tool changes data. Calls POST /v1/leads.
| Parameter | Type | Required | Rules |
|---|---|---|---|
email | string | Yes | Email address |
list_id | integer | Yes | ID of the lead list, 1 or more |
first_name | string | No | |
last_name | string | No | |
company | string | No | |
position | string | No | Job title |
list_flags
Lists the reports of incorrect data you've submitted, with their status. Calls GET /v1/flag.
| Parameter | Type | Required | Rules |
|---|---|---|---|
page | integer | No | 1 or more |
limit | integer | No | 1 to 100 |
create_flag
Reports incorrect data, such as an address that bounced. This tool changes data. Calls POST /v1/flag. Which reports earn a credit back is explained in Refunds for incorrect data.
| Parameter | Type | Required | Rules |
|---|---|---|---|
flag_type | string | Yes | email, organization, phone, author_url, or website |
value | string | Yes | 2 to 255 characters: the email address, domain, phone number, or URL you report |
reason | string | Yes | hard_bounce, invalid_email, wrong_person, outdated, other, wrong_company, wrong_phone, or broken_url. The API accepts only the reasons that apply to the flag_type; see Flag incorrect data. |
comment | string | No | Up to 1,000 characters |
Prompts
Prompts are message templates that start a multi-step task with the tools. Clients show them as commands or templates, and ask for the arguments. Arguments are text.
| Prompt | Required arguments | Optional arguments | Task |
|---|---|---|---|
lead-research | domain | targetDepartment | Find, verify, and enrich contacts at one company |
find-person | firstName, lastName, company | Find, verify, and enrich one person's email address and phone number | |
email-verification | emails (comma-separated) | Verify a list of addresses and report on each | |
content-outreach | urls (comma-separated article URLs) | Find and verify the authors of articles | |
competitor-analysis | domain | depth | Find similar companies and compare their technologies and contacts |
account-based-marketing | domain, productService | targetPersonas, campaignGoal | Plan an account-based campaign for one company |
investor-research | targetCompanyDomain, yourCompanyDescription, fundingStage | industryFocus | Research an investment firm and its contacts |
hiring-outreach | targetCompanies, roleTitle, targetDepartment | yourCompanyDomain | Find candidates for a role at target companies |
partnership-research | yourDomain, partnershipType | targetIndustry, targetSize | Find potential partners and their contacts |
market-research | seedCompany, industryName | researchFocus, numberOfCompanies | Analyze companies in a market, starting from one company |
sales-territory-mapping | accountDomains, productCategory | averageDealSize, quarterlyTarget | Plan coverage of a list of target accounts |
due-diligence | targetDomain, purpose | depth | Research a company before a decision such as an investment, an acquisition, or a partnership |
The server lists optional arguments that have a default value as required, so your client may ask for them. Arguments with a fixed set of values reject anything else, and the error lists the allowed values.
numberOfCompanies and quarterlyTarget are numbers in the server's schema, but clients send every prompt argument as text, and the server rejects text for them. Leave both empty; numberOfCompanies then defaults to 10.
Resource URIs
| URI | Contents |
|---|---|
tomba://api/status | Your account details from GET /v1/me, as JSON. Like account_info, it includes your API secret. |
tomba://data/departments | Common values for the department parameter of domain_search, as JSON |
tomba://docs/api-reference | A short Markdown overview of the tools and authentication methods. It covers only 12 tools and uses some outdated parameter names; use tools/list for the current schemas. |
Local server differences
The local MCP server, @tomba-io/tomba-mcp-server, has the same 28 tools, under the same names. This section describes version 1.2.0.
| Remote server | Local server | |
|---|---|---|
| Authentication | OAuth or API key, sent by the client | TOMBA_API_KEY and TOMBA_SECRET_KEY environment variables |
| Result format | structuredContent {"data": <response>}, and the same JSON as text | Text only: JSON of the form {"data": <response>, "rateLimit": {...}} |
| Rate limit information | Not passed to the client | In the rateLimit object of every result |
| Retries | Up to 3 attempts on 429 and 5xx | None |
| Timeout | 120 seconds per attempt | 120 seconds |
webhook_url | On the tools listed above | Not available |
| Prompts | 12, with kebab-case names | 16, with snake_case names |
| Resources | 3 | 7 |
Parameters that differ from the tables above:
email_findertakesfullName,firstName, andlastNamein camelCase.firstNameandlastNameaccept only ASCII letters, spaces, hyphens, and apostrophes, up to 50 characters; usefullNamefor other names.email_finder,email_verifier,email_enrichment, andlinkedin_finderlist anenrichMobileparameter, which version 1.2.0 doesn't pass to the API, so it has no effect.domain_searchaccepts only thedepartmentvalues listed in its schema.phone_validatorlists acountryparameter, which isn't passed to the API.companies_searchhas noqueryparameter. Its schema marksfiltersas required, accepts notechnologiesfilter, and limitsindustry,type,size, andrevenueto the values listed in the schema.list_flags,list_leads, andget_logsdefaultpageto 1 andlimitto 10.
The local server has these prompts:
| Prompt | Required arguments | Optional arguments |
|---|---|---|
find_contact | firstName, lastName, company | |
verify_email_list | emails | |
research_company | domain | department |
enrich_lead | email, linkedin | |
find_journalists | urls | |
finder_phone | email | linkedin |
validate_phone | phone | country |
competitor_analysis | domain | include_technology |
technology_audit | domain | include_similar |
domain_insights | domain | include_samples |
bulk_domain_research | domains | include_technology |
find_target_companies | location, industry, size, type, revenue | |
market_research | industry, location | size_range, revenue_range, company_type, include_contacts |
lead_generation | company_query | target_department, contact_role |
prospect_enrichment | company_name | location, get_technology, get_contacts |
industry_analysis | industry, location | company_sizes, revenue_ranges, company_types, include_technology |
And these resources. Reading one of the four with a {domain} or {email} part calls the API, and is billed like the matching tool:
| URI | Contents |
|---|---|
tomba://api/status | A fixed status message from the server. It doesn't call the API. |
tomba://domain/{domain} | A domain search for the domain, with limit "10" |
tomba://email/{email} | Email enrichment for the address |
tomba://similar/{domain} | Similar domains |
tomba://technology/{domain} | The domain's technologies |
tomba://docs/api | A short Markdown overview of the API |
tomba://docs/tools | A Markdown list of the tools |