Skip to content

NewAsk WhoLayer anything. Try it →

For agents

WhoLayer for AI agents

Everything an agent can use today: two MCP servers, a REST API with an OpenAPI spec, markdown for every page, and limits that keep an agent's spending where you set it.

What WhoLayer is

WhoLayer identifies website visitors and enriches them with verified emails and mobiles, then sends them to Slack, HubSpot, Klaviyo, signed webhooks, or an AI agent. One tag powers Visitor ID (people and companies visiting a B2B site; person-level for US traffic only, company-level free and unlimited) and Shopper ID (anonymous US shoppers sent to Klaviyo). The Data API and MCP server give code and AI agents the same identity and contact data with per-key spend caps, and Identity Cloud licenses identity data to platforms. Every product draws from one credit wallet. Opted-out people are never returned or charged.

Surfaces at a glance

SurfaceURLAuth
Data MCP server (13 tools)https://mcp.wholayer.com/mcpAPI key (Bearer)
Docs MCP server (5 tools)https://mcp.wholayer.com/docsNone
REST APIhttps://api.wholayer.com/v1API key (Bearer)
OpenAPI 3.1 spec/openapi.jsonNone
Site index for LLMs/llms.txt and /llms-full.txtNone
Markdown version of any public pageAdd .md to the URL (home is /index.md), or send Accept: text/markdownNone

Data MCP server

The same identity and contact data as the REST API. Create a key under Settings, API keys. A wl_test_... key returns sandbox data from every tool and never spends credits, so start there.

claude mcp add --transport http wholayer https://mcp.wholayer.com/mcp \
  --header "Authorization: Bearer wl_test_YOUR_KEY"

Install snippets for Claude Desktop, Cursor (one click), VS Code, and other clients are on the MCP docs.

