Whimbrel MedTech Analyst
Server Details
Whimbrel MedTech Analyst is your MedTech BD analyst on demand. Connect it to Claude, ChatGPT, Cursor or another AI app and ask about up-and-coming US medtech companies: who got funded this week through NIH and NSF grants and federal contracts, plus FDA clearances and Breakthrough marketing authorizations. Every line is linked to its source. Built for BD reps and small engineering firms researching companies they're interested in partnering with. Connect free: https://whimbrelresearch.com/connect/
- Status
- Healthy
- Uptime
- 83.9% over 26 days
- OAuth
- Works in Glama
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-06-18
- URL
- Repository
- WhimbrelResearch/whimbrel-mcp
- GitHub Stars
- 0
TDQS
Scored across 17 tools
Most tools have a recognizable target (find for search, company/deep_record/people for one company, save_space_watch/check_space_watch as a pair), but several cluster around the same job of ranking company names for the rep: rank_list, trade_show, and find all return ordered companies and differ mainly in input format and framing. The one-company tools (company, deep_record, people, opening_line_facts, crm_export) are distinguished by depth and output type, but an agent could plausibly reach for company when deep_record is meant, or rank_list when a pasted exhibitor list should go to trade_show.
Casing is uniformly snake_case, which helps, but the grammatical convention is mixed: bare verbs (find, forget), verb_noun (rank_list, get_access, trade_show), noun phrases (account, company, people, news), and an odd prepositional phrase (about_the_data) all coexist. The names remain readable, but there is no predictable pattern an agent can lean on to guess a tool's shape.
17 tools is slightly above the comfortable band, but the surface maps to genuinely distinct capabilities: search, single-company detail, people, news, list ranking, watch management, profile, export, billing, and status. Only a couple (get_access, about_the_data) feel auxiliary rather than core, so the set is a bit heavy but not padded.
The lifecycle is broadly covered: discovery (find, news), per-company depth (company, deep_record, people, crm_export), list triage (rank_list, trade_show), profile learning (account, remember, forget), and recurring watches (save_space_watch, check_space_watch). The main gap is watch management — saves can be created and checked but there is no tool to list or delete a saved watch, and forget only clears status/list membership rather than stored research.
Available Tools
17 toolsabout_the_dataAbout this dataARead-onlyIdempotentInspect
How the archive is collected, dated, and windowed, what the feed excludes, and the licensing and attribution terms. Takes no inputs. Returns the methodology, the overview, and the published archive scale.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, non-destructive and closed-world, so the safety profile is covered. The description adds useful context beyond that: it takes no inputs and it returns methodology, overview, and archive scale — a return-shape disclosure that matters because there is no output schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences plus a fragment; the content scope is front-loaded before the input/return facts. Every clause carries information and nothing is padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of describing returns and does so at a category level ('the methodology, the overview, and the published archive scale'), though terms like 'the overview' and 'archive scale' remain somewhat abstract. Sufficient for a zero-parameter documentation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to document and the baseline is 4. The description's 'Takes no inputs' correctly reinforces the empty schema without contradicting it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names the exact subject matter the tool documents: collection method, dating, windowing, feed exclusions, and licensing/attribution. No sibling tool (find, news, company, account, etc.) covers archive methodology, so an agent can route here unambiguously.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the content listing — you call this when you need provenance or licensing context — and 'Takes no inputs' signals it is a safe no-argument call. However, there is no explicit statement of when to use it versus siblings or when it is not needed (e.g., for actual data retrieval use find/news instead).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
accountThe rep's accountBIdempotentInspect
The rep's own setup in one place. On first use it starts the profile build: ask_now is the first question (the firm's website) and say_now the message to send. Pass each answer with step set to ask_now.step (website reads the site and drafts the profile), or step with skip true, and it returns the next question, one at a time, then the read-back. Pass any profile field to change it (services, device_areas, customer_stage, territory, clients, skip_companies, accounts, and the rest). A change keeps the earlier answer, which the rep can put back from the Memory page; nothing is deleted. With nothing passed: the profile, who the rep sells to best, the team's seats, the account page for billing and invites, where the data comes from, and the Memory page. Returns set_up_now while the profile is not built yet.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | The rep's role. | |
| skip | No | With step: the rep skipped that question or has none. | |
| step | No | During the profile build: the ask_now.step being answered. | |
| notes | No | ||
| proof | No | Kinds of projects delivered recently. | |
| clients | No | The firm's customers: kept out of lists, used as the picture of a good fit. | |
| website | No | The firm's public website, to draft the profile from. | |
| accounts | No | Companies the rep is researching now. | |
| services | No | The services that actually win the firm's work, in the rep's words. | |
| firm_name | No | ||
| territory | No | ||
| device_areas | No | ||
| certifications | No | ||
| customer_stage | No | early-stage, growth-stage, established, or a mix. | |
| device_classes | No | ||
| skip_companies | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare idempotentHint=true, destructiveHint=false and openWorldHint=true; the description reinforces this with 'nothing is deleted' and the recoverability detail that earlier answers can be restored from the Memory page. It also discloses side effects the annotations don't imply — that passing a website causes the site to be read and a profile drafted, and that set_up_now is returned until the profile exists. Missing only rate/limit or failure-mode detail.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The paragraph is packed but front-loaded on a weak, abstract headline, and several sentences are run-ons that mix three distinct modes (build flow, field update, read). It introduces response-side names like ask_now, say_now and set_up_now without a clear frame, forcing re-reading. Little is wasted, but the structure does not help an agent parse the modes quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 16 parameters and no output schema, the description does take on return-shape duty (profile, best-fit audience, seats, billing/invites page, data provenance, Memory page, next question, set_up_now), which is genuinely helpful. But it leaves roughly half the input surface (role, notes, proof, firm_name, certifications, device_classes) with neither schema nor prose explanation, so an agent still cannot confidently populate the full schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 56%, so both the schema and the description carry weight. The description adds real semantics for step and skip that the schema cannot express (skip is only meaningful paired with step, and step carries the ask_now.step value), and names several update fields (services, device_areas, customer_stage, territory, clients, skip_companies, accounts). Fields like role, notes, proof, firm_name, certifications and device_classes remain unexplained in either place.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The headline 'The rep's own setup in one place' is vague, but the body does state concrete behaviors: it starts the profile build, returns the next question one at a time, accepts any profile field for update, and with no arguments returns the profile, seats, billing page, and data-source info. The tool is really a read-or-configure entry point for the rep's profile, and an agent can infer that only after reading the whole paragraph. It never contrasts itself with siblings like company, people, or about_the_data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through modes rather than stated as guidance: 'On first use it starts the profile build', 'Pass each answer with step ... or step with skip true', and 'With nothing passed' enumerates the read mode. That covers the main invocation patterns but gives no explicit when-to-use-this-vs-another-tool routing, and no prerequisites for starting the build flow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_space_watchWhat is new on a saved watchAInspect
Runs a saved watch's find search again and returns the device companies with evidence the watch has not shown before (since it was saved or last checked), each with only that new evidence and its source, and marks it as seen so the next check starts from now.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | The saved watch's name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=false and idempotentHint=false, and the description corroborates and enriches this by disclosing the actual side effect: it 'marks it as seen so the next check starts from now', which explains why repeated calls yield different results. This is meaningful behavioral context beyond the annotations, though permission/rate-limit behavior is unaddressed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is a single dense sentence, but it is front-loaded with the core action ('Runs a saved watch's find search again') and every clause carries information. The run-on length is the only minor cost to readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description takes on the return-value burden and does so reasonably: it specifies device companies plus only-new evidence and its source, and explains the since-last-checked window. It could still clarify behavior on an unknown name or empty results, but the essential contract is covered.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with a single parameter, so the schema already documents 'name'. The description only loosely ties it to a 'saved watch's find search' and adds no syntax, format, or validation detail, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: re-runs a saved watch's find search and returns newly surfaced device companies with evidence. An agent can distinguish this from save_space_watch (creation) and find (ad-hoc search) without opening a schema. It stops short of naming those siblings explicitly, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'Runs a saved watch's find search again' and 'since it was saved or last checked', which signals the tool operates on an existing watch. There is no explicit when-to-use vs an alternative, and no exclusions or prerequisites (e.g., what happens if the watch name doesn't exist).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
companyCompany rundownARead-onlyIdempotentInspect
The rundown on one company from Whimbrel's list of US medical device companies and suppliers: whether it is on the list and why, what it makes, stage, location, FDA-registered facilities, every event on file (clearances, approvals, inspections, recalls, trials, grants, funding, news) with dates and source links, and the rep's status for it when they set one (a client, or not a fit). Use it for "tell me about" or "what do we know about" a company. A company not on the list says so, so the rep does not pitch a foreign importer or a drug company.
| Name | Required | Description | Default |
|---|---|---|---|
| events | No | How many events to return, newest first (default 20, up to 60). | |
| company | Yes | The company's name as the rep said it. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotent, non-destructive, closed-world). The description adds value beyond that by disclosing the off-list behavior (it will say a company isn't on the list and why) and the structure of returned data. It doesn't discuss pagination or auth needs, so not a full 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, then a long but purposeful enumeration of return contents and the trigger phrasing. The event-list enumeration is dense, but each clause maps to real content the tool surfaces.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must carry the return-value burden, and it does thoroughly by listing every category returned and noting dates and source links. Combined with annotations covering safety, an agent has everything needed to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both params, including the events default/limit and the "as the rep said it" framing. The description adds no syntax or format detail beyond the schema, making the baseline 3 correct.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("rundown on one company") and enumerates exactly what it returns: list membership and reason, what it makes, stage, location, FDA facilities, and all filed events with dates and source links. An agent can immediately tell this is the company-level profile tool, distinct from list/set tools like find or rank_list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit trigger phrasing ("Use it for 'tell me about' or 'what do we know about' a company") and clarifies the negative case ("A company not on the list says so, so the rep does not pitch a foreign importer or a drug company"). It does not name a sibling alternative, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crm_exportExport research as CRM import filesARead-onlyIdempotentInspect
One company's deep-research record as CRM import files. Pass company and format (hubspot or salesforce). Returns a set of CSV import files for that CRM, a sourced research-notes document, and the import steps for that CRM. Requires an existing deep-research record and an active Whimbrel key.
| Name | Required | Description | Default |
|---|---|---|---|
| format | Yes | Which CRM the files should import into. | |
| company | Yes | Company name (must already have a deep-research record). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive safety, so the bar is lower; the description adds real value by disclosing the return composition (CSV files, sourced research-notes document, CRM import steps) and the auth/record prerequisites. It omits any detail on file count, size, or failure modes if the record is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what is produced, then parameters, then prerequisites. No redundant or filler text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With only two required params, no output schema, and annotations covering safety, the description covers purpose, inputs, return artifacts, and prerequisite conditions. Nothing material an agent needs is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with both parameters documented and format's enum spelled out, so the description repeating 'pass company and format (hubspot or salesforce)' adds no syntax or constraint beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (export) and resource (one company's deep-research record) plus the output form (CRM import files), which distinguishes it from siblings like deep_record and research_status. An agent can tell exactly what it produces without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states prerequisites: an existing deep-research record and an active Whimbrel key, and points to the format choice. It does not name an alternative tool or say when not to use it, so it falls short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deep_recordQueue a full research recordAInspect
A full research rundown on one company, for when the rep asks for one: company facts, named partners, dated events, the evidence and source behind each, and known gaps. Pass company. Pass domain when asking for new research. Pass refresh to force a new run. Pass fact as email, clearance, or trial to return that stored fact only, without queueing a run. If the company has no record yet, or the newest record is more than a week old, this queues a fresh research run and returns the best file already stored, with a note on what is still filling. A record researched within the week is served as stored. Requires an active Whimbrel key.
| Name | Required | Description | Default |
|---|---|---|---|
| fact | No | Return this one stored fact and do not queue a research run. Omit it for the company file. | |
| since | No | ISO date (YYYY-MM-DD) for the What changed section. Defaults to the last 90 days. | |
| domain | No | The company's website domain. Required for a company not on Whimbrel's list yet: when a reply asks for it, ask the rep and call again with it. | |
| company | Yes | Company name. | |
| refresh | No | Force a fresh research run even when a recent record exists. A record older than a week refreshes automatically without this. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations it discloses the key behavioral traits: this is not a pure read (it queues an external research run), the staleness policy (records under a week are served as stored, older ones refresh automatically), that `fact` short-circuits the run, that a partial result is returned with a note on what is still filling, and that an active Whimbrel key is required. That is substantive cost/auth/side-effect context the annotations alone would not convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and output shape are front-loaded, and the policy details follow in a logical order. The run of short 'Pass X' sentences mirrors the schema rather than adding to it and costs a little density, but nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return-value burden and does so: it enumerates the record's sections and explains the partial-with-note case. Auth and refresh semantics are covered; the only real gaps are the undocumented `since` parameter and no sense of run latency.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is already 100%, so 3 is the floor; the description goes slightly beyond by tying `domain` to the 'new company not on the list' case, tying `refresh` to overriding the auto-refresh rule, and clarifying that `fact` returns stored data without queueing. It omits `since` entirely, so it does not fully supersede the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
It clearly states the resource: a full research record on one company (company facts, named partners, dated events, evidence, gaps), plus the side effect of queueing a run when stale or missing. An agent can tell it apart from a lightweight lookup, though it never names the sibling (`company`, `research_status`) that would be the obvious alternative for a plain lookup or a status check.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives real selection cues: use it 'when the rep asks for one', pass `fact` to get a single stored fact 'without queueing a run', pass `refresh` to force a new run, and it explains the automatic refresh threshold (>1 week). What is missing is an explicit 'when not to use this / use X instead' against the many sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
findFind companiesARead-onlyIdempotentInspect
Finds US medical device companies by device, technology or space, a role being hired, a state or a date. One search across every kind of signal, answered as companies: a device, technology or space in plain words (about), and optionally a role being hired, a US state or a date. Looks at device trials, FDA device makers, filings and news, and hiring, folds them into one row per company with its evidence and sources, leaves out the rep's clients and the companies that are not a fit, and ranks the rest for what was asked and what the rep's firm sells. With no device or role named ("who should I reach out to?"), it leads with the companies Whimbrel ranks first for the rep's firm.
| Name | Required | Description | Default |
|---|---|---|---|
| ask | No | Optional: the rep's request in their words, when it says more than about does (e.g. 'who just raised money and is still pre-clearance'). | |
| role | No | Optional: a role being hired, e.g. 'design transfer', 'sterilization'. | |
| about | No | A device, technology or space, e.g. 'balloon catheter', 'spinal implants', 'wearable glucose'. | |
| limit | No | Most companies to return (default 15, max 25). | |
| since | No | Optional ISO date; evidence on or after it. | |
| state | No | Optional US state name. | |
| looking_for | No | Optional: limit to some kinds of evidence. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive), but the description adds real behavioral depth: it names the data sources (trials, FDA device makers, filings and news, hiring), states the aggregation ('one row per company with its evidence and sources'), discloses exclusions (rep's clients and non-fit companies), and explains the ranking basis. It stops short of freshness, latency or auth details, but this is well beyond what the annotations convey.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, but the body is padded and circular, repeating 'a device, technology or space' three times and re-listing the filter dimensions already given up front. Several clauses could be cut without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, 7 optional parameters and a rich annotation set, the description does the necessary work: it covers input modes, evidence sources, filtering, ranking and the empty-query fallback, and sketches the result shape. It is close to complete for an agent to call it correctly, missing only output-field specifics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented, and the description largely restates them ('a role being hired, a US state or a date'). The one added nuance is that `about` is free-form plain words and that a vague ask routes to firm-ranked results, but no syntax or format detail is added beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Finds US medical device companies') plus the filter dimensions, and explicitly scopes the output shape ('answered as companies') which separates it from the people/news siblings. An agent can tell it is the umbrella company-search tool without opening a schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an implied usage pattern and one explicit scenario ('With no device or role named... it leads with the companies Whimbrel ranks first'), which tells the agent the tool works with zero arguments. However, it never names an alternative or a when-not condition (e.g. use `company` for a known company, `people` for people), so the routing guidance stays implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
forgetForget a company or stop working itADestructiveIdempotentInspect
Deletes what Whimbrel keeps for this rep about a company, when the rep asks: companies clears its status (a client, or not a fit) and takes it off the firm profile's company lists (clients, prospects and companies to leave out); stop_working only takes it off the prospect list. The companies and their public records are not affected. The rest of the firm profile is edited on the rep's Memory page.
| Name | Required | Description | Default |
|---|---|---|---|
| companies | No | Companies whose status and profile entries to delete. | |
| stop_working | No | Companies to take off the rep's accounts. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true, idempotentHint=true and readOnlyHint=false, so the description's job is to say what destruction means — and it does: status is cleared, entries are removed from named firm-profile lists, while 'the companies and their public records are not affected.' It also points to the Memory page for the rest of the profile, which is real routing context. It does not say what happens when a listed company isn't present, or whether the action is confirmed/undoable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and what is destroyed, then the mode split, then the non-effects. One dense paragraph with no filler, though the nested parentheticals (status, then three list names) make it slightly harder to parse than a bulleted split would be.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-optional-parameter destructive tool with no output schema, the description covers the essential unknowns: what is deleted, what is untouched, and which surfaces are affected. Remaining gaps are small — whether both arrays can be supplied together and what the response reports — but nothing that would cause a wrong invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3, but the description adds genuine meaning: `companies` is described as writing status (client / not a fit) and removing from three specific lists, while `stop_working` is scoped to the prospect list only — a distinction the terse schema descriptions ('profile entries' vs 'the rep's accounts') leave ambiguous.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Deletes what Whimbrel keeps for this rep about a company') and immediately splits it into the two distinct modes the schema exposes (companies vs stop_working). It does not explicitly contrast with the inverse sibling `remember`, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides a clear trigger ('when the rep asks') and, more usefully, states the selection rule between the two parameters: `companies` clears status and profile lists, `stop_working` only removes from the prospect list. It never says when to prefer another tool, such as re-adding a company via `remember`, so exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accessGet a key for the paid toolsAInspect
Returns Stripe Checkout links for Individual and Team. Both open with a one-month trial of the full paid product, then convert to paid. Individual is one person. Team is five or more people. Pass plan as individual or seat, or omit it to return both links. Pass quantity as the people on a seat checkout. A quantity below 5 is refused. No key is required. OAuth Subscribe on the sign-in page hands the token to the app with nothing to paste. These links are the display-key path for clients that do not use OAuth: open one, start the trial, then collect the key from the success page and send it as an Authorization Bearer header.
| Name | Required | Description | Default |
|---|---|---|---|
| plan | No | Which checkout to open. Omit to open both. | |
| quantity | No | People on a seat checkout. Below 5 is refused. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare readOnlyHint=false, openWorldHint=true, idempotentHint=false and destructiveHint=false; the description adds real behavioral context the annotations cannot convey. It discloses that links open a one-month trial that then converts to paid, that no API key is required, that a quantity under 5 is refused, and the post-call workflow (collect the key from the success page and send it as an Authorization Bearer header).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core return value is front-loaded and most sentences carry operational weight (plan options, refusal threshold, OAuth alternative, how to use the link). There is mild sprawl in the final two sentences and the OAuth aside is slightly tangential for a tool whose job is returning links.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining what comes back, and it does so (Stripe Checkout links per plan). It also covers auth expectations on both paths, so an agent knows nothing needs to be passed and what to do with the returned link. Only edge details, such as whether quantity is meaningful when plan=individual, are left implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already states 'Omit to open both' for plan and 'Below 5 is refused' for quantity, so the description largely repeats what the schema provides. It adds only the minor mapping that 'seat' means five or more people, which does not materially extend meaning beyond the structured fields.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a concrete verb and resource: 'Returns Stripe Checkout links for Individual and Team,' which is unambiguous and matches the get_access title. It does not reference any sibling tool, though none of the listed siblings (account, my_contacts, etc.) overlap with billing, so the risk of mis-selection is low.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the selection condition explicitly: 'These links are the display-key path for clients that do not use OAuth,' and contrasts that with the OAuth Subscribe path that needs nothing pasted. It also states the plan/omit semantics and the quantity-below-5 refusal. What is missing is only an explicit 'use this instead of X' phrasing against a named sibling.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
newsWhat's new in medtechARead-onlyIdempotentInspect
What's new in US medtech, for news questions such as "any news in medtech", "what's new this week", "anything new in neuromodulation", "who got FDA clearance lately", "any recalls". The last days of sourced events at US medical device companies and their suppliers: FDA clearances and approvals, recalls and warning letters, device trials, funding and grants, press releases and hiring, one row per company with dates and source links, ranked for the rep's firm.
| Name | Required | Description | Default |
|---|---|---|---|
| ask | No | The rep's question in their words. | |
| days | No | How many days back (default 7, up to 90). | |
| about | No | Optional: a device, technology or space, e.g. 'neuromodulation'. | |
| limit | No | Most companies to return (default 15, max 25). | |
| state | No | Optional US state name. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnly, idempotent, non-destructive, closed-world), so the description's job is context, and it delivers: the result is 'one row per company with dates and source links, ranked for the rep's firm', and coverage is limited to 'the last days' of US-sourced events. It does not discuss pagination or what happens if no events are found, but the aggregation/ranking behavior is genuinely disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded in the first clause and the rest is a single dense paragraph. Five inline example questions are a lot of surface area, but each one demonstrates a distinct query shape (recall, clearance, space, timeframe), so they earn most of their space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description carries the burden of describing the return, and it does: row-per-company granularity, dates, source links, and ranking. Scope (US only, device companies and suppliers) and recency window are stated. Missing only edge-case behavior such as empty results or how 'ask' interacts with 'about' when both are supplied.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the five parameters (ask, days, about, limit, state) are already fully documented including defaults and maximums. The description adds only indirect meaning — 'last days' gestures at the days window and 'one row per company' gestures at limit — without restating or enriching parameter semantics. Baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (US medtech news events at medical device companies and their suppliers) and enumerates the event types covered: FDA clearances, recalls, warning letters, trials, funding, press releases, hiring. An agent can tell this is a news-feed tool, but it never explicitly contrasts itself with near-neighbors like 'today' or 'company', so sibling differentiation is only implicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Five concrete example questions ('any news in medtech', 'what's new this week', 'anything new in neuromodulation', 'who got FDA clearance lately', 'any recalls') make the triggering intent very clear. However, it gives no when-not guidance and never names an alternative tool, so an agent must infer the boundary against 'today' or 'deep_record' on its own.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
opening_line_factsFacts for an opening lineARead-onlyIdempotentInspect
What to write an opening line to one company from: what just happened there (a trial, a hire, an FDA decision, funding, news), each with its source, and from the rep's own profile the service it calls for, their closest past project, a certification the company asked for, and the angle when the company resembles their clients. Also says how the company fits the rep (territory, stage). Returns the facts, not the lines.
| Name | Required | Description | Default |
|---|---|---|---|
| company | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safe read-only profile, and the description adds useful behavior detail: it aggregates company events with sources plus rep-profile matches and fit information, and it explicitly returns facts rather than generated lines. It does not describe output format or pagination, but the key behavioral distinction is present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose is front-loaded and the wording is dense but efficient, covering multiple returned fact types without filler. The middle clause is lengthy and list-heavy, but every part contributes to understanding what the tool returns.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with no output schema, the description does a good job enumerating what is returned, including sources and rep-fit context. However, it leaves a critical invocation detail ambiguous: what exactly the 'company' input should contain.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has zero description coverage for the single required 'company' parameter. The description only says 'one company' and gives no indication of whether the value should be a name, domain, ID, or another identifier, so it does not compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description gives a specific verb-and-resource picture: it fetches facts used to write an opening line for one company, and it enumerates the kinds of facts returned. It clearly distinguishes itself from line-generation by stating 'Returns the facts, not the lines,' though it does not name sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage context is clear: use it when you need supporting facts for an opening line about a single company, not when you need the line itself. There are no explicit exclusions or named alternatives, but the context is strong enough to guide selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peoplePeople at a company, by roleAIdempotentInspect
The people Whimbrel's full company research names at one company, by role: R&D and engineering, quality, regulatory, clinical, supply chain and sourcing, operations and manufacturing, executive, business. Each with title, source, date, a LinkedIn people search, and any published email or phone; work emails are looked up for the top names when none is on record. Also returns the company's published contact routes. When no research from the last week is on file, this starts the full company research (one company lookup in all) and meanwhile lists the names government records give (SBIR award contacts, people on registry records, ClinicalTrials.gov contacts), not sorted by role, with the request id; the full list follows when the research finishes, in a few minutes.
| Name | Required | Description | Default |
|---|---|---|---|
| role | No | Optional: one role group to show. Map the rep's words to a key: rd_engineering (R&D and engineering), quality (Quality), regulatory (Regulatory), clinical (Clinical), supply_chain (Supply chain and sourcing), operations (Operations and manufacturing), executive (Executive), business (Business), other (Other). Filters the researched people only. | |
| limit | No | Most people to return (default 25). | |
| domain | No | Optional: the company's website, for a company not on Whimbrel's list yet. When a reply asks for it, ask the rep and call again with it. | |
| company | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavior: it may trigger a full company research job, returns interim government-record contacts unsorted by role, provides a request id for the eventual full list, and performs work-email lookups for top names. This is consistent with readOnlyHint=false and gives the agent real operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The purpose and behavior are front-loaded, but the full role list largely duplicates the enum descriptions in the schema, making the description longer than necessary. The fallback behavior is dense but earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does a good job explaining the return shape, the interim government-record fallback, timing, and contact routes. It could mention limit behavior or how to use the request id with research_status, but it is complete enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 75%, and the description adds meaningful semantics for the role parameter by spelling out the role groups, and for domain by explaining when to ask the rep and retry. It does not add much for limit or company, but the schema covers those adequately.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: it lists the people named at one company, grouped by role, and specifies the returned fields (title, source, date, LinkedIn search, contact details). This is clearly distinguishable from the broader sibling 'company' tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains the key usage scenario: when no research from the last week is on file, the call kicks off full company research and returns preliminary government-record names with a request id. It also instructs the agent to ask the rep for a domain when prompted. It does not explicitly compare against siblings like 'company' or 'find', but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rank_listRank a list of companiesARead-onlyIdempotentInspect
Orders a list of company names the rep pasted (a territory, an exhibitor list, a target list) for the rep's firm. Each company on Whimbrel's list of US medical device companies comes with its position, the fit, why now, its newest evidence with sources, and the rep's status for it when they set one (a client, or not a fit). Names not on the list come back apart, with why. Saves nothing.
| Name | Required | Description | Default |
|---|---|---|---|
| companies | Yes | The company names to rank, at most 60. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive behavior, and the description adds genuine context on top: the response structure (position, fit, why now, newest evidence with sources, rep status) and how unmatched names are handled ('come back apart, with why'). 'Saves nothing' reinforces the no-side-effect contract. It stops short of stating latency, rate limits, or auth needs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the core operation, and each sentence adds content (input framing, return contents, unmatched handling). Slightly dense with parenthetical asides ('a client, or not a fit'), but nothing is truly wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the burden of explaining return values and does so in detail, and it clarifies the non-persistence behavior for a stateful-sounding tool. Given the trivial one-parameter input and existing annotations, this is close to complete; only routing guidance versus siblings is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter and schema description coverage is 100% ('The company names to rank, at most 60'), so the schema already carries the semantics. The description's mention of pasted lists adds framing but no syntax or format detail beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (orders/ranks) and resource (a pasted list of company names), and enumerates the paste contexts (territory, exhibitor list, target list). This is clear, but it never contrasts itself against siblings like 'company', 'find', or 'deep_record', so the agent must infer when ranking beats a lookup.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the framing ('a list of company names the rep pasted'), which tells the agent this is a batch-ranking call rather than a single-company lookup. However, there is no explicit when-to-use/when-not guidance and no named alternative for the single-company case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rememberRemember what the rep saidAIdempotentInspect
Sharpens the rep's firm profile from what they say in passing, so Whimbrel surfaces more relevant medical device companies: what their firm sells or does well, the device areas they are strongest in, the stage of company they sell to, where they sell, a company that is a client, or a company that is not a fit and why. Clients and companies that are not a fit stay out of new results. It only adds and updates; a request to forget something returns to_forget, the companies it names, and deletes nothing. Takes the rep's words as said and the companies currently on screen so 'them' and 'the second one' resolve. Returns a few words saying what was kept, like "Got it, QT is not a fit."
| Name | Required | Description | Default |
|---|---|---|---|
| said | Yes | What the rep said, as they said it. | |
| companies_on_screen | No | Companies shown in the conversation, in order, for 'them' and 'the second one'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (idempotentHint, destructiveHint=false), the description discloses that it only adds and updates, that a forget request deletes nothing and returns to_forget and the named companies, that clients and non-fits are excluded from new results, and that it returns a short confirmation. That is substantial behavioral context an agent cannot get from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The scoping and mutation-safety information is front-loaded and every clause carries meaning, but the middle section is a long run of comma-separated examples that makes it slightly dense. Efficient overall, with minor rambling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, mutation-flagged tool with no output schema, the description covers the write scope, the refusal/deletion behavior, the effect on future results, and the return format ('a few words saying what was kept'). Nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented, including companies_on_screen's ordering for 'them'/'the second one'. The description reinforces the purpose of companies_on_screen for pronoun resolution but adds no syntax or format detail beyond the schema. Baseline 3 applies when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource ('Sharpens the rep's firm profile from what they say in passing') and enumerates the categories of facts it captures, so the agent knows it is a profile-update tool rather than a search tool. It distinguishes itself from the sibling 'forget' by explaining what happens on a forget request. Slightly indirect phrasing ('sharpens... from what they say in passing') keeps it from a crisp 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It spells out when to use it – to record what the firm sells, device strengths, stage, geography, clients, or non-fits – and explicitly redirects a forget request to 'to_forget' behavior, so the boundary against the sibling 'forget' is clear. It stops short of stating exclusions for unrelated utterances or other alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
research_statusYour research requestsARead-onlyIdempotentInspect
Status of this account's queued, running, and finished research and onboarding requests. Pass request_id for one request, or omit it for the recent ten. On a Team plan, the reply includes seats claimed. Requires an active Whimbrel key.
| Name | Required | Description | Default |
|---|---|---|---|
| request_id | No | One request to check; omit for your recent ten. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint, idempotentHint, destructiveHint=false, openWorldHint=false), so the bar is lower, yet the description adds real context: an active Whimbrel key is required, the default response is capped at ten requests, and Team-plan replies include seats claimed. It does not, however, describe rate limits or the shape of the payload returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, zero padding: purpose first, then invocation, then plan/auth caveats. Every sentence carries information and there is no repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the work of indicating what comes back (statuses across queued/running/finished, plus seats claimed on Team plans) and what is required to call it. It is nearly complete for a simple single-param read tool; only the exact response fields and id provenance remain unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single optional request_id is already documented in the schema, so the baseline is 3. The description restates the one-vs-ten behavior consistent with the schema but adds no format details (e.g., where the id comes from, accepted id form).
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb+resource: retrieving status for queued, running, and finished research/onboarding requests on this account. The scope is unambiguous (this account, three lifecycle states). It does not name or contrast with any sibling, though none of the siblings listed (find, remember, account, etc.) appear to overlap, so differentiation is largely implicit from the name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description tells you how to invoke it (pass request_id for one, omit for the recent ten) but says nothing about when this tool is the right choice versus another (e.g., find or deep_record for related research data). Usage is implied by the resource description rather than explicitly guided, and there are no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
save_space_watchSave a space to watchADestructiveInspect
Saves a find search under a name, for the calling account only: a device, technology or space (about) or a role being hired (role), with an optional US state and kinds of evidence. Returns the device companies on Whimbrel's list it matches now, ranked as find ranks them. Saving the same name again replaces the search. Later replies open with one line when the watch has new evidence; check_space_watch returns it.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Name for this watch, e.g. 'neuromodulation startups'. | |
| role | No | Optional: a role being hired, e.g. 'design transfer'. | |
| about | No | A device, technology or space, e.g. 'neuromodulation'. | |
| state | No | Optional US state name. | |
| looking_for | No | Optional: limit to some kinds of evidence. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations declare destructiveHint=true and idempotentHint=false; the description is consistent, disclosing that 'Saving the same name again replaces the search' and that the write is scoped to the calling account. It could be more explicit that the prior watch is overwritten/lost, but it adds real behavioral context (ranked result set, later reply behavior) on top of the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The core action and replacement semantics are front-loaded, and sentences are dense with no filler. The trailing sentence about later replies and check_space_watch is slightly tangential to invoking this tool but earns its place by explaining the watch lifecycle.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a mutation tool with no output schema, the description covers all the key concerns: account scoping, overwrite behavior on duplicate name, and what the immediate response contains (matching device companies, ranked as find ranks them). It is complete enough to call correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents all five parameters and their examples. The prose largely restates those fields ('a device, technology or space (about) or a role being hired (role)'), adding only minor relational framing between about/role, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Saves a find search under a name, for the calling account only.' It also names the two modes (about / role) and the retrieval sibling check_space_watch, so an agent can distinguish it from check_space_watch without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when this is used (to persist a search that later surfaces new evidence) and routes the agent to check_space_watch for retrieval. It does not state exclusions, e.g. when to prefer find or remember instead, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trade_showTrade show booths to visitARead-onlyIdempotentInspect
Ranks a trade show's exhibitor list for the rep's firm: pass the exhibitor names the rep pasted or uploaded, or that you read off the show's exhibitor directory. Whimbrel checks each name against the archive and returns the must-see booths and the ones worth a stop, each with why it fits the firm and what changed there, with sources. The rep's clients and the companies that are not a fit are left out. Saves nothing. A list longer than 200 names goes in several calls.
| Name | Required | Description | Default |
|---|---|---|---|
| show | No | Optional: the show, with its year, e.g. 'MD&M West 2027'. | |
| exhibitors | Yes | Exhibiting company names. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, so the safety profile is covered. The description adds real value beyond them: 'Saves nothing' confirms no persistence, and the 200-name-per-call limit is a concrete batching constraint an agent must respect to avoid failures.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and inputs are front-loaded, and the operational constraints (no saving, 200-name limit) are placed last where they belong. Mostly tight, though 'Whimbrel checks each name against the archive' is mildly redundant with the ranking claim.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description carries the return burden and does: must-see booths plus worth-a-stop ones, each with fit rationale, what changed, and sources. Exclusions and side effects are also stated, so an agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description goes further by explaining what the exhibitors array actually contains and where those strings originate (pasted, uploaded, or read from a directory), and ties the 200-item limit to that parameter, which the schema does not.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — ranks a trade show's exhibitor list — and adds the scoping that matters: it is ranked for the rep's firm and clients/non-fits are excluded. An agent can tell this apart from generic siblings like rank_list or company without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clearly says where the input comes from (names the rep pasted/uploaded, or names read off the show's exhibitor directory) and gives an operational constraint: lists over 200 names must be split across calls. It stops short of naming a specific alternative tool or a when-not-to-use condition.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
1 tool update
- Changed
account1 field changed- changed
Input schema / properties / accounts / descriptionPrevious value: -"Companies the rep is working now."New value: +"Companies the rep is researching now."
1 tool update
- Changed
save_space_watch11 fields changed- added
Input schema / properties / aboutAdded value: +{ + "description": "A device, technology or space, e.g. 'neuromodulation'.", + "type": "string" +} - removed
Input schema / properties / kindRemoved value: -{ - "description": "only this signal kind.", - "enum": [ - "nih_award", - "nsf_award", - "federal_contract", - "sbir_award", - "fda_clearance", - "fda_pma", - "fda_denovo", - "fda_breakthrough_auth", - "fda_hde", - "fda_listing", - "fda_recall", - "fda_warning_letter", - "fda_import_alert", - "fda_483", - "fda_pma_supplement", - "fda_pma_original", - "trial_registration", - "funding_filing", - "company_news" - ], - "type": "string" -} - added
Input schema / properties / looking_forAdded value: +{ + "description": "Optional: limit to some kinds of evidence.", + "items": { + "enum": [ + "trials", + "device_makers", + "filings_and_news", + "hiring" + ], + "type": "string" + }, + "type": "array" +} - removed
Input schema / properties / matchingRemoved value: -{ - "description": "space-separated terms matched against summary and abstract.", - "type": "string" -} - removed
Input schema / properties / min_amount_usdRemoved value: -{ - "description": "stated amount at or above this.", - "type": "number" -} - changed
Input schema / properties / name / descriptionPrevious value: -"Name for this space, e.g. 'neuromodulation startups'."New value: +"Name for this watch, e.g. 'neuromodulation startups'." - removed
Input schema / properties / new_awardRemoved value: -{ - "description": "NIH first-year awards only.", - "type": "boolean" -} - removed
Input schema / properties / phaseRemoved value: -{ - "description": "NIH program phase.", - "enum": [ - "SBIR Phase I", - "SBIR Phase II", - "STTR Phase I", - "STTR Phase II" - ], - "type": "string" -} - added
Input schema / properties / roleAdded value: +{ + "description": "Optional: a role being hired, e.g. 'design transfer'.", + "type": "string" +} - removed
Input schema / properties / sinceRemoved value: -{ - "description": "ISO date (YYYY-MM-DD).", - "type": "string" -} - added
Input schema / properties / stateAdded value: +{ + "description": "Optional US state name.", + "type": "string" +}
2 tool updates
- Changed
deep_record1 field changed- changed
Input schema / properties / domain / descriptionPrevious value: -"The company's website domain (recommended when requesting new research; otherwise it is resolved, and the run fails honestly if it cannot be)."New value: +"The company's website domain. Required for a company not on Whimbrel's list yet: when a reply asks for it, ask the rep and call again with it."
- Changed
people1 field changed- added
Input schema / properties / domainAdded value: +{ + "description": "Optional: the company's website, for a company not on Whimbrel's list yet. When a reply asks for it, ask the rep and call again with it.", + "type": "string" +}
7 tool updates
- Changed
account2 fields changed- removed
Input schema / properties / buyer_rolesRemoved value: -{ - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / competitorsRemoved value: -{ - "description": "Competing firms: kept out of lists.", - "items": { - "type": "string" - }, - "type": "array" -}
- Changed
forget1 field changed- changed
Input schema / properties / companies / descriptionPrevious value: -"Companies whose status, notes and history to delete."New value: +"Companies whose status and profile entries to delete."
- Removed
my_contacts - Removed
my_list - Changed
people2 fields changed- changed
Input schema / properties / role / descriptionPrevious value: -"Optional: the function to reach, in plain words (e.g. 'R&D', 'quality', 'sourcing')."New value: +"Optional: one role group to show. Map the rep's words to a key: rd_engineering (R&D and engineering), quality (Quality), regulatory (Regulatory), clinical (Clinical), supply_chain (Supply chain and sourcing), operations (Operations and manufacturing), executive (Executive), business (Business), other (Other). Filters the researched people only." - added
Input schema / properties / role / enumAdded value: +[ + "rd_engineering", + "quality", + "regulatory", + "clinical", + "supply_chain", + "operations", + "executive", + "business", + "other" +]
- Removed
today - Changed
trade_show5 fields changed- removed
Input schema / properties / endsRemoved value: -{ - "description": "Last day.", - "type": "string" -} - removed
Input schema / properties / metRemoved value: -{ - "description": "After the show: who the rep met.", - "items": { - "properties": { - "company": { - "type": "string" - }, - "email": { - "type": "string" - }, - "follow_up": { - "description": "When to follow up (default two days from now).", - "type": "string" - }, - "name": { - "type": "string" - }, - "note": { - "description": "What they talked about, in the rep's words.", - "type": "string" - }, - "outcome": { - "description": "Default contacted.", - "enum": [ - "contacted", - "replied", - "meeting", - "interested", - "not_fit", - "not_now", - "customer", - "competitor", - "lost" - ], - "type": "string" - }, - "phone": { - "type": "string" - }, - "role": { - "type": "string" - } - }, - "required": [ - "company" - ], - "type": "object" - }, - "type": "array" -} - changed
Input schema / properties / show / descriptionPrevious value: -"The show, with its year, e.g. 'MD&M West 2027'."New value: +"Optional: the show, with its year, e.g. 'MD&M West 2027'." - removed
Input schema / properties / startsRemoved value: -{ - "description": "First day, e.g. 2027-02-02.", - "type": "string" -} - added
Input schema / requiredAdded value: +[ + "exhibitors" +]
7 tool updates
- Added
check_space_watch - Changed
my_list3 fields changed- removed
Input schema / properties / rankRemoved value: -{ - "description": "A list of company names to rank for the rep's firm instead.", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / showRemoved value: -{ - "description": "A trade show. With only name: its saved plan. With an empty name: the rep's saved shows.", - "properties": { - "ends": { - "description": "Last day.", - "type": "string" - }, - "exhibitors": { - "description": "Exhibiting company names.", - "items": { - "type": "string" - }, - "type": "array" - }, - "met": { - "description": "After the show: who the rep met.", - "items": { - "properties": { - "company": { - "type": "string" - }, - "email": { - "type": "string" - }, - "follow_up": { - "description": "When to follow up (default two days from now).", - "type": "string" - }, - "name": { - "type": "string" - }, - "note": { - "description": "What they talked about, in the rep's words.", - "type": "string" - }, - "phone": { - "type": "string" - }, - "role": { - "type": "string" - } - }, - "required": [ - "company" - ], - "type": "object" - }, - "type": "array" - }, - "name": { - "description": "The show, with its year, e.g. 'MD&M West 2027'.", - "type": "string" - }, - "starts": { - "description": "First day, e.g. 2027-02-02.", - "type": "string" - } - }, - "type": "object" -} - removed
Input schema / properties / watchRemoved value: -{ - "description": "A named space to watch: save it, then diff it later for what is new.", - "properties": { - "action": { - "description": "save stores what matches now; diff returns what is new since.", - "enum": [ - "save", - "diff" - ], - "type": "string" - }, - "kind": { - "description": "On save: only one kind of evidence, e.g. fda_clearance or trial_registration.", - "type": "string" - }, - "matching": { - "description": "On save: words the evidence must match, e.g. 'neuromodulation'.", - "type": "string" - }, - "name": { - "description": "Name for this space, e.g. 'neuromodulation startups'.", - "type": "string" - }, - "since": { - "description": "On save: ISO date; evidence on or after it.", - "type": "string" - } - }, - "required": [ - "name", - "action" - ], - "type": "object" -}
- Removed
openers - Added
opening_line_facts - Added
rank_list - Added
save_space_watch - Added
trade_show
1 tool update
- Changed
my_list2 fields changed- added
Input schema / properties / showAdded value: +{ + "description": "A trade show. With only name: its saved plan. With an empty name: the rep's saved shows.", + "properties": { + "ends": { + "description": "Last day.", + "type": "string" + }, + "exhibitors": { + "description": "Exhibiting company names.", + "items": { + "type": "string" + }, + "type": "array" + }, + "met": { + "description": "After the show: who the rep met.", + "items": { + "properties": { + "company": { + "type": "string" + }, + "email": { + "type": "string" + }, + "follow_up": { + "description": "When to follow up (default two days from now).", + "type": "string" + }, + "name": { + "type": "string" + }, + "note": { + "description": "What they talked about, in the rep's words.", + "type": "string" + }, + "phone": { + "type": "string" + }, + "role": { + "type": "string" + } + }, + "required": [ + "company" + ], + "type": "object" + }, + "type": "array" + }, + "name": { + "description": "The show, with its year, e.g. 'MD&M West 2027'.", + "type": "string" + }, + "starts": { + "description": "First day, e.g. 2027-02-02.", + "type": "string" + } + }, + "type": "object" +} - added
Input schema / properties / watchAdded value: +{ + "description": "A named space to watch: save it, then diff it later for what is new.", + "properties": { + "action": { + "description": "save stores what matches now; diff returns what is new since.", + "enum": [ + "save", + "diff" + ], + "type": "string" + }, + "kind": { + "description": "On save: only one kind of evidence, e.g. fda_clearance or trial_registration.", + "type": "string" + }, + "matching": { + "description": "On save: words the evidence must match, e.g. 'neuromodulation'.", + "type": "string" + }, + "name": { + "description": "Name for this space, e.g. 'neuromodulation startups'.", + "type": "string" + }, + "since": { + "description": "On save: ISO date; evidence on or after it.", + "type": "string" + } + }, + "required": [ + "name", + "action" + ], + "type": "object" +}
3 tool updates
- Added
about_the_data - Added
forget - Changed
my_list1 field changed- removed
Input schema / properties / removeRemoved value: -{ - "description": "Companies to stop working.", - "items": { - "type": "string" - }, - "type": "array" -}
2 tool updates
- Changed
account2 fields changed- added
Input schema / properties / skipAdded value: +{ + "description": "With step: the rep skipped that question or has none.", + "type": "boolean" +} - added
Input schema / properties / stepAdded value: +{ + "description": "During the profile build: the ask_now.step being answered.", + "type": "string" +}
- Added
news
1 tool update
- Added
crm_export
Related MCP Connectors
FDA 510(k)s, PMAs, recalls & trials, linked: predicate search and review-time stats for AI agents.
Telehealth support for Claude, Codex and Cursor: investigate cases and connect your tools.
Biotech intelligence for AI agents: drugs, targets, diagnostics, PoS estimates, and writeups.
Federal contracts, FDA recalls, business registrations, Amazon products — B2B intel.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI agents to access FDA and ClinicalTrials.gov data for medical device compliance, adverse event monitoring, and regulatory due diligence.-
- AlicenseAqualityDmaintenanceA Bloomberg Terminal you can talk to. Query company relationships — suppliers, customers, competitors, supply chain paths — directly from Claude, Cursor, or any MCP-compatible AI assistant.71MIT
- AlicenseNot gradedqualityBmaintenancePharmaceutical R\&D Pipeline Intelligence for AI Agents — Clinical trials, FDA approvals, drug information & publications in one MCP server.5MIT
- AlicenseBqualityDmaintenanceEnables comprehensive medical research by querying and analyzing data across ClinicalTrials.gov, PubMed, and FDA databases with AI-enhanced cross-database insights, risk assessments, and competitive intelligence.1311MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.