Developers and reviewers
Tools reference
What each tool in the Whimbrel MCP server takes, returns and changes, how it fails, and its limits.
Last updated October 13, 2026
Setup
- Endpoint:
https://data.whimbrelresearch.com, Streamable HTTP (JSON-RPC over POST). - Sign-in: OAuth 2.1 authorization code with PKCE (S256). Clients register by Dynamic Client Registration or a Client ID Metadata Document. Discovery is at
/.well-known/oauth-protected-resourceand/.well-known/oauth-authorization-server. Tokens are bound to the resourcehttps://data.whimbrelresearch.comand last 180 days. - Scope: one scope,
whimbrel. It covers the signed-in person's own account and memory, and the public company record. It never reaches another person's data. - API key: clients that cannot do OAuth send a Whimbrel key as
Authorization: Bearer. - Who can call what:
about_the_dataandget_accesswork without a plan. Every other tool needs an active Whimbrel plan (trial or paid) on the signed-in account. - Steps for each app: Connect your AI.
Read and write labels
Every tool carries readOnlyHint, destructiveHint and openWorldHint, and the same label is shown here.
| Label | Meaning | Tools |
|---|---|---|
| Read | Reads only. Changes nothing the person can see, except where a side effect is noted below. | company, news, find, people, openers, my_contacts, research_status, crm_export, about_the_data |
| Write | Adds to or updates the person's own memory or account. Earlier values are kept, and every item can be seen, changed or deleted on the Memory page. | today, remember, my_list, account, deep_record, get_access |
| Write, deletes (sensitive) | Deletes what the person told Whimbrel. Clients ask before each call. | forget |
No tool sends email, posts anything, moves money or contacts anyone. get_access only returns checkout links; nothing is charged until the person completes checkout on Stripe's page.
The tools
today: Today's plan
Write. Needs a plan.
- Inputs:
size(integer, 1 to 10): how many new companies. - Returns: follow-ups due, what changed this week at the person's accounts and clients, and new companies to reach out to. Each company comes with why now, the fit, who to contact and a first line, every fact with its source link.
- Side effects: companies shown are held back from the next two weeks' plans.
news: What's new in medtech
Read. Needs a plan.
- Inputs:
ask(string, up to 300 characters),about(string),days(integer, 1 to 90, default 7),state(US state),limit(integer, 1 to 25, default 15). - Returns: one row per US medical device company with its recent sourced events (FDA decisions, recalls, trials, funding, news, hiring), ranked for the person's firm.
find: Find companies
Read. Needs a plan.
- Inputs:
about(string: a device, technology or space),ask(string),role(a role being hired),state,since(ISO date),looking_for(kinds of evidence),limit(1 to 25, default 15). - Returns: companies on Whimbrel's list with the evidence that matched and its sources, ranked for the request and the person's firm. The person's customers, competitors and passes are left out.
company: Company rundown
Read. Needs a plan.
- Inputs:
company(string, required),events(1 to 60, default 20). - Returns: whether the company is on Whimbrel's list and why, what it makes, stage, location, FDA-registered facilities, its events with dates and sources, and the person's own history with it.
people: Who to contact at a company
Read. Needs a plan. Reaches outside sources.
- Inputs:
company(string, required),role(string),limit(1 to 60, default 25). - Returns: people the public record names at the company, by role, each with title, source and date, any published email or phone, and a LinkedIn search link the person opens themselves. Whimbrel never reads LinkedIn.
- Side effects: work emails are looked up with Hunter for up to 3 top names when none is on record; the company counts toward what Whimbrel learns the person is drawn to, shown and removable on the Memory page. Counts as one company lookup.
openers: Opening lines for a company
Read. Needs a plan.
- Inputs:
company(string, required). - Returns: the facts to write an opening line from: what just happened there, with sources, and the matching service, project or certification from the person's profile. The AI writes the line.
- Side effects: the company counts toward what Whimbrel learns the person is drawn to.
my_list: My accounts
Write. Needs a plan.
- Inputs:
add(company names),since(ISO date, default 7 days ago),rank(a pasted list of up to 60 names),show(a trade show:name,starts,ends,exhibitors, or after the showmet),watch(a named space:name,actionsaveordiff,matching,since,kind). - Returns: the accounts the person is working and what changed at each, with sources; with
rank, the pasted list ordered for their firm; withshow, the show plan (must-see booths, people and accounts exhibiting); withwatch, the saved space or what is new in it. - Side effects:
addadds accounts (up to 60 kept).showsaves the show, and people met are remembered and set to follow up; today's plan reminds the person before the show starts.watchsaves the space. It never removes an account; that isforget.
remember: Remember what the rep said
Write. Needs a plan.
- Inputs:
said(string, required, up to 1,500 characters),companies_on_screen(names, so "the second one" resolves). - Returns: a few words confirming what was kept, and
to_forgetwhen the person asked to forget something. - Side effects: saves outcomes (reached out, replied, meeting, a pass, not now, a customer, a competitor) and people the person knows. Each outcome is added to their history. It never deletes.
forget: Forget a company or stop working it
Write, deletes (sensitive). Needs a plan.
- Inputs:
companies(up to 25 names),stop_working(up to 25 names). - Returns: what was forgotten and which accounts were removed.
- Side effects: deletes the person's status, notes and history for those companies, and removes them from their accounts. Public company records are not affected.
account: The rep's account
Write. Needs a plan. Reaches outside sources.
- Inputs: during setup,
stepandskip;website(the firm's site, read to draft the profile); any profile field (services, device_areas, customer_stage, territory, clients, competitors, accounts and the rest). - Returns: the next setup question, or the profile, who the person sells to best, team seats and links to the Account and Memory pages.
- Side effects: saves the profile. A changed answer keeps the earlier one, which the Memory page can put back. Reading a website fetches up to 5 of its pages.
my_contacts: The rep's contacts
Read. Needs a plan.
- Inputs:
company,search(a word in a name, company or role). - Returns: up to 50 people the person told Whimbrel they know, with role, how they met and when they last spoke.
deep_record: Queue a full research record
Write. Needs a plan. Reaches outside sources.
- Inputs:
company(required),domain,refresh(boolean),fact(email,clearanceortrial),since(ISO date). - Returns: the company's research record: leadership and buying committee, company facts, contact routes, named partners and the evidence for each. When there is no record yet, or the newest is over a week old, it starts a new research job and returns the best file on hand plus a request id.
- Side effects: starts a research job. A job already running for that company is reused, never doubled, and a failed job is not counted. Starting a job counts as one company lookup.
factnever starts one.
research_status: Your research requests
Read. Needs a plan.
- Inputs:
request_id(optional). - Returns: the status of one request, or the newest 10: queued, running, done or failed.
crm_export: Export research as CRM import files
Read. Needs a plan.
- Inputs:
company(required),format(hubspotorsalesforce, required). - Returns: a companies CSV, a contacts CSV, a sourced notes document and the import steps. Needs a research record from
deep_recordfirst. Nothing is sent to the CRM.
about_the_data: About this data
Read. No plan needed.
- Inputs: none.
- Returns: how the archive is collected, dated and windowed, what it excludes, its scale, and the attribution terms.
get_access: Get a key for the paid tools
Write. No plan needed. Not offered in ChatGPT.
- Inputs:
plan(individualorseat),quantity(5 or more for Team). - Returns: Stripe Checkout links for Individual and Team, each opening with a one-month trial.
- Side effects: creates a checkout session on Stripe. Nothing is charged unless the person completes it there.
No other tool names answer over MCP. Older names (such as quick_company, track and find_signals) were retired on October 13, 2026 and return "Unknown tool"; the HTTP API still serves the same data.
Errors
| Case | What the caller gets |
|---|---|
| No token on a call that needs one | HTTP 401 with WWW-Authenticate: Bearer resource_metadata="…/.well-known/oauth-protected-resource", which starts sign-in. |
| Invalid, expired or revoked token, or a token for another resource | HTTP 401 invalid_token with the same header, so the client signs in again. |
| Signed in without an active plan | A tool result with isError: true saying the tool needs a Whimbrel plan. |
| Missing or invalid input, or nothing on file | A tool result whose JSON has an error field in plain words, such as "Give me a company name to look up." or "No deep-research record exists for X yet. Run deep_record first." |
| A daily limit reached | A tool result with limited: true and a note saying which limit and that it resets at 00:00 UTC. |
| Our storage briefly unavailable | A tool result with isError: true saying it is an outage on our side and to retry shortly. HTTP API routes answer 503 with Retry-After: 60. |
| An unexpected failure inside a tool | A tool result with isError: true and the reason. |
| Unknown tool, or a body that is not JSON | JSON-RPC error -32602 or -32700. |
Retrying is safe for every Read tool. my_list, account and forget give the same result when repeated; remember adds the outcome to the history again. deep_record reuses a job already running for the same company, and today moves on to companies not yet shown.
Rate limits
| Limit | Value | Applies to |
|---|---|---|
| Company lookups | 100 a day per person during the trial, 300 a day on a paid plan; a Team plan pools the limit across its seats. Resets 00:00 UTC. | people, and deep_record when it starts a job |
| Calls without a plan | 600 a day per caller | about_the_data, get_access |
| Work email lookups | Up to 3 people per company, cached for 180 days | people |
| Result sizes | As listed with each tool above; values outside a range are clamped, not refused | All tools |
| Client registration | 8 per 2 minutes per network address (HTTP 429 with Retry-After) | /oauth/register |
| Sign-in codes | 8 an hour per network address and 3 per 15 minutes per email; 5 tries per code | The Connect screen |
Searches, plans, lists and memory (today, news, find, company, my_list, remember, forget, account, openers, my_contacts) have no daily limit on a plan. Need more? Tell us.
Data and privacy
Tools receive only their own inputs. Whimbrel never asks for or reads the conversation, the AI's memory or the person's files. What each person tells Whimbrel stays in their own memory, which they can see, change, download or delete on their Memory page. Details are in the Privacy Policy; questions go through Contact and feedback.