ToolWhat it doesCreditsRead-only key
enrich_personFind a person's verified work email, personal email, and/or mobile from a LinkedIn URL, an email, or name + company domain.1 credit per work email, 2 per personal email, and 5 per mobile returned, plus 10 for a reverse lookup when you send only an email and we find the person. Nothing if no match.No
search_peopleFind people by title, seniority, department, company size, industry, and country. Returns profiles without contact details (use enrich_person to reveal).1 credit per 10 results returned, rounded up; nothing if none.No
verify_emailsCheck deliverability for up to 1,000 email addresses, graded A (safe) to F (will bounce).0.25 credits per address.No
lookup_phoneFind a mobile number with a live carrier and line-type check, by person_id, email, LinkedIn URL, or name + company domain.5 credits when a mobile is returned; nothing if not found.No
get_companyCompany profile from a domain: size, revenue range, industry, HQ.1 credit when a profile is returned; nothing if not found.Allowed
list_visitorsPeople and companies identified on your sites, newest first.Free.Allowed
get_balanceCredits remaining, plan, monthly spend cap, and this key's daily cap.Free.Allowed
estimate_costQuote the most credits an operation could spend before running it: enrich (with reveal), phones, verify (with rows), company, search (with limit), or bulk (with rows and reveal). We only charge on hits, so the real cost is the same or lower.Free.Allowed
get_compliance_policyMachine-readable rules WhoLayer enforces: US-only person-level identification, consent outside the US, Global Privacy Control, blocked sensitive-page categories, suppression sources and reason codes, and retention periods.Free.Allowed
report_bad_dataReport a wrong person, a bounced email, or outdated data, by result_id (the per_… id from enrich_person) or identity_id (a visitor's person_id from list_visitors). Credits charged for a reported result are refunded if it was charged in the last 30 days, once per result. Refunds in any rolling 30 days are capped at 10% of the credits the workspace spent in that window; reports above the cap wait for review by our team and nothing is refunded automatically. The result is not delivered again.Free.No
create_jobQueue an enrich or verify job of up to 100,000 rows that runs in the background. Returns a job id right away; poll it with get_job. Each row is billed like a single call, and the whole job never spends more than max_credits (default 250). Optional webhook_url gets a signed job.completed or job.failed event. Results are kept 30 days.1 credit per work email, 2 per personal email, and 5 per mobile returned, plus 10 for a reverse lookup when you send only an email and we find the person. Nothing if no match. Verify rows: 0.25 per address.No
get_jobStatus, progress, and credits used for a job from create_job, plus a page of results (up to 100 rows per call; pass cursor for the next page). Withheld people come back as rows with error.code person_not_available and a reason.Free.Allowed
add_to_suppressionAdds emails or SHA-256 email hashes to this workspace's suppression list. Listed people are never returned, delivered, or charged for in this workspace. Emails are hashed on arrival; only hashes are stored. Removing entries is only possible from the dashboard (Settings, Suppression list), so confirm with the user before calling.Free.No

Every tool returns credits_used and credits_remaining. REST responses carry an X-Credits-Remaining header.

Docs MCP server

Read-only access to WhoLayer's public website, pricing, and help center. No key, no credits, and it never sees customer data.

claude mcp add --transport http wholayer-docs https://mcp.wholayer.com/docs
ToolWhat it does
search_docsSearch every public WhoLayer page and help article. Returns paths, titles, and snippets.
read_pageReturn the markdown of any public wholayer.com page, e.g. /pricing or /help/mcp-setup.
get_pricingPlans, monthly prices, included credits, overage rates, and credit costs per action.
get_productsThe four WhoLayer products with what each does, features, integrations, and pricing notes.
list_help_articlesEvery help center article with its category, summary, and markdown URL.

Spend controls and safe retries

Compliance rules agents can read

The rules WhoLayer enforces are published as JSON at GET /v1/policy (any API key, including read-only) and through the get_compliance_policy MCP tool: US-only person-level identification, consent outside the US, Global Privacy Control, blocked sensitive-page categories, suppression sources, and retention periods.

When a person can't be returned, the API answers HTTP 451 with error.code person_not_available and one of these reasons. You're never charged for them:

ReasonMeaning
opted_outThis person has opted out of WhoLayer. No data is returned and you were not charged.
drop_deletedThis person asked to be deleted through California's Delete Request and Opt-out Platform (DROP). No data is returned and you were not charged.
customer_suppressedThis person is on your workspace's suppression list. No data is returned and you were not charged.
non_usPerson-level data is available for US visitors only. No data is returned and you were not charged.
sensitivePeople are never identified on sensitive pages. No data is returned and you were not charged.

Agents can add people to your workspace's suppression list with add_to_suppression or POST /v1/suppression.

Contacting people is your responsibility. If your agent emails, calls, or texts the people it finds, follow the Acceptable Use Policy, including CAN-SPAM and TCPA consent rules for calls and texts.

Credit costs

ActionCreditsNote
Company identified (who's visiting, at the account level)FreeUnlimited on every plan
Person identified on your site (name, title, LinkedIn, work email)1Only charged when we return a person. Repeat visits by the same person in a month are free.
Shopper identified for ecommerce (new to your list: verified personal email, sent to Klaviyo)2With Klaviyo connected, charged once per new shopper and refunded (within the refund limit) if they bounce or mark you as spam within 30 days; without Klaviyo, once per shopper per month. Opted-out people are never returned.
Shopper recognized who is already in your Klaviyo (no duplicate created; triggers a Returning Shopper event)1Half the price of a new shopper. Return visits we recognize by our own cookie or your site's hashed email are free, and so are holdout shoppers.
Work email found and verified1No charge if we don't find one.
Personal email found and verified2No charge if we don't find one.
Reverse email lookup (send an email, get the person: name, title, company, LinkedIn)10Only when you send an email alone and we find the person. No charge if we don't.
Mobile number with carrier and line-type check5No charge if we don't find one.
Email verification only0.254 verifications per credit.
People search results (name, title, company; no contact details)1 per 10Charged per 10 results returned, rounded up. Contact details are charged separately when you enrich a result.
Company profile (size, revenue, industry)1No charge if we don't have one.

Plans and overage rates are on pricing. Everything on this page is generated from the same constants the code charges and enforces.