mymedi-ai-mcp-server
Summary: This MCP server provides medical coding, DME/prior-auth and claims, drug, provider, and clinical/public-health data tools.
Look up, suggest, validate, cross-reference, and estimate Medicare reimbursement for ICD-10, CPT, and HCPCS codes.
Predict prior-authorization approval likelihood and check tracked PA status.
Validate claims pre-submission and extract medical entities from de-identified clinical text.
Audit documentation/compliance; README describes DMEPOS order documentation audit, while the provided schema describes HIPAA/PHI scanning.
Query OpenFDA drug labels/adverse events, drug-drug interaction signals, and RxNorm normalization.
Search/enrich NPI providers, check CMS Open Payments, and analyze specialty market data by state.
Search clinical trials and CDC disease surveillance data.
README also documents free DME tools, batch lookups, fee schedules, denial/modifier guidance, prompts, resources, and credit/account tools; the schema exposes 20 of the advertised 32 tools.
Enables payment processing for purchasing credit packages to use the healthcare AI tools, allowing users to buy credits for medical billing services through Stripe payment integration.
This server has a remotely hosted endpoint. Open its connector listing for connection details, authentication requirements, and setup instructions:
@mymedi-ai/mcp-server
MCP server for DME billing and medical coding. Connect Claude, Cursor, VS Code or any MCP client to 32 tools — code lookup across a database of 90K+ ICD-10-CM, CPT and HCPCS codes, DMEPOS fee schedules, Medicare prior-authorization and face-to-face list checks, denial-code guidance and pre-submission claim checks — plus five DME billing prompts and three dataset resources. Six tools work with no API key.
PHI-free by design: the tools take codes, modifiers, dates of service and de-identified text, never patient identifiers. Apart from drawing credits for paid calls, no tool changes anything except buy_credits, which opens a Stripe checkout session (nothing is charged until checkout is completed in the browser).
Claude (web or desktop) users: on Free, Pro and Max plans, open Customize → Connectors → + Add → Add custom connector, give it a name and the URL https://mymedi-ai.com/mcp-stream, then Add → Connect. On Team and Enterprise plans an Owner adds it once under Organization settings → Connectors → Add → Custom → Web, and members then Connect it from Customize → Connectors. The endpoint is OAuth-protected: Claude registers itself and asks you to sign in to MyMedi-AI once, and the first connector sign-in comes with free starter credits. There is no API key to copy.
Quick Start
Requires Node.js 20 or later.
Install
claude mcp add mymedi-ai --env MCP_API_KEY=your-api-key -- npx -y @mymedi-ai/mcp-serverLeave out --env MCP_API_KEY=… to start with the six free tools. Other clients are under Client setup.
Get an API key (for the paid tools)
Registration is a POST request, not a web page:
curl -X POST https://mymedi-ai.com/bot-marketplace/register \
-H "Content-Type: application/json" \
-d '{"name": "my-agent"}'
# → { "apiKey": "...", "credits": ..., "quickStart": { ... } }Set the returned apiKey as MCP_API_KEY. (MYMEDI_API_KEY, the name the registration response prints, is accepted too; MCP_API_KEY wins when both are set.) A new key comes with free starter credits; the buy_credits tool adds more.
Or try a free endpoint
curl "https://mymedi-ai.com/agent/v1/demo?code=99213"Returns basic code metadata, rate-limited to 60 requests per hour per IP.
Related MCP server: LiveDataLink
Free tools (no API key)
Install the server without MCP_API_KEY and these work immediately (60 requests per hour per IP):
Tool | What it does |
| Is a HCPCS code on the CMS Required Prior Authorization List (42 CFR 414.234) on a date of service; phased-in items by state |
| DME denial code (CARC) explainer — meaning, common causes, fixes, appealability |
| Basic code metadata — code, type, description, category, active status |
| Medicare national PFS payment and DMEPOS fee-schedule ranges (rental/purchase) |
| Blank DMEPOS pre-delivery checklist — SWO elements, F2F/WOPD, prior authorization (42 CFR 410.38) |
| DMEPOS billing-modifier guidance — KX/GA/GY/GZ, RR/NU/UE, capped-rental months, laterality |
The other 26 tools need an API key (or the connector sign-in): 24 are paid — per call, or per code for code_lookup_batch, code_validate_batch and pa_exposure_report — and account_status and buy_credits are free but need the key to identify the account.
Client setup
Claude Desktop
Add to claude_desktop_config.json:
{
"mcpServers": {
"mymedi-ai": {
"command": "npx",
"args": ["-y", "@mymedi-ai/mcp-server"],
"env": {
"MCP_API_KEY": "your-api-key"
}
}
}
}Cursor
Add to .cursor/mcp.json:
{
"mcpServers": {
"mymedi-ai": {
"command": "npx",
"args": ["-y", "@mymedi-ai/mcp-server"],
"env": { "MCP_API_KEY": "your-api-key" }
}
}
}VS Code
Add to .vscode/mcp.json:
{
"servers": {
"mymedi-ai": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@mymedi-ai/mcp-server"],
"env": { "MCP_API_KEY": "your-api-key" }
}
}
}Claude Code
claude mcp add mymedi-ai --env MCP_API_KEY=your-api-key -- npx -y @mymedi-ai/mcp-serverTools (32)
Free (no API key)
Tool | Description | Price |
| Medicare DMEPOS prior-auth required check (42 CFR 414.234) | free |
| DME denial code (CARC) explainer | free |
| Basic code metadata lookup | free |
| Medicare national PFS payment + DMEPOS fee-schedule ranges | free |
| Blank DMEPOS pre-delivery checklist (SWO, F2F/WOPD, PA) | free |
| DMEPOS billing-modifier guidance (KX/GA/GY/GZ, RR/NU/UE, laterality) | free |
Account (free — uses your sign-in or API key)
Tool | Description | Price |
| Credit balance, usage and recent transactions | free |
| Returns a Stripe checkout link to add credits; charges nothing by itself | free |
Medical coding
Tool | Description | Price |
| Look up an ICD-10, CPT or HCPCS code; labeled DMEPOS fee schedule, optional state | $0.001 |
| Up to 25 codes per call, per-item results; refunded when every code misses | $0.001/code |
| Code suggestions from a clinical description (term search, coverage ranking; refunded on no match) | $0.01 |
| Is a code valid and active, optionally on a date of service | $0.005 |
| Up to 25 codes per call, per-item results | $0.005/code |
| Related codes across ICD-10, CPT and HCPCS | $0.02 |
| Medicare PFS rates: RVUs and estimated payment | $0.01 |
| DMEPOS fee schedule — rental/purchase, rural/non-rural, by state | $0.01 |
Prior auth and claims
Tool | Description | Price |
| Prior-auth approval rate from your organization's own decided PAs (10 or more), else the CMS list facts, refunded — never a made-up probability | $0.05 |
| Status of a PA tracked in your MyMedi-AI web workspace (does not query payers) | $0.02 |
| Map up to 100 HCPCS codes against the CMS PA and F2F/WOPD lists on a date of service, with documentation gates and denial-risk flags; pass a state for items phased in by state | $0.01/code |
| Pre-submission check of a claim's codes and date of service; does not assess medical necessity or prior authorization | $0.05 |
| ICD-10-CM, HCPCS Level II (with modifiers) and keyword-marked CPT codes found in de-identified text, each checked against the code sets, plus M/D/Y dates and a dose-unit flag; no drug names | $0.02 |
| Audit of one DMEPOS order's documentation (SWO elements, F2F/WOPD, prior authorization) for its HCPCS code and date of service, from true/false facts — never identifiers; pass or fail per requirement with its citation, and a result that fails when any requirement fails | $0.25 |
Drug data
Tool | Description | Price |
| OpenFDA drug label and adverse-event data | $0.01 |
| FAERS reports naming the drugs together, with a proportional reporting ratio (PRR) and 95% interval per reaction against each drug alone — statistical associations, not evidence of an interaction | $0.03 |
| Normalize a drug name with NIH RxNorm (RxCUI, term type) | $0.02 |
| First matching openFDA drug label plus a labelled LLM summary (class and the indications the label states); no treatment advice, no interaction check and no prior-auth, coverage or cost determination | $0.03 |
Providers and market
Tool | Description | Price |
| NPI registry (NPPES) search by name, specialty or location | $0.005 |
| NPPES record for an NPI plus a labelled LLM estimate of specialty demand, network gaps and referral categories | $0.05 |
| Industry payments to a physician (CMS Open Payments) | $0.02 |
| NPPES provider count for a specialty and state (a floor; one query returns at most 200) plus a labelled LLM estimate of demand and opportunities | $0.10 |
Clinical and public health
Tool | Description | Price |
| Clinical trials (ClinicalTrials.gov) | $0.03 |
| Notifiable-disease case counts (CDC NNDSS) | $0.02 |
Prompts
Prompt | Arguments | What it does |
|
| Decodes the denial with |
|
| Assembles the blank pre-delivery paperwork checklist with |
|
| Checks codes and date of service with |
|
| Decodes the denial and outlines a redetermination letter with the documents to attach |
|
| Pulls |
Resources
Resource | URI | Contents |
PA Required List |
| CMS Required Prior Authorization List (42 CFR 414.234) with categories and nationwide-since dates |
F2F + WOPD List |
| CMS face-to-face / written-order-prior-to-delivery list (42 CFR 410.38(d)) plus the standard written order elements |
Platform overview |
| What MyMedi-AI is, the tool catalog, pricing and integration paths (read from the public site; a short summary if it cannot be reached) |
Credits and billing
The per-tool price list is published as JSON at
https://mymedi-ai.com/bot-marketplace/credits/pricing.1 credit = $0.001. Paid tools cost from 1 credit (
code_lookup) to 250 credits (compliance_audit) per call;code_lookup_batch,code_validate_batchandpa_exposure_reportare priced per code. A failed call is refunded.Each successful paid call's result includes a
_billingfield:{ "creditsSpent": …, "creditsRemaining": …, "priceUSD": … }. (Over plain REST, without MCP, the same figures arrive asX-Credits-Spent/X-Credits-Remainingheaders.)account_statusshows the balance and recent transactions.buy_creditsreturns a Stripe checkout link — $1 buys 1,000 credits, packages run from $1 to $500 — and the credits arrive once checkout is completed.
Environment variables
Variable | Description | Default |
| API key from registration; omit it to use only the free tools | — |
| Accepted alias of | — |
| API base URL |
|
| Shared-egress rate-limit token for hosted multi-user deployments (not needed for individual installs) | — |
|
| — |
| Address the HTTP mode listens on |
|
| Port the HTTP mode listens on |
|
| Bearer token clients must send to the HTTP mode; required when | — |
| Hostnames or addresses clients use to reach the HTTP mode (comma-separated); with | — |
| Browser origins allowed to call the HTTP mode (comma-separated, e.g. | none |
| Most open HTTP sessions |
|
| An HTTP session unused this long is closed |
|
HTTP mode (--http)
The same server can run over Streamable HTTP for clients that connect by URL:
MCP_API_KEY=your-api-key npx -y @mymedi-ai/mcp-server --http
# MCP HTTP server listening on http://127.0.0.1:8080/mcpEvery call through it spends the key in MCP_API_KEY, so the endpoint is guarded:
Loopback by default. It listens on 127.0.0.1 unless
MCP_HOSTsays otherwise.A token off loopback. With a non-loopback
MCP_HOST(such as0.0.0.0) the server refuses to start unlessMCP_HTTP_TOKENis set — at least 32 characters, for exampleopenssl rand -hex 32. Clients then sendAuthorization: Bearer <token>; anything else gets 401. A token can be set on loopback too.Host check. A request must name the server as
localhost,127.0.0.1,[::1], theMCP_HOSTaddress, or a hostname or address inMCP_ALLOWED_HOSTS; any otherHostgets 403. This stops DNS-rebinding pages. WithMCP_HOST=0.0.0.0the server has no address of its own to match, so list every address clients use — the LAN IP, the Docker host's IP, a DNS name — inMCP_ALLOWED_HOSTS.Origin check. A request from a web page (it carries an
Originheader) gets 403 unless that origin is inMCP_ALLOWED_ORIGINS, and only listed origins receive CORS headers. Desktop clients send noOriginand are unaffected.Limits. Bodies over 1 MiB get 413, a body that is not JSON gets a JSON-RPC parse error, sessions are capped (
MCP_MAX_SESSIONS) and closed afterMCP_SESSION_IDLE_MSwithout use, and an unknown session id gets 404 so the client starts a new session.
Serving other machines:
MCP_HOST=0.0.0.0 MCP_HTTP_TOKEN="$(openssl rand -hex 32)" MCP_ALLOWED_HOSTS=mcp.example.com,192.168.1.20 \
MCP_API_KEY=your-api-key npx -y @mymedi-ai/mcp-server --httpPut TLS (a reverse proxy) in front of it when traffic leaves the machine: the token travels in a header.
Changes in 1.7.10
No configuration changes. Every tool repeats its title in annotations.title, where the Claude Connectors Directory reads it. provider_search (taxonomy) and market_analysis (specialty) describe the specialty they take as an NPPES (NUCC) taxonomy description, such as "Pulmonary Disease" or "Orthopaedic Surgery", where a trailing * matches a prefix; the API refuses a specialty NPPES cannot match (a 400, at no cost) instead of reporting zero providers.
Changes in 1.7.9
No configuration changes. Tool descriptions say what each tool returns and when it applies; none instructs the model or names another tool. drug_enrich and pa_predict describe what the API now returns: the drug_enrich summary restates the label (the therapeutic class and the indications it lists) and no longer names alternative therapies or adds clinical notes, so the tool gives no treatment advice; the pa_predict recommendation states the CMS requirement, whatever the approval rate. Neither makes a coverage or prior-authorization determination.
Changes in 1.7.8
No configuration changes, but update to use compliance_audit: it now takes an order, and the API refuses the free-form payload that 1.7.7 and earlier send (a 400, at no cost).
Three paid tools now do what their descriptions say. compliance_audit audits one DMEPOS order's documentation — the standard written order elements, the face-to-face encounter and written order before delivery, and prior authorization — for the order's HCPCS code and date of service (now required), from true/false facts that never carry identifiers; each requirement comes back pass or fail with its citation, and the result fails when one does. It no longer runs the identifier pattern checks it used to; auditType is optional and takes only dme_order. drug_interactions returns the number of FAERS reports naming the drugs together and, for each reaction, a proportional reporting ratio with a 95% interval against each drug alone, in place of a grade by report volume; drug names are normalized to what openFDA can search (accents, curly apostrophes, ® and ™, "+" and "&", and strengths such as 0.5% or 1:100,000), and a name with fewer than two letters or digits, or with quotes or other symbols, is refused. ner_extract reads whole ICD-10-CM codes (with extensions), HCPCS Level II codes with their modifiers, and CPT codes only where a keyword marks them, each checked against the code sets; entityTypes adds HCPCS_CODE.
The code tools rank and date their answers. code_suggest ranks by relevance: it reads common abbreviations and alternate forms (CPAP, OSA, COPD, IG for immune globulin, type 2) and a typed side, sex or "without", lists the best code for each separate thing a description names first, and leaves weak matches out instead of padding the list. code_crossref returns curated linkedCodes (the DME code family, and links across code systems that cite their CMS source) and crossReferences ranked by relevanceScore, weak matches left out; an answer with no related codes is refunded. code_validate and code_validate_batch take dateOfService (or date_of_service) at the top level as well as in context, refuse a date that is not YYYY-MM-DD or two dates that differ, and report asOf, the date a code was judged for. claims_validate states what it checks — codes active on the date of service, well-formed modifiers, a date not in the future — and that it applies no NCCI edits.
Changes in 1.7.7
No configuration changes. Tool descriptions now match what the API returns: drug_enrich lists the label fields and the labelled LLM summary it returns, and says a failed call is refunded (the API no longer returns a model-made prior-auth likelihood or cost tier); pa_predict says its approval rate comes only from your organization's own decided prior authorizations and that payerId is a payer category; ner_extract names the patterns it matches (it extracts no drug names), and its entityTypes filter now applies; code_suggest takes up to 500 characters (the search never read more; longer text is now refused instead of silently cut); data sources are named without licence claims. The support address is info@mymedi-ai.com.
Upgrading to 1.7.6
Breaking for remote --http deployments only. Up to 1.7.5 the HTTP mode listened on every interface, served any caller without a token and sent Access-Control-Allow-Origin: *. From 1.7.6 it listens on 127.0.0.1; to serve other machines set MCP_HOST, MCP_HTTP_TOKEN (required off loopback) and MCP_ALLOWED_HOSTS with every hostname or address clients use (with MCP_HOST=0.0.0.0 that includes LAN and Docker-host IPs); browser-based clients also need MCP_ALLOWED_ORIGINS. An unknown session id now gets 404 instead of 400. stdio installs (Claude Desktop, Cursor, VS Code, Claude Code) are unaffected.
1.7.6 also requires Node.js 20 or later (Node 18 is past end of life, and the SDK's dependencies need 20). Also in 1.7.6: the server sends its instructions at initialize; scrub-claim takes an optional dateOfService and no longer asks about medical necessity; MYMEDI_API_KEY is accepted as an alias of MCP_API_KEY; and a paid call without a key explains how to register.
SDK
For programmatic use without MCP, install the SDK:
npm install @mymedi-ai/sdkimport { MyMediAI } from '@mymedi-ai/sdk';
const client = new MyMediAI({ apiKey: 'your-api-key' });
const result = await client.codeLookup('M79.3');Data sources
ICD-10-CM and HCPCS Level II: CMS and CDC code sets
CPT®: from the CMS physician fee schedule (RVU) files. CPT® is a registered trademark of the American Medical Association (AMA); CPT codes and descriptions are AMA copyright.
Fee schedules and lists: CMS DMEPOS fee schedule, Medicare physician fee schedule (RVU), the Required Prior Authorization List and the F2F/WOPD list
Providers: CMS NPI registry (NPPES) and CMS Open Payments
Drugs: openFDA (labels, adverse events) and NIH RxNorm
Clinical and public health: ClinicalTrials.gov and CDC NNDSS
Troubleshooting
402 "payment_required" — without an API key, a paid tool answers with the registration request to send (see Get an API key); with a key, it means the credits ran out: call
buy_credits. The six free tools never need a key."invalid_api_key" — the key in
MCP_API_KEY(orMYMEDI_API_KEY) was not recognised: check it for a typo or a missing part and restart the server, or register a new key.429 on free tools — free endpoints allow 60 requests per hour per IP. Wait, or use a key and the paid equivalents.
Connector won't connect — the hosted endpoint is
https://mymedi-ai.com/mcp-stream(Streamable HTTP) and it is OAuth-protected. An unauthenticated request returns{"error":"unauthorized","error_description":"OAuth required"}— that is the endpoint working, not a fault, and a bareinspector --cli … --method tools/listshows it because it holds no token. To confirm the service is up, read the discovery document:curl -s https://mymedi-ai.com/.well-known/oauth-protected-resourcenames.../mcp-streamas the protected resource. Claude performs dynamic client registration and the sign-in itself.--httpanswers 401, 403 or refuses to start — see HTTP mode: send the bearer token, add the hostname toMCP_ALLOWED_HOSTSor the web origin toMCP_ALLOWED_ORIGINS, and setMCP_HTTP_TOKENbefore listening off loopback.Code not found — lookups expect bare codes (
E1390,99213,M79.3). Denial codes acceptCO-50,co50or50.Data currency — reference data follows CMS release cycles; prior-authorization and F2F/WOPD answers carry the list version they were checked against.
Still stuck? Email info@mymedi-ai.com or open an issue at https://github.com/MyMedi-AI/mymedi-ai-mcp-server/issues.
Links
API key registration:
POST https://mymedi-ai.com/bot-marketplace/register(a request, not a page)Hosted connector:
https://mymedi-ai.com/mcp-stream
License
MIT
Available Tools
32 toolsaccount_statusAccount status — credit balance and usage (free)ARead-onlyIdempotentInspect
Check your MyMedi-AI account: current credit balance, USD equivalent, transaction count, recent transactions, and last activity. Free — never bills credits. Uses your connector sign-in (or X-API-Key when self-hosted).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-redundant context: it is free and never bills credits, and it authenticates via the connector sign-in or X-API-Key when self-hosted. It doesn't say how many 'recent transactions' are returned or what happens with an invalid key.
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, front-loaded with the returned fields and followed by the two facts an agent most needs (no billing, auth method). No filler or restatement of the title.
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 return values and does so by listing the five data points. Auth and cost are covered; the only gaps are the size/window of 'recent transactions' and error behavior for an unauthenticated call.
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 takes zero parameters and the schema is empty, so there is no parameter semantics to document; a baseline of 4 applies. The description correctly signals that no inputs are needed by framing the call as a pure account read.
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 ('Check your MyMedi-AI account') and enumerates exactly what comes back: credit balance, USD equivalent, transaction count, recent transactions, last activity. That enumeration distinguishes it from sibling tools like buy_credits, which mutates rather than reports.
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 name and the 'check your account' phrasing, and 'Free — never bills credits' implicitly steers agents away from buy_credits for balance inquiries. However, there is no explicit when-to-use/when-not-to-use statement or named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
buy_creditsBuy credits — get a Stripe checkout linkAInspect
Top up your MyMedi-AI credits. Creates a Stripe Checkout session and returns a checkoutUrl for you to open and complete payment in the browser — calling this tool charges nothing by itself. It takes an amount (USD, min $1 = 1,000 credits) or a package (starter $1, basic $5, standard $25, professional $100, enterprise $500). 1 credit = $0.001; credits are added automatically after checkout.
| Name | Required | Description | Default |
|---|---|---|---|
| amount | No | USD amount to purchase (min $1 = 1,000 credits) | |
| package | No | Named package: starter $1/1k, basic $5/5k, standard $25/25k, professional $100/100k, enterprise $500/500k credits (alternative to amount) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds genuinely non-obvious behavior beyond the annotations: the call itself is free, checkout happens in the browser, and credits post automatically after checkout — this materially clarifies the destructiveHint=false and non-idempotent profile. It does not mention that repeat calls spawn multiple independent sessions, and there is mild tension with openWorldHint=false given the described Stripe hand-off, though that is a debatable interpretation rather than a clear contradiction.
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 key fact (free to call, returns a link) before the pricing details, and every sentence is relevant. It is somewhat dense with dollar figures duplicated from the schema, which is the only waste.
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 correctly supplies the return value (checkoutUrl) and post-checkout outcome, which is what an agent needs to chain a payment flow. It omits precedence when both amount and package are supplied, a real ambiguity in a 0-required-parameter 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 100% and the description largely restates the same amounts, package tiers and $0.001/credit conversion already documented in the schema properties. It adds little syntax or selection guidance beyond what the schema provides, so the 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 ('Top up your MyMedi-AI credits') and immediately names the concrete mechanism and return value ('Creates a Stripe Checkout session and returns a checkoutUrl'). No sibling tool touches billing, so an agent can identify it at a glance.
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?
Explains the crucial usage fact that calling it charges nothing and that the agent must open the URL for payment to complete, and presents the two acquisition paths (amount vs package) as alternatives. It does not state exclusions or prerequisites (e.g. account must be authenticated), which keeps it 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.
claims_validatePre-submission claim code and date checkARead-onlyInspect
Pre-submission check of a claim's codes and dates — no patient or provider identifiers needed or accepted. Checks that the diagnosis (ICD-10-CM) and procedure (CPT/HCPCS Level II) codes exist and are active on the date of service, that modifiers are well-formed, and that the date of service is not in the future; returns whether the claim passed, with the errors and warnings found. A CPT code missing from the loaded CMS fee schedule file, or a modifier this reference does not list for DMEPOS, is a warning, not an error. Up to 25 diagnosis codes, 50 procedure codes and 20 modifiers per claim. It applies no NCCI edits — neither procedure-to-procedure (PTP) pairs nor MUE unit limits — and does not assess medical necessity or prior authorization.
| Name | Required | Description | Default |
|---|---|---|---|
| claim | Yes | Claim data to validate |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds real behavior beyond the annotations: what is checked, that a missing fee-schedule CPT or unlisted DMEPOS modifier is a warning rather than an error, per-claim limits, and what the response contains. It does not address the non-idempotent hint (idempotentHint=false on a pure validation), leaving a small unexplained trait.
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?
Dense and front-loaded, with the core check stated first and exclusions/edge cases after. A few clauses (limit counts, warning/error detail) are packed tightly but each carries decision-relevant 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?
For a single nested-parameter, read-only validator with no output schema, the description covers inputs expected, limits, validation rules, warning-vs-error semantics, and return shape. An agent has everything needed to call it correctly and interpret results.
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 baseline is 3, but the description adds meaning the schema does not: which code systems each array expects (ICD-10-CM vs CPT/HCPCS Level II), that modifiers must be well-formed, and that the date of service cannot be in the future. Cardinality limits restate schema maxItems, which is redundant but harmless.
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 ('pre-submission check of a claim's codes and dates') and immediately bounds scope ('no patient or provider identifiers needed or accepted'). It is clearly distinguishable from code_validate / code_validate_batch, which operate on codes rather than a full claim.
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 strong when-to-use context (pre-submission) and explicit exclusions — no NCCI PTP/MUE edits, no medical necessity or prior authorization — which tells an agent when to reach for pa_required_check or compliance tools instead. It stops short of naming those siblings explicitly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_crossrefMedical code cross-reference (ICD-10 / CPT / HCPCS)ARead-onlyInspect
Related codes for an ICD-10-CM, CPT or HCPCS Level II code, across the three code systems. linkedCodes are curated: the DME code family (base item, accessories and supplies) and links across code systems that cite their CMS source — obstructive sleep apnea (G47.33) with the PAP devices CMS LCD L33718 covers and the sleep tests NCD 240.4.1 covers. crossReferences are other active codes whose descriptions best match this one, grouped by code system (up to 5 each) with a relevanceScore (0-1); weaker matches are left out, so a group can be empty, and a code with no related codes at all is refunded. Source: the MyMedi-AI code database (ICD-10-CM, CPT and HCPCS Level II code sets).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Medical code to cross-reference (e.g., "M79.3", "99213", "E0601") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (which already declare readOnly/no-destructive/openWorld=false), the description discloses genuinely non-obvious behavior: results are curated, capped at 5 per system with a 0-1 relevanceScore, weak matches are dropped so groups can be empty, and a call with no related codes is refunded. That refund/billing detail is especially valuable and explains the idempotentHint=false annotation. It does not explain ordering or whether the code type is auto-detected.
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 one dense run-on paragraph mixing purpose, output semantics, and provenance; the two distinct result groups (linkedCodes, crossReferences) would be much clearer as separate structured lines. The closing 'Source: the MyMedi-AI code database (ICD-10-CM, CPT and HCPCS Level II code sets)' partly repeats code systems already stated up front.
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 returns, and it does: both result groups, the per-system cap, relevanceScore range, and the empty/refund case. What remains thin is the shape of the linkedCodes entries (DME families, cited LCD/NCD sources) and how code system is inferred from the input.
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?
Only one parameter, and schema coverage is 100% with concrete examples ('M79.3', '99213', 'E0601') already in the schema. The description adds no syntax or normalization guidance beyond the schema, so the 3 baseline for high coverage 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?
Opens with a specific resource and scope: 'Related codes for an ICD-10-CM, CPT or HCPCS Level II code, across the three code systems,' which tells an agent exactly what it returns and distinguishes it from single-code lookups by its cross-system, related-code scope. It never names a sibling (code_lookup, code_suggest, code_lookup_basic) to sharpen the boundary, so it stops short of a 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?
Usage is only implied by the resource name; the bulk of the text describes return structure (linkedCodes vs crossReferences) rather than when to choose this over code_lookup or code_suggest. There are no explicit exclusions or preconditions (e.g., whether the code must already be valid).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_lookupMedical code lookup (ICD-10 / CPT / HCPCS)ARead-onlyInspect
Look up a medical code (ICD-10, CPT, HCPCS). Returns description, category, active status, and related codes. For DMEPOS (HCPCS) codes it also returns a labeled fee schedule: per-modifier (RR/NU/UE) national min–max ranges, or — when a state is given — that state's exact non-rural and rural rates. Source: the current CMS DMEPOS fee schedule quarter.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Medical code to look up (e.g., "M79.3", "99213", "E0601") | |
| state | No | 2-letter US jurisdiction (50 states + DC/PR/VI). For DMEPOS codes, returns that state's exact non-rural/rural fees instead of only the national range. | |
| codeType | No | Code system (auto-detected if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, destructiveHint=false, openWorldHint=false), so the description goes beyond them usefully: it discloses the data source and freshness ("current CMS DMEPOS fee schedule quarter") and the branch-dependent response shape (national min–max per modifier RR/NU/UE vs. exact state non-rural/rural rates). It does not cover error behavior for unknown or expired codes.
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 action and return fields, then the conditional fee-schedule detail. Three sentences, all carrying information; only the parenthetical code-system list mildly duplicates the title.
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 correctly takes on the burden of listing return values (description, category, active status, related codes, fee schedule) and does so. Minor gap: no mention of what happens for invalid/retired codes or when fee data is unavailable for a given code type.
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 would be 3; the description earns an extra point by explaining the semantic consequence of the `state` parameter — that supplying it switches the output from a national range to exact state-level non-rural and rural rates, and only applies to DMEPOS codes. It adds nothing new for `code` or `codeType`, which the schema already documents.
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 ("look up") and resource (a medical code) and enumerates the exact code systems it accepts (ICD-10, CPT, HCPCS), then names the returned fields. It is clearly distinguishable from siblings like drug_lookup or pa_required_check, but it does not distinguish itself from the very similar code_lookup_basic, code_reimbursement, or fee_schedule_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?
There is no explicit when-to-use guidance and no named alternatives, despite three close siblings (code_lookup_basic, code_reimbursement, fee_schedule_lookup) that an agent could easily confuse it with. The conditional state/DMEPOS behavior is described, but that is invocation behavior, not tool selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_lookup_basicBasic medical code lookup (free)ARead-onlyIdempotentInspect
Look up basic metadata for a medical code: code, codeType, description, category, isActive. Basic metadata only. Free, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Medical code to look up (e.g., "M79.3") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, and closed-world behavior. The description adds useful context beyond annotations: it says the lookup is free, needs no API key, and returns only basic metadata fields.
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 description is short and front-loaded, with the core action and returned fields stated first. The phrase 'Basic metadata only' slightly repeats the opening, but overall it is efficient.
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 read operation with full schema coverage and rich annotations, the description provides enough context by naming the returned fields and noting cost/auth constraints. It does not explain sibling routing or error behavior, but those are minor gaps for this tool's complexity.
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 sole parameter is already documented with an example. The description repeats that a medical code is looked up but adds no extra format, validation, or edge-case details beyond 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?
The description states a clear verb and resource: looking up basic metadata for a medical code, and lists the returned fields. It distinguishes itself somewhat with 'Basic metadata only' but does not explicitly contrast with the sibling code_lookup or code_lookup_batch 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 phrase 'Basic metadata only. Free, no API key required' implies the tool is for lightweight, unauthenticated lookups. However, it gives no explicit when-to-use or when-not-to-use guidance and does not point to code_lookup for richer results.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_lookup_batchBatch medical code lookup (up to 25 codes)ARead-onlyInspect
Look up a list of medical codes (ICD-10, CPT, HCPCS) in one call. Each item returns what a single lookup does (description, category, active status, related codes, DMEPOS fee schedule with optional state filter). Priced per code — $0.001 × number of codes, max 25 per call; the full charge is refunded automatically when every code misses.
| Name | Required | Description | Default |
|---|---|---|---|
| codes | Yes | Medical codes to look up, e.g. ["E0601", "A7030", "M79.3"] (1-25 per call) | |
| state | No | 2-letter US jurisdiction (50 states + DC/PR/VI). For DMEPOS codes, returns that state's exact non-rural/rural fees instead of only the national range. | |
| codeType | No | Code system applied to every code (auto-detected if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses important behavioral details: pricing is per code at $0.001 × code count, the maximum is 25, and the full charge is refunded when every code misses. It also summarizes the per-item return fields, including DMEPOS fee schedule behavior when a state is supplied.
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 description is two tightly written sentences. It is front-loaded with the core lookup purpose, then adds return behavior, pricing, maximum, and refund condition without redundant restatement.
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 appropriately enumerates what each item returns and explains the cost model and batch limit. It does not describe error behavior for invalid codes or partial misses beyond the all-codes-miss refund, but it is otherwise complete for correct 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 description coverage is 100%, so the input schema already documents all three parameters, including the codes list, state filter, and codeType enum. The description adds only limited extra parameter meaning, such as reinforcing that state affects DMEPOS fee schedule output, so it meets the baseline rather than exceeding 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 opens with a specific verb and resource: look up a list of medical codes across ICD-10, CPT, and HCPCS. The phrase "in one call" clearly distinguishes this batch operation from single-code lookup siblings, and the supported code systems are stated explicitly.
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 makes the batch use case clear by saying it looks up a list of codes in one call and enforces a 25-code maximum. It does not explicitly name single-code alternatives or state when validation rather than lookup is appropriate, so it lacks full routing guidance despite clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_reimbursementMedicare reimbursement rates (CMS PFS + OPPS)BRead-onlyInspect
Look up Medicare reimbursement rates for a medical code. Returns RVU values and estimated payment amounts using the PFS conversion factor. Source: the current Medicare PFS (CMS RVU files).
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Medical code (e.g., "99213", "M79.3") | |
| codeType | No | Code system (auto-detected if omitted) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, closed-world, non-destructive behavior, so the safety profile is covered. The description adds genuinely useful provenance (CMS RVU files, PFS conversion factor) and states what is returned. It does not disclose data-year/freshness limits or behavior for unknown/unsupported codes, and it silently narrows the title's 'PFS + OPPS' claim to PFS only.
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, front-loaded with the action and result, with provenance last. Slightly redundant: 'PFS conversion factor' and 'Medicare PFS (CMS RVU files)' restate the same source twice.
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 usefully names the return fields (RVUs, estimated payment), which is a real contribution. It still leaves gaps an agent would care about: whether OPPS facility rates are covered as the title implies, which payment year the RVU files represent, and error handling for invalid codes.
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%, including examples for `code` and an enum plus auto-detection note for `codeType`, so the schema carries the semantics. The description adds nothing about code formats, auto-detection, or what happens when codeType conflicts with the supplied code.
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 ('Look up Medicare reimbursement rates for a medical code') and even names the output (RVU values, estimated payment). However, it does not distinguish itself from siblings like reimbursement_basic or fee_schedule_lookup, which an agent could easily confuse it with.
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?
No when-to-use or when-not-to-use guidance is given, and no alternative sibling is named. The agent must infer from the name alone whether to call this or reimbursement_basic / fee_schedule_lookup / code_lookup_basic.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_suggestMedical code suggestions from clinical textARead-onlyInspect
Suggest ICD-10-CM, CPT and HCPCS Level II codes from a clinical or equipment description — a term search over the 90K-code CMS database, no language model. Works with natural sentences ("patient with obstructive sleep apnea prescribed CPAP" lists G47.33 and E0601 first), common abbreviations and alternate forms (CPAP, OSA, COPD, IG for immune globulin, type 2), and a typed side, sex or "without". Ranked by relevance (relevanceScore 0-1: how much of the description a code matches, and how closely), with two exceptions: the best code for each separate thing a description names (a diagnosis and a device) comes first, so the list is grouped rather than strictly sorted by relevanceScore; and a bare common condition ("hypertension") lists its ICD-10-CM default code first. Weak matches are left out rather than listed. Up to 500 characters, of which up to 10 distinct terms are searched, common words left out. Automatically refunds the call when nothing matches.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Max suggestions to return (default 10, max 50) | |
| codeType | No | Limit to specific code system | |
| description | Yes | Clinical description to find codes for (e.g., "chronic lower back pain") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive, closed-world and non-idempotent behavior, so the safety profile is covered. The description adds real context beyond that: relevance ranking with relevanceScore 0-1, grouping of best-per-mentioned-entity, default-code behavior for bare conditions, weak matches omitted, and automatic refund when nothing matches. That is meaningful but mostly ranking semantics rather than operational constraints like latency or failure modes.
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 verb+resource and mechanism, and every clause carries information. It is, however, a single dense paragraph with long parentheticals and nested exceptions that make the ranking rules harder to parse than necessary.
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, and the description compensates by explaining the return ordering, the relevanceScore field, grouping behavior, and omission of weak matches — everything an agent needs to interpret results. Given only three simple parameters, nothing material is left undocumented.
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 would be 3, but the description adds interpretation the schema lacks: what kinds of text the description parameter accepts (natural sentences, abbreviations, side/sex qualifiers) and the effective 500-character/10-term search behavior behind it. It says nothing extra about limit or codeType beyond the schema, which keeps it at 4 rather than 5.
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 opens with a specific verb+resource ("Suggest ICD-10-CM, CPT and HCPCS Level II codes from a clinical or equipment description") and even names the mechanism (term search over the CMS database, no language model). It is clearly distinguishable from lookup-style siblings by emphasizing natural-language input, but it never names or contrasts an actual sibling such as code_lookup or code_lookup_basic.
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 concrete guidance on what input works: natural sentences, abbreviations, alternate forms, typed side/sex/"without", 500-character cap and 10-term search limit, plus an example. It stops short of explicit when-to-use/when-not or routing to alternatives like code_lookup for exact-code resolution.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_validateMedical code validationARead-onlyInspect
Check that an ICD-10-CM, CPT or HCPCS Level II code exists and is valid on a date of service: termination and effective dates are applied, so a code deleted after that date still validates. dateOfService is YYYY-MM-DD (default today); asOf in the result is the date the code was judged for. Returns valid, active, warnings and errors.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Medical code to validate | |
| context | No | ||
| codeType | No | ||
| dateOfService | No | Date of service, YYYY-MM-DD (default today) | |
| date_of_service | No | Same as dateOfService (snake_case spelling) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint true, openWorldHint false, idempotentHint false, destructiveHint false, so the safety profile is covered. The description adds important behavioral context beyond annotations: it applies termination and effective dates, explains that a code deleted after the date of service still validates, states the default date is today, and mentions the asOf result field and return fields (valid, active, warnings, errors). This is solid behavioral disclosure for a read-only validation tool.
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 primary purpose and key date logic, then the date parameter default, then return fields. No wasted words; every sentence contributes useful 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?
Given no output schema, the description helpfully lists return fields (valid, active, warnings, errors) and explains date-of-service behavior and the asOf result. Annotations cover the safety profile. The main remaining gaps are the unexplained context object and the lack of detail on the codeType enum, but for typical use the definition is mostly complete.
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 60%, so the baseline is 3. The description repeats the dateOfService format and default, and implies code types (ICD-10-CM, CPT, HCPCS) which maps to the codeType enum, but it does not explain the context object, the duplicate dateOfService/date_of_service parameters, or the codeType enum values. It adds some value but doesn't compensate for the remaining schema gaps.
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 (Check/validate) and resource (ICD-10-CM, CPT, HCPCS Level II code), and uses singular 'a code' which implicitly distinguishes it from the batch sibling code_validate_batch. An agent can immediately tell this validates one code's existence and validity on a date.
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 'Check that ... a code exists and is valid' but there is no explicit when-to-use versus alternatives like code_validate_batch or code_lookup, nor any stated exclusions or prerequisites. The description gives enough context to infer its purpose, but stops short of routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
code_validate_batchBatch medical code validation (up to 25 codes)ARead-onlyInspect
Validate up to 25 medical codes in one call, each judged as in a single validation: exists, and is valid on the date of service (dateOfService, YYYY-MM-DD, applied to every code; default today). Each item returns valid, active, asOf, warnings, errors and codeDetails. Priced per code — $0.005 × number of codes, max 25 per call. An invalid code is a billable answer (valid:false).
| Name | Required | Description | Default |
|---|---|---|---|
| codes | Yes | Medical codes to validate (1-25 per call) | |
| context | No | ||
| codeType | No | Code system applied to every code | |
| dateOfService | No | Date of service, YYYY-MM-DD, applied to every code (default today) | |
| date_of_service | No | Same as dateOfService (snake_case spelling) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/openWorld/idempotent annotations: discloses pricing ($0.005 per code, capped at 25), the fields returned per item, that dateOfService is applied uniformly with today as default, and that an invalid code is still a billable answer (valid:false). That last point is unusually valuable behavioral context for a paid validation call.
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 dense sentences, all front-loaded with the verb and scope first, then return shape, then cost. Every sentence carries distinct information, though the 'each judged as in a single validation' clause is slightly awkward and the sentence packing makes it feel compressed.
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 carries return-value burden and does it by enumerating valid, active, asOf, warnings, errors and codeDetails. Combined with cost and default-date semantics, an agent has what it needs to call correctly; only the duplicate date-parameter aliasing is left undocumented.
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 80%, so the baseline is 3; the description earns a bump by restating the date semantics with the default value and the uniform-application rule, and by tying array length to the price. codeType and the dateOfService/date_of_service aliasing are left entirely to 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?
States a specific verb and resource ('Validate ... medical codes') plus the batch scope ('up to 25 in one call'), which implicitly separates it from the single-code code_validate and from code_lookup_batch. It also names the per-item judgement criteria (exists, valid on date of service), so an agent knows exactly what the tool decides.
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 batching context is clear (25-code cap, per-code price, date default) so an agent can tell this is the multi-code path and that cost scales with item count. It stops short of explicitly routing: neither code_validate nor code_lookup_batch is named, and there's no when-not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compliance_auditDMEPOS order documentation audit (SWO, F2F/WOPD, prior auth)ARead-onlyInspect
Audit one DMEPOS order's documentation against the Original Medicare requirements that apply to its HCPCS code on the date of service: the standard written order (SWO) elements (42 CFR 410.38(d)(1)(i)); for items on the current CMS Required Face-to-Face Encounter & Written Order Prior to Delivery List, a face-to-face encounter within the 6 months before the order and the written order before delivery, otherwise the written order before the claim; and for items on the current CMS Required Prior Authorization List, an affirmed decision before delivery. Some items are phased in by state: without a state such an order is refused (refunded) unless an affirmed decision is reported. A code the HCPCS set does not hold, one not valid on the date of service, or one the CMS DMEPOS Jurisdiction List bills to the A/B MAC (Part B) rather than a DME MAC, or a discontinued code that list does not show, is refused (refunded); for a code under joint jurisdiction the answer gives CMS's wording of when the A/B MAC takes it. Each fact is a true/false flag; no names, identifiers, signatures or other values are taken. Each requirement comes back pass or fail with its citation; a fact not reported fails, and any failed requirement fails the order (result: fail). It checks the facts reported, not the documents themselves. Not checked: LCD coverage criteria and medical-necessity documentation, proof of delivery and billing modifiers. Costs 250 credits per call.
| Name | Required | Description | Default |
|---|---|---|---|
| data | Yes | The order: its HCPCS code, date of service and state, and true/false facts about its documentation | |
| auditType | No | Optional: "dme_order", the only audit (the default) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Adds substantial context beyond the annotations: 250 credits per call, refund-on-refusal behavior for phased-in states and non-billable/discontinued codes, fail-closed semantics ('a fact not reported fails'), and confirmation that it evaluates reported facts rather than documents. These are operationally decisive details an agent cannot get from readOnlyHint/openWorldHint 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?
Front-loaded with the core verb and resource, and the dense clauses each carry distinct information (refusal cases, phase-in, cost, exclusions). The single long paragraph and nested parentheticals make it heavier than ideal, but little is genuinely expendable.
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?
Covers inputs, refusal paths, phase-in-by-state caveat, cost, and result semantics (per-requirement pass/fail with citation, overall result fail). With no output schema, the description nonetheless explains what comes back well enough for an agent to interpret the response.
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 baseline is 3, but the description adds real meaning: it explains that facts are true/false flags carrying no names, MBIs, signatures or values, and that an unreported fact is treated as a failure. That changes how an agent should populate and omit fields, which the schema alone does not convey.
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 (audit one DMEPOS order's documentation) scoped to Original Medicare rules keyed off HCPCS code and date of service. It is clearly distinguishable from siblings such as pa_required_check or order_readiness_checklist because it self-describes as a citation-backed pass/fail audit of reported facts.
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 concrete applicability conditions (which items require F2F/WOPD or prior auth, when a state is required, which codes get refused) and an explicit exclusion list (LCD coverage, medical necessity, proof of delivery, modifiers). It does not name an alternative sibling tool to use instead when the order falls outside scope, which keeps it below a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
denial_code_infoDME denial code explainer (free)ARead-onlyIdempotentInspect
Explain a DME claim denial code (CARC). Returns title, meaning, common DME causes, fixes, appealability, and related codes. Free, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | CARC denial code (e.g., "CO-50", "PR-1", "197") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds value beyond that by enumerating the response payload (title, meaning, common DME causes, fixes, appealability, related codes) and stating the free/no-API-key access constraint, which is 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?
Three short sentences with zero waste: purpose first, return payload second, access constraint last. Every sentence earns its place and nothing is buried.
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 one parameter and no output schema, the description correctly compensates by listing the returned fields and noting no auth is required. Minor gap: it doesn't state what happens for an unrecognized code, so behavior on invalid input is unknown.
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% and the single parameter already carries an example set ("CO-50", "PR-1", "197"). The description adds nothing about code format, prefixes, or acceptable variants. 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?
States a specific verb and resource: 'Explain a DME claim denial code (CARC)'. That is far more targeted than a generic code lookup and the acronym CARC anchors the domain. It doesn't name or contrast itself with siblings like code_lookup or code_reimbursement, so an agent must infer that this is the denial-specific explainer.
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 resource itself: this is the tool for denial codes. There is no explicit when-to-use vs when-not, and no reference to alternatives such as code_lookup for non-denial codes. Adequate but leaves routing to inference among 30 siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
disease_surveillanceDisease surveillance case counts (CDC NNDSS)ARead-onlyInspect
Look up disease surveillance data including case counts and trends by condition and geography. Source: CDC National Notifiable Diseases Surveillance System (NNDSS) weekly data on data.cdc.gov.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ICD-10 code (auto-mapped to condition name) | |
| state | No | 2-letter state code to filter by geography | |
| condition | No | Disease or condition name (e.g., "Hepatitis A", "Salmonellosis") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value by naming the upstream source (CDC NNDSS weekly data on data.cdc.gov), which conveys provenance and update cadence. However, it says nothing about behavior with zero filters (only three optional parameters), result volume, or limits, which matters for an open-world lookup.
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 sentences, front-loaded with the capability and closing with the data source. No filler or restated title 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?
Given three simple optional parameters and no output schema, the description supplies the essential framing plus provenance. It is slightly incomplete in not addressing the all-optional call case (what an unfiltered query returns) or result granularity, but nothing critical is missing for a read-only lookup.
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 each parameter is already documented in the schema, and the baseline of 3 applies. The description's 'by condition and geography' mildly echoes the condition and state filters but never mentions the ICD-10 code auto-mapping parameter, so it adds no meaning beyond 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?
Specific verb (look up) plus specific resource (disease surveillance data, case counts and trends) and named scope (condition, geography). The CDC NNDSS source identifier makes it unambiguous against every sibling, none of which touch surveillance 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?
The 'by condition and geography' phrasing implies how to call it, but there is no explicit when-to-use guidance, no statement of when to use this instead of code_lookup or ner_extract, and no explanation of whether filters are combinable or optional. The agent must infer usage from the parameter list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drug_enrichDrug label data with an LLM summary (openFDA)ARead-onlyInspect
Look up a drug by brand or generic name in openFDA and return its first matching FDA label: brand and generic name, manufacturer, NDCs, route, substance, product type, and the label's indications, warnings, dosage and administration, adverse reactions and drug-interactions sections (null when the label has no such section). Adds an LLM-generated summary, labelled as such: the therapeutic class and the indications the label states. It gives no treatment advice, does not check interactions between drugs, and makes no prior-authorization, coverage or cost determination. A failed call (drug not found, openFDA or the model unavailable) is refunded.
| Name | Required | Description | Default |
|---|---|---|---|
| drugName | Yes | Drug name (brand or generic, min 2 chars) | |
| searchField | No | Match the name against the label's brand name or generic name (default: brand_name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations cover the safety profile (readOnly, non-destructive, open-world), and the description adds genuinely non-obvious behavior on top: only the FIRST matching label is returned, missing label sections come back as null rather than erroring, the summary is LLM-generated and labelled as such, and failed calls are refunded. The refund-on-failure and first-match-only semantics are the kind of detail an agent cannot get from any structured field.
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?
Four sentences, each doing distinct work: what is returned, what the LLM adds, what it refuses to do, and what happens on failure. The returned-field enumeration is dense but front-loaded and necessary given there is no output schema.
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 itself and does so thoroughly, including null-section behavior and the LLM summary caveat. Failure modes (drug not found, openFDA or model unavailable) and the refund are also disclosed, leaving no obvious gap for an agent calling this 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 both parameters are already documented; the description reinforces the brand-vs-generic matching axis that searchField controls. It does not restate the default (brand_name) or the 2-char minimum, but the schema already carries those, so this is a modest addition above the baseline.
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 ('look up a drug by brand or generic name in openFDA') and then enumerates exactly what comes back: names, manufacturer, NDCs, route, substance, product type, and specific label sections. The exclusion sentence ('does not check interactions between drugs, makes no prior-authorization, coverage or cost determination') cleanly separates it from drug_interactions, pa_required_check and the reimbursement siblings.
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 delimits scope with three negative conditions (no treatment advice, no cross-drug interaction checking, no PA/coverage/cost determinations), which implicitly routes the agent to siblings for those needs. It never names an alternative tool explicitly or states the positive trigger condition (e.g. 'use when you need label text for a specific drug'), so routing is inferential rather than spelled out.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drug_interactionsDrug-combination adverse-event disproportionality (FDA FAERS)ARead-onlyInspect
Adverse event reports that name drugs together: coReportCount, the number of FAERS reports naming every listed drug; the reactions most often named in them; and for each reaction a proportional reporting ratio (PRR) with a 95% confidence interval against the reports of each drug without the others. A reaction is marked disproportionate when it has at least 3 co-reports and the lower bound exceeds 1 against every drug (null when a comparison cannot be computed). Drugs are matched by the product name as reported: a brand name such as Coumadin is not merged with its generic, warfarin. A name no FAERS report names is refused (refunded), naming it. FAERS reports are unverified and can be duplicated: report counts and disproportionality are statistical associations, not evidence of an interaction or of causation, and no substitute for a clinical drug-interaction reference. Source: the FDA Adverse Event Reporting System (FAERS), via openFDA.
| Name | Required | Description | Default |
|---|---|---|---|
| drugs | Yes | Array of 2-5 different drug names (brand or generic), each matched against the product name reported in FAERS. Drug names need at least two letters or digits and may otherwise hold only spaces, hyphens, apostrophes, periods, slashes, parentheses and commas; accents, curly apostrophes, ® and ™, "+" and "&", and strengths such as 0.5% or 1:100,000 are normalized first (a refused name is refunded) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/openWorld annotations, the description discloses the refusal-and-refund behavior for unknown drug names, the null result when a comparison cannot be computed, the exact disproportionality threshold (≥3 co-reports, lower bound >1 against every drug), and the brand-vs-generic non-merging rule. It also warns that FAERS reports are unverified, duplicable, and associational — meaningful context the annotations cannot carry.
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?
Every sentence carries information, but the opening is a long dense clause chain that leads with return fields rather than a one-line statement of what the tool does. It is efficient yet slightly front-loading-poor.
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 one parameter, full schema coverage, and no output schema, the description still explains what is returned (counts, reactions, PRR with CI) and what edge cases produce (nulls, refusals). 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 the baseline is 3, but the description adds real semantic value: names are matched against the reported product name, and a brand such as Coumadin is not merged with warfarin. The normalization details are largely duplicated from the schema, which caps this at 4.
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 resource (FAERS reports naming drugs together) and the exact computation (coReportCount, top reactions, PRR with 95% CI versus each drug alone). This is clearly distinct from siblings like drug_lookup, drug_enrich, and drug_rxnorm, which do not compute disproportionality. An agent can identify this tool 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?
Usage context is clear: 2-5 drugs, combination-level analysis, and an explicit exclusion ('no substitute for a clinical drug-interaction reference'). It does not name a specific sibling tool to use instead for single-drug or interaction-reference needs, which keeps it 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.
drug_lookupDrug label and adverse-event lookup (OpenFDA)CRead-onlyInspect
Look up drug information including label data, adverse events, and related diagnosis codes. Source: openFDA (FDA drug labels and adverse-event reports); related diagnosis codes come from the MyMedi-AI code database.
| Name | Required | Description | Default |
|---|---|---|---|
| drugName | Yes | Drug name (brand, generic, or substance — min 2 chars) | |
| searchField | No | Search field (default: brand_name) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, destructiveHint=false, so safety is covered. The description usefully adds data provenance (openFDA plus an internal code database), which tells the agent about source reliability. However, it does not explain the return shape, why idempotentHint is false, or any rate-limit/latency behavior for an external API.
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 sentences, no filler, with the data scope front-loaded and provenance placed second. It could be tightened by clarifying what the primary return value is, but there is no padding.
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 explaining what comes back. Listing three heterogeneous data types without saying how they are structured, combined, or paginated leaves a real gap for an agent deciding whether this single call suffices.
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 both drugName and searchField are fully documented in the schema, including the enum values and default. The description adds nothing about parameters, 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?
The description names a verb and resource ('Look up drug information') and enumerates three data types (label data, adverse events, diagnosis codes), but it is ambiguous about whether all three are returned in one call or which one dominates. It also fails to distinguish the tool from siblings like drug_rxnorm, drug_interactions, and drug_enrich, which also look up drugs.
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?
No guidance is given on when to choose this tool over the many drug-related siblings (drug_rxnorm, drug_enrich, drug_interactions). There are no prerequisites, exclusions, or routing hints; the agent must infer everything from the name.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
drug_rxnormRxNorm drug normalization (NIH)ARead-onlyInspect
Normalize a drug name with NIH RxNorm: returns the matching RxNorm concepts (RxCUI, name, synonym, term type) and the primary RxCUI. It does not check interactions. Source: RxNorm, from the U.S. National Library of Medicine (RxNav API).
| Name | Required | Description | Default |
|---|---|---|---|
| drugName | Yes | Drug name to look up (min 2 chars) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=true, so the safety and external-dependency profile is covered; the description adds value by naming the underlying service (RxNav API, NLM) and by enumerating the returned concept fields since there is no output schema. It omits practical traits such as how multiple candidates are ranked, whether the primary RxCUI is deterministic, and any latency/rate-limit behavior.
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, front-loaded with the verb and resource, then return shape, then the negative scope and source. No filler and no repetition of the title.
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 one-parameter, no-output-schema lookup tool this covers what the agent needs: what comes back, what it does not do, and where the data originates. The remaining gap is how ambiguous or multi-match names are handled and whether the 'primary RxCUI' is a best-match or a fixed selection.
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 with 100% schema description coverage ('Drug name to look up (min 2 chars)'), so the schema already carries the semantics. The description only echoes 'a drug name' without adding guidance on what forms are accepted (brand vs generic, combination products, dosage forms), so the 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+resource ('Normalize a drug name with NIH RxNorm') and enumerates the return fields (RxCUI, name, synonym, term type, primary RxCUI). The explicit exclusion ('does not check interactions') cleanly separates it from the drug_interactions sibling, and the source attribution removes any ambiguity about which normalization system is used.
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 'does not check interactions' caveat gives the agent an explicit routing signal toward drug_interactions, which is real usage guidance. It stops short of distinguishing this from ambiguous siblings like drug_lookup and drug_enrich, leaving the agent to infer which one is the right normalization path.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
fee_schedule_lookupDMEPOS fee schedule (state + modifier specific)ARead-onlyInspect
Look up the CMS DMEPOS fee schedule for a DME/orthotic/prosthetic HCPCS code: rental (RR) vs purchase (NU new / UE used), non-rural vs rural, per state. With a state it returns that state's exact rates, without one national min–max ranges; a modifier narrows the answer to rental or purchase. Source: the current CMS DMEPOS fee schedule quarter. It has no professional-service (CPT) rates.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | DMEPOS HCPCS code (e.g., "E0601", "K0800", "E1390") | |
| state | No | 2-letter US jurisdiction (50 states + DC/PR/VI) for exact non-rural/rural rates; national ranges when omitted | |
| modifier | No | Narrow to rental (RR) or purchase (NU new / UE used) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, non-destructive and closed-world, so the safety profile is covered. The description adds genuinely new behavioral context: the output shape changes with the presence of state, and the data source is the current CMS DMEPOS quarter, which tells the agent about data freshness.
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?
A dense but well-structured three-sentence description; the core lookup, the state/modifier behavior, the data source, and the exclusion each appear once with no padding.
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 carries the burden of indicating what comes back, and it does describe exact per-state rates versus national ranges plus the data source. It could say more about return fields or units, but it is sufficient for correct 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% and already documents the state exact-vs-national behavior and the RR/NU/UE modifier meanings, so the description largely restates what the schema provides. It adds only a slight interpretive gloss ('a modifier narrows the answer to rental or purchase'), consistent with the baseline 3 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?
States a specific verb and resource (look up the CMS DMEPOS fee schedule for a DME/orthotic/prosthetic HCPCS code) plus the domain boundaries (rental vs purchase, rural vs non-rural, per state). This clearly separates it from siblings like reimbursement_basic or code_reimbursement.
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?
Explains the operational choice between supplying a state (exact rates) versus omitting it (national min–max ranges), and gives an explicit exclusion: 'no professional-service (CPT) rates.' It does not name a specific alternative tool, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
market_analysisHealthcare specialty market analysis by stateARead-onlyInspect
Specialty snapshot for a US state: how many providers one CMS NPPES registry query matches for the specialty (the query returns at most 200 records, so the figure is a floor, not a provider count), plus an LLM-generated estimate, labelled as such, of demand outlook, likely underserved areas and opportunities. Not a CMS or quality measure. A failed call (model unavailable) is refunded.
| Name | Required | Description | Default |
|---|---|---|---|
| state | Yes | 2-letter state code (e.g., "TX", "CA") | |
| specialty | Yes | Medical specialty as an NPPES (NUCC) taxonomy description, e.g. "Pulmonary Disease", "Cardiovascular Disease" or "Orthopaedic Surgery"; a trailing * matches a prefix ("Pulmon*") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the annotations: it discloses that the NPPES query caps at 200 records so the figure is a floor rather than a true provider count, that the demand/opportunity text is LLM-generated and explicitly labelled, and that a failed call due to model unavailability is refunded (implying a per-call cost). Missing only latency or credit-amount detail to reach a 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?
Purpose is front-loaded in the opening clause, and the caveat sentences each carry a distinct constraint (truncation, LLM provenance, refund). The single dense opening sentence packs several ideas together, but little is redundant.
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 it does name the components (matched-provider floor, demand outlook, underserved areas, opportunities). It stops short of specifying the response shape or ordering, leaving a small gap for a two-field analytical 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?
Schema description coverage is 100%, with the state enum and the specialty taxonomy/prefix-wildcard syntax already documented inline. The description adds nothing about parameter semantics beyond the schema, so the 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?
The description states a specific verb and resource: a specialty snapshot for a US state combining a CMS NPPES query count with an LLM-generated demand outlook. It also carves out what it is not ("Not a CMS or quality measure"), which separates it from the lookup/validation siblings. An agent can tell 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?
Usage context is implied (market/demand sizing for a specialty in a state), and the negative framing rules out clinical/quality use. However, no sibling is named — an agent weighing provider_search or disease_surveillance gets no explicit routing guidance, and no prerequisites or when-not-to-call conditions are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
modifier_advisorDMEPOS billing-modifier advisor (free)ARead-onlyIdempotentInspect
Editorial guidance on DMEPOS billing modifiers: the KX/GA/GY/GZ medical-necessity and liability family, RR/NU/UE rental-vs-purchase, capped-rental month markers (KH/KI/KJ), and RT/LT laterality. A HCPCS code scopes the guidance to that item's DMEPOS category (a category can also be given directly), and a scenario phrase (e.g., "ABN on file", "bilateral") surfaces the relevant modifiers. Original editorial content, not payer policy. PHI-free. Free, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | HCPCS DMEPOS code to scope guidance to (e.g., "E0601") | |
| category | No | DMEPOS category instead of a code (e.g., "oxygen", "capped-rental", "prosthetics") | |
| scenario | No | Optional situation phrase (e.g., "ABN on file", "bilateral AFO", "converting rental to purchase") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world, and the description is consistent with a pure advisory read. It adds context beyond the annotations: the output is editorial rather than payer policy, it is PHI-free, and it is free with no API key, which matters for call planning. It does not describe the shape of the returned guidance or any limits on modifier coverage.
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 resource and its covered modifier families, then moves to input mechanics and caveats. Dense but every clause carries information; the trailing 'Free, no API key required' is slightly promotional but still useful to an agent deciding whether it can call it.
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?
All three optional parameters are documented at 100% coverage, annotations carry the safety profile, and no output schema exists so return values need not be specified. The main residual gap is that the description never indicates what the guidance response looks like (modifier list with rationale? ranked?), leaving the agent to discover output shape at call time.
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 real semantics: a code scopes guidance to that item's DMEPOS category, a category can be supplied directly as an alternative, and the scenario argument is a free-text situation phrase with worked examples ('ABN on file', 'bilateral'). The code-vs-category relationship is meaningfully clarified beyond the schema's one-line field docs.
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: 'Editorial guidance on DMEPOS billing modifiers,' then enumerates the exact modifier families covered (KX/GA/GY/GZ, RR/NU/UE, KH/KI/KJ, RT/LT). This is far more specific than any sibling (code_lookup, pa_required_check, code_validate) and an agent can tell instantly this is the modifier-interpretation tool, not a lookup or validation 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?
Explains the two ways to scope a request — a HCPCS code (mapped to its DMEPOS category) or a category directly — and that a scenario phrase surfaces the relevant modifiers. It also sets an explicit boundary: 'Original editorial content, not payer policy,' which tells the agent when NOT to rely on it for authoritative payer determinations. It stops short of naming sibling tools to redirect to.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ner_extractExtract ICD-10-CM, HCPCS and CPT codes and dates from clinical textARead-onlyInspect
Extract the medical codes already present in de-identified text and check each against the MyMedi-AI code database: ICD-10-CM codes whole, dotted or undotted, with their 7th-character extensions (S72.001A, S72001A); HCPCS Level II codes (a letter A–V and four digits), with modifiers attached (E0601RR, E0601-RR) reported as modifiers — a glued suffix only when it is a known DMEPOS modifier; and CPT codes only where a keyword such as CPT or procedure code marks them (Category II and III and PLA codes such as 0001U included), so ZIP codes and other numbers are not read as codes, and a five-digit number that continues a marked list is kept only when the CPT set holds it. Codes are read in upper case, as code sets print them; lower-case text is not read as a code. Each code entity says whether the code set holds it (inCodeSet) and, when it does, gives its description and whether it is active; an undotted ICD-10-CM shape is returned only when the code set holds it, so words such as B12 are not read as codes. codeSets names the code-set releases checked. Also returns M/D/Y dates and one MEDICATION_INDICATOR entity when a dose unit (mg, mcg or mL) appears. It does not extract drug names and does not infer or suggest codes. PHI-free: for de-identified text only.
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | Clinical text to extract entities from | |
| entityTypes | No | Return only these entity types: ICD10_CODE, HCPCS_CODE, CPT_CODE, DATE, MEDICATION_INDICATOR (any letter case; default all). Any other type is refused, and refunded. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, closed-world behavior, and the description adds substantial context: code-set checking, inCodeSet and codeSets output, modifier handling, date and medication-indicator extraction, and PHI-free constraints. It discloses behavior well beyond the annotations without contradicting them.
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 description is front-loaded with the core extraction purpose and then supplies necessary edge-case rules. It is dense and somewhat run-on, but the detail is largely justified by the complexity of code extraction.
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 still explains the returned entity types, code-set membership fields, codeSets metadata, dates, and medication indicators. It is complete enough for an agent to understand what the tool returns and when to use 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 both parameters are already documented in the input schema. The description does not add parameter-specific syntax or filtering details beyond what the schema provides, so the baseline of 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?
The description states a specific verb and resource: extract medical codes already present in de-identified text and check them against the MyMedi-AI code database. It explicitly distinguishes extraction from inference/suggestion, which separates it from sibling tools like code_suggest.
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 clear usage context: de-identified text only, no drug-name extraction, and no inference or suggestion of codes. It does not explicitly name sibling alternatives, but the exclusions make the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
order_readiness_checklistDMEPOS order-readiness checklist (free)ARead-onlyIdempotentInspect
Blank pre-delivery checklist for a HCPCS DMEPOS code: the universal standard written order (SWO) elements (42 CFR 410.38(d)), whether the code is on the current CMS Required Face-to-Face Encounter & Written Order Prior to Delivery List (F2F/WOPD), and whether it is on the current CMS Required Prior Authorization List, on a date of service (default today). Some items are phased in by state: for those, paRequired is null until a state is given. Requirement definitions only; it takes no patient data (PHI-free). Free, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | HCPCS Level II code (e.g., "E0466") | |
| state | No | 2-letter US state or territory; needed for items phased in by state | |
| dateOfService | No | Date of service, YYYY-MM-DD (default today) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already carry readOnly/idempotent/closed-world, but the description adds genuinely non-obvious behavior: it returns blank requirement definitions rather than a patient-specific determination, is PHI-free by construction, is free and needs no API key, and returns null for paRequired on state-phased items until a state is supplied. That null-semantics disclosure is the kind of edge case an agent would otherwise misread as a false negative.
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?
A single dense paragraph that front-loads the core definition and then tacks on scope, nullability, and cost facts — no wasted sentences. Minor redundancy: 'free' appears both in the title and again as 'Free, no API key required' at the end, which could be folded into one 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 the necessary work of telling the agent what comes back (SWO elements per 42 CFR 410.38(d), F2F/WOPD status, PA-list status) and even names one return field (paRequired). It stops short of describing the output shape or the other field names/types, which for a three-part checklist would help an agent consume the result.
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 baseline is 3 and the schema already explains code, state enum, and the today default for dateOfService. The description still earns credit by explaining the conditional interaction between state and the returned paRequired field, which is the one parameter behavior the schema cannot express.
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 first clause gives a specific verb and resource ('Blank pre-delivery checklist for a HCPCS DMEPOS code') and then enumerates the three things returned: SWO elements, F2F/WOPD list membership, and prior-authorization list membership. It is clear what the tool is, though it never names the overlapping sibling 'pa_required_check', so an agent must infer from the description alone that this is the broader multi-element checklist rather than the single PA boolean.
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?
Useful operational cues are present ('Requirement definitions only; it takes no patient data', 'Some items are phased in by state: for those, paRequired is null until a state is given', which implies supplying state matters). However, there is no explicit when-to-use vs. when-to-skip framing and no named alternative among the many PA siblings, so routing is implied rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pa_exposure_reportPA/WOPD catalog exposure report (up to 100 codes)ARead-onlyInspect
Map a supplier HCPCS catalog against the current CMS Required Prior Authorization List and Required Face-to-Face Encounter & Written Order Prior to Delivery List on a date of service (default today). Per code: PA requirement and the date it applies from, F2F/WOPD requirement, documentation gates (SWO, UTN-before-claim, F2F/WOPD sequencing), and deterministic denial-risk flags — plus a catalog-level exposure summary. Some items are phased in by state: with a state the answer is definitive; without one they are reported as required in some states (paRequiredInSomeStates). Unknown or non-HCPCS codes are flagged and count as billable answers. Priced per code — $0.01 × number of codes, max 100 per call. Returns JSON. Original Medicare FFS scope. PHI-free: codes in, rules out.
| Name | Required | Description | Default |
|---|---|---|---|
| codes | Yes | Supplier catalog HCPCS codes, e.g. ["E0651", "L0651", "K0856"] (1-100 per call) | |
| state | No | 2-letter US state or territory; needed for items phased in by state | |
| dateOfService | No | Date of service, YYYY-MM-DD (default today) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint true, destructive false), yet the description adds genuinely non-obvious behavior: per-code pricing ($0.01 × codes, max 100), that unknown/non-HCPCS codes are flagged but still billed, and that output is PHI-free JSON. It stops short of describing error handling or latency, so not a 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-loads the core mapping action, then layers the state caveat, output shape, pricing, and scope in a dense but logical order. Nearly every sentence carries distinct information, though the long second sentence is somewhat run-on.
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 well: it enumerates per-code return fields (PA requirement and effective date, F2F/WOPD, documentation gates, denial-risk flags), the catalog-level summary, and the paRequiredInSomeStates fallback. An agent has enough to decide whether the result answers its question.
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% and each parameter is already documented (codes 1-100, state for phased-in items, dateOfService default today). The description's explanation of the state-dependent branch reinforces the schema rather than adding new parameter syntax or constraints, 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 and resource — mapping a supplier HCPCS catalog against the CMS PA and F2F/WOPD lists on a date of service — with explicit scope (up to 100 codes, Original Medicare FFS). It does not name a sibling to differentiate from pa_required_check or pa_required_check-style tools, so the boundary has to be inferred from the batch scope.
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 state caveat ('with a state the answer is definitive; without one they are reported as required in some states') implies when to supply the state parameter, and the 100-code cap implies batching. But there is no explicit when-to-use versus pa_required_check/pa_predict, and no prerequisites are stated beyond scope.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pa_predictPrior-auth approval rate + CMS requirement factsARead-onlyInspect
Historical prior-authorization approval rate for a procedure code, computed only from your organization's own decided prior authorizations for that code — never from other customers' records — and only from at least 10; an API key or account with no organization has no cohort. With a cohort it returns the rate with cohort size and confidence; without one it returns the verifiable facts instead — CMS Required Prior Authorization List status, category, and published review timeframes — and reports that no rate was computed (the call is refunded on this path). Either way its recommendation states the CMS requirement only. It reports past decisions and makes no coverage or prior-authorization determination. Original Medicare FFS scope.
| Name | Required | Description | Default |
|---|---|---|---|
| payerId | No | Payer category, e.g. "MEDICARE", "AETNA" or "UNITED_HEALTHCARE" (any letter case) — narrows your organization's own decided-PA cohort to that payer. A payer's own ID number names no category, so it finds no cohort. | |
| procedureCode | Yes | CPT/HCPCS procedure code (e.g., "E0651", "K0800") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well past the readOnly/openWorld annotations: it discloses the privacy boundary (own organization only, never other customers), the minimum cohort of 10, the no-organization/no-cohort edge case, the refund on the no-rate path, that the recommendation states CMS requirement only, that no coverage determination is made, and the Original Medicare FFS scope. That is exactly the extra context annotations cannot carry.
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, but it is a single dense run-on of em-dash clauses with some repetition ("never from other customers' records" restates the own-organization point) and a parenthetical about refunds buried mid-sentence. Correct information, harder to scan than it needs to 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?
With no output schema, the description carries the return-value burden itself, and it does: it describes the rate-plus-cohort-size-plus-confidence payload on one path and the CMS status/category/review-timeframe payload plus a no-rate report on the other. Nothing an agent needs to interpret either response 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 description coverage is 100%, so the schema already explains procedureCode as CPT/HCPCS and payerId as a payer category rather than a payer ID number. The description reinforces that the cohort is scoped to the organization's own decided PAs, but adds no format, validation, or edge-case detail beyond the schema — baseline 3.
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+resource: a historical prior-auth approval rate for a procedure code drawn from the caller's own organization's decided PAs. It also names the fallback payload (CMS Required Prior Authorization List status, category, review timeframes), which helps distinguish it from pa_required_check and pa_status, though it never names those siblings outright.
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 makes the two operating regimes explicit — a cohort of at least 10 decided PAs yields a rate, otherwise CMS facts are returned — but it never says when to pick this tool over pa_required_check, pa_status, or pa_exposure_report. Usage is implied by the data-availability conditions rather than stated as selection guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pa_required_checkMedicare DMEPOS prior-auth required check (free)ARead-onlyIdempotentInspect
Check whether a HCPCS code is on the current CMS Required Prior Authorization List (42 CFR 414.234) on a date of service (default today). Returns paRequired flag, category, nationwide-since date, and list version. Some items are phased in by state: for those, paRequired is null until a state is given. Original Medicare FFS scope. Free, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | HCPCS Level II code (e.g., "E0651") | |
| state | No | 2-letter US state or territory; needed for items phased in by state | |
| dateOfService | No | Date of service, YYYY-MM-DD (default today) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive, and the description adds substantial context on top: no API key needed, no cost, the null-return behavior for state-phased items, and the FFS-only scope that excludes Medicare Advantage. This tells the agent exactly what it will and will not get back before calling.
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?
Four tight sentences, front-loaded with the core check and followed by return values, the state caveat, and scope. No repetition of the title or filler.
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 it: paRequired flag, category, nationwide-since date, and list version are all enumerated. Combined with the null caveat and scope limit, an agent has everything needed to call and interpret the result.
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 baseline is 3, but the description adds the consequence the schema omits: omitting state yields paRequired = null for phased-in items rather than a wrong answer. That is meaningful semantics beyond the enum list and the 'default today' note.
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: checks whether a HCPCS code appears on the current CMS Required Prior Authorization List under 42 CFR 414.234, and names the exact return fields. This clearly separates it from siblings like pa_predict (prediction) and pa_status (status of a submitted request), since it is a deterministic list 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?
Gives clear operating context: a date of service defaulting to today, the condition under which state must be supplied (state-phased items), and a scope limitation (Original Medicare FFS). It does not explicitly name pa_predict or pa_status as alternatives, so routing between the three prior-auth tools still requires inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pa_statusPrior authorization status checkARead-onlyInspect
Check the status of a prior authorization request tracked in your MyMedi-AI web workspace (by its MyMedi-AI PA id). Returns current status, dates, and expiration info. It does not query payers or say whether a code requires prior authorization, and returns not-found (refunded) if the PA was never entered in the web app.
| Name | Required | Description | Default |
|---|---|---|---|
| trackingNumber | No | Tracking number (alternative to authorizationId) | |
| authorizationId | No | Prior authorization ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive, non-open-world behavior, so the description's added value is the miss case: returns not-found/refunded when the PA was never entered in the web app, and the fact that no payer round-trip occurs. That is genuine behavioral context beyond the annotations, though the oddity of idempotentHint=false for a status read is left 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?
Three tight sentences, front-loaded with the core action, then return content, then exclusions and the miss case. No filler or restatement of the title.
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 read-only lookup with no output schema, the description supplies the returned data shape (status, dates, expiration info) and the not-found behavior, which is what an agent needs to interpret results. Minor gap: it does not clarify which parameter wins if both id and tracking number 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 coverage is 100%, so both trackingNumber and authorizationId are documented in the schema itself; the description only mentions the PA-id path and never explains the tracking-number alternative or how the two relate. Baseline 3 is appropriate when the schema carries the parameter documentation.
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 (check) and resource (prior authorization status) with an explicit scope qualifier: PAs tracked in the MyMedi-AI web workspace, addressed by MyMedi-AI PA id. It also names what it is not (no payer query, no PA-requirement determination), which separates it from pa_required_check and pa_predict 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?
Clearly says when to use it (PA already entered in the web app) and gives explicit exclusions ('does not query payers or say whether a code requires prior authorization'), which routes the agent away from it toward the requirement-check tools. It never names the alternative sibling tools directly, so the routing is inferential rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
provider_enrichAI-enriched provider intelligence (NPI)ARead-onlyInspect
Look up a provider by NPI in the CMS NPPES registry (name, credential, primary and other taxonomies, practice address, enumeration date) and add an LLM-generated estimate, labelled as such, of specialty demand, network gaps and referral categories for that type of provider. The model is given the provider type — specialty, taxonomy, credential, state, entity type and enumeration date — never the name or NPI. Not a CMS or quality measure. A failed call (unknown NPI, model unavailable) is refunded.
| Name | Required | Description | Default |
|---|---|---|---|
| npi | Yes | 10-digit NPI number |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, non-destructive and open-world, yet the description goes further: the LLM output is labelled as an estimate, the model receives only provider type (never name or NPI), and failed calls are refunded. It does not explain why idempotentHint=false (presumably non-deterministic LLM output) or mention cost/latency, which would have completed the picture.
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 lookup, then the enrichment, then constraints (privacy, disclaimer, refund). Dense but nearly every clause carries information; the absence of headings or line separation makes the caveats easy to skim past.
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 1-parameter read-only tool with no output schema, it names the registry fields returned and the three enrichment outputs, plus failure behavior. Only the shape of the returned estimate and its cost remain unspecified.
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% and the single npi parameter is already documented as a '10-digit NPI number'. The description adds only that the number resolves against the NPPES registry, no extra format or validation guidance — 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+resource (look up a provider by NPI in the CMS NPPES registry) and enumerates the fields returned plus the AI-generated additions (specialty demand, network gaps, referral categories). It does not name or differentiate against the obvious sibling provider_search, so an agent must infer which to pick for name-based lookups.
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 NPI-keyed framing plus 'Not a CMS or quality measure' implies when it applies, but there is no explicit when-to-use/when-not or routing to provider_search for non-NPI searches. Usage is inferable rather than stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
provider_paymentsPhysician industry payments (CMS Open Payments)ARead-onlyInspect
Look up pharmaceutical and device company payments to a physician (Sunshine Act data). Returns total payments, breakdown by type, and top paying companies. Source: CMS Open Payments.
| Name | Required | Description | Default |
|---|---|---|---|
| npi | Yes | 10-digit NPI number of the physician |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly=true, destructive=false, openWorld=true, so the safety profile is covered. The description usefully discloses the return shape (totals, type breakdown, top companies) and the upstream source, but omits things that matter for CMS data: reporting-year coverage/lag, whether results are empty for physicians with no payments, and idempotency/mutability of upstream data.
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 sentences plus a source tag, with the purpose and return contents front-loaded and zero filler. Every clause 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 one parameter, full schema coverage, and no output schema, the description's summary of returned fields (totals, breakdown, top companies) fills the output-schema gap well. A note on data year/freshness and the no-payments case would make it complete.
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% and the single npi parameter is fully documented as a 10-digit NPI, so the schema carries the load. The description adds nothing about the parameter (e.g., format validation, whether name lookup is possible), which is acceptable at this coverage level but not a value-add.
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?
"Look up pharmaceutical and device company payments to a physician" states a specific verb and resource, and the Sunshine Act/CMS attribution makes the data source unambiguous. It is clearly distinct from code/drug/claims siblings, though it does not explicitly separate itself from the closer provider_search/provider_enrich 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?
Usage is implied by the required single parameter (a physician NPI), but the description never says when to prefer this over provider_enrich or how it relates to any other payment/compliance tool. No exclusions, prerequisites, or alternative routing are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
provider_searchNPI provider directory searchARead-onlyInspect
Search the NPI provider directory. Find healthcare providers by name, specialty, or location.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | ||
| limit | No | Max results (default 10, max 50) | |
| state | No | 2-letter state code | |
| lastName | No | ||
| taxonomy | No | Provider specialty as an NPPES (NUCC) taxonomy description, e.g. "Family Medicine"; a trailing * matches a prefix | |
| firstName | No | ||
| organizationName | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare this as a read-only, open-world, non-destructive search, so the safety profile is covered. The description adds that the data source is the NPI provider directory, but does not disclose result limits, ordering, authentication needs, or other search behavior beyond the general field categories.
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, front-loaded with the core action and followed by the supported search dimensions. There is no filler or 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?
For a seven-parameter, all-optional read-only search, the description is adequate but thin. It omits routing guidance versus provider_enrich and does not clarify whether at least one search field is expected, leaving some operational uncertainty despite the annotations and schema covering the rest.
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 only 43%, so the description must add meaning. It partially compensates by grouping searches into name, specialty, and location, which maps conceptually to the undocumented name and city parameters, but it does not clarify all optional combinations or the limit parameter beyond what the schema already states.
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: search the NPI provider directory, and clarifies the searchable dimensions (name, specialty, location). It is clear against a generic tool list, but does not explicitly distinguish itself from sibling tools such as provider_enrich.
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 implies usage by saying it finds healthcare providers by name, specialty, or location, but it gives no explicit when-to-use guidance, prerequisites, or exclusions. It also does not tell the agent when to prefer provider_search over provider_enrich or other provider-related siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reimbursement_basicMedicare national payment rate (free)ARead-onlyIdempotentInspect
Look up Medicare payment for a code. Returns the national facility and non-facility payment under the current Medicare PFS (CMS RVU × conversion factor) for professional services, plus ranges from the current CMS DMEPOS fee schedule quarter (rental/purchase, min–max across state fees) for DME items like E/K/L codes. Free, no API key required.
| Name | Required | Description | Default |
|---|---|---|---|
| code | Yes | Medical code (e.g., "97110" or "E1390") |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuinely non-structured context: the data provenance (CMS PFS RVU x conversion factor, current DMEPOS fee schedule quarter), that DMEPOS results are state-fee ranges, and that no API key is needed. It does not state error behavior for unknown codes or the currency/units, which keeps it short of a 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?
Two sentences, front-loaded with the purpose, with the formula parentheticals earning their place by establishing data provenance. The second sentence is dense and long, but every clause conveys distinct information about what is returned.
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: facility vs non-facility amounts, rental/purchase ranges, and min–max across state fees. Missing details are minor (currency, behavior on invalid/unsupported codes, whether state-level lookup lives in a sibling 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?
With one parameter at 100% schema coverage, the schema already documents 'code'. The description still adds meaning by clarifying that the single input accepts both professional service codes (CPT-style) and DME items like E/K/L codes, and that the returned metric differs by code family. That is useful beyond the schema's bare example.
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 ('Look up Medicare payment for a code') and names the two payment families it covers (PFS professional and DMEPOS). It does not explicitly differentiate itself from sibling tools like code_reimbursement or fee_schedule_lookup, so an agent must infer from 'national' and 'basic' naming which sibling to pick.
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 rather than stated: the agent learns it is for Medicare payment on a code and that DME E/K/L codes are in scope. 'Free, no API key required' is a useful selection signal against paid siblings such as code_reimbursement, but there is no explicit when-to-use / when-not-to-use / alternative-tool routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trials_searchClinical trials search (ClinicalTrials.gov)ARead-onlyInspect
Search active clinical trials by condition, ICD-10 code, or intervention. Returns trial details including NCT ID, phase, enrollment, and eligibility. Source: ClinicalTrials.gov.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ICD-10 code (auto-mapped to condition) | |
| limit | No | Max results (default 10, max 50) | |
| status | No | Trial status filter (default: RECRUITING) | |
| condition | No | Medical condition to search for | |
| intervention | No | Drug or intervention name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, destructiveHint=false, openWorldHint=true, and idempotentHint=false, so the safety and externality profile is covered. The description contributes the external data source and the shape of returned trial records, but says nothing about result limits, pagination, or what happens when no selector is supplied; the 'active' wording also conflicts mildly with the COMPLETED status option.
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 with the capability and selectors front-loaded, followed by return contents and provenance. Every sentence carries distinct information and nothing is repeated from the schema verbatim.
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 sentence enumerating NCT ID, phase, enrollment, and eligibility usefully compensates and lets an agent judge result usefulness. Minor gap: all five parameters are optional, and the description never clarifies the behavior or error when none of condition/code/intervention is provided.
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 all five parameters, including ICD-10 auto-mapping and the 50-result cap. The description restates three of the five selectors but adds no syntax, format, or precedence guidance (e.g., what happens if both code and condition are given), 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 and resource (search clinical trials) plus the three selector inputs and the source registry, so it is clearly distinguishable from the drug/code siblings. The one flaw is the framing as 'active clinical trials' when the schema's status enum includes COMPLETED and NOT_YET_RECRUITING, so the stated scope slightly undersells what the tool retrieves.
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?
Naming condition, ICD-10 code, and intervention implies how to drive the tool, and the title ties it to ClinicalTrials.gov. But there is no explicit when-to-use guidance, no statement about needing at least one selector, and no routing to or away from any sibling tool.
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.
32 tool updates
v1.7.9- Added
account_status - Added
buy_credits - Changed
claims_validate11 fields changed- added
Input schema / properties / claim / properties / dateOfService / maxLengthAdded value: +10 - added
Input schema / properties / claim / properties / diagnosisCodes / items / maxLengthAdded value: +10 - added
Input schema / properties / claim / properties / diagnosisCodes / maxItemsAdded value: +25 - added
Input schema / properties / claim / properties / modifiers / items / maxLengthAdded value: +10 - added
Input schema / properties / claim / properties / modifiers / maxItemsAdded value: +20 - removed
Input schema / properties / claim / properties / patientIdRemoved value: -{ - "type": "string" -} - added
Input schema / properties / claim / properties / placeOfService / maxLengthAdded value: +500 - added
Input schema / properties / claim / properties / procedureCodes / items / maxLengthAdded value: +10 - added
Input schema / properties / claim / properties / procedureCodes / maxItemsAdded value: +50 - removed
Input schema / properties / claim / properties / providerIdRemoved value: -{ - "type": "string" -} - changed
Input schema / properties / claim / requiredPrevious value: -[ - "patientId", - "providerId", - "dateOfService", - "diagnosisCodes", - "procedureCodes" -]New value: +[ + "dateOfService", + "diagnosisCodes", + "procedureCodes" +]
- Changed
code_crossref1 field changed- added
Input schema / properties / code / maxLengthAdded value: +500
- Changed
code_lookup2 fields changed- added
Input schema / properties / code / maxLengthAdded value: +500 - added
Input schema / properties / stateAdded value: +{ + "description": "2-letter US jurisdiction (50 states + DC/PR/VI). For DMEPOS codes, returns that state's exact non-rural/rural fees instead of only the national range.", + "maxLength": 500, + "type": "string" +}
- Added
code_lookup_basic - Added
code_lookup_batch - Changed
code_reimbursement1 field changed- added
Input schema / properties / code / maxLengthAdded value: +500
- Changed
code_suggest3 fields changed- added
Input schema / properties / description / maxLengthAdded value: +500 - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1
- Changed
code_validate7 fields changed- added
Input schema / properties / code / maxLengthAdded value: +500 - changed
Input schema / properties / context / properties / dateOfService / descriptionPrevious value: -"Date of service (YYYY-MM-DD) for temporal validation"New value: +"Same as dateOfService; if both are sent they must match" - added
Input schema / properties / context / properties / dateOfService / maxLengthAdded value: +10 - added
Input schema / properties / context / properties / dateOfService / patternAdded value: +"^\\d{4}-\\d{2}-\\d{2}$" - added
Input schema / properties / context / properties / date_of_serviceAdded value: +{ + "description": "Same as dateOfService (snake_case spelling)", + "maxLength": 10, + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / dateOfServiceAdded value: +{ + "description": "Date of service, YYYY-MM-DD (default today)", + "maxLength": 10, + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +} - added
Input schema / properties / date_of_serviceAdded value: +{ + "description": "Same as dateOfService (snake_case spelling)", + "maxLength": 10, + "pattern": "^\\d{4}-\\d{2}-\\d{2}$", + "type": "string" +}
- Added
code_validate_batch - Changed
compliance_audit6 fields changed- changed
Input schema / properties / auditType / descriptionPrevious value: -"Type of audit (default: general)"New value: +"Optional: \"dme_order\", the only audit (the default)" - changed
Input schema / properties / auditType / enumPrevious value: -[ - "general", - "hipaa" -]New value: +[ + "dme_order" +] - changed
Input schema / properties / data / additionalPropertiesPrevious value: -{}New value: +false - changed
Input schema / properties / data / descriptionPrevious value: -"Data to audit for compliance issues"New value: +"The order: its HCPCS code, date of service and state, and true/false facts about its documentation" - added
Input schema / properties / data / propertiesAdded value: +{ + "code": { + "description": "HCPCS Level II code of the ordered item (e.g., \"K0823\")", + "maxLength": 500, + "type": "string" + }, + "dateOfService": { + "description": "Date of service (for DME, the delivery date), YYYY-MM-DD", + "maxLength": 10, + "type": "string" + }, + "faceToFaceWithin6Months": { + "description": "F2F/WOPD items: a face-to-face encounter with the treating practitioner within the 6 months before the order date", + "type": "boolean" + }, + "orderBeforeClaim": { + "description": "Other items: the written order reached the supplier before the claim is submitted", + "type": "boolean" + }, + "orderBeforeDelivery": { + "description": "F2F/WOPD items: the written order reached the supplier before delivery", + "type": "boolean" + }, + "priorAuthorization": { + "description": "Prior-authorization items: \"affirmed\" when an affirmed decision was received before delivery", + "enum": [ + "affirmed", + "non_affirmed", + "pending", + "not_requested" + ], + "type": "string" + }, + "state": { + "description": "2-letter US state or territory; needed for items phased in by state", + "enum": [ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "FL", + "GA", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VA", + "WA", + "WV", + "WI", + "WY", + "DC", + "PR", + "VI", + "GU", + "AS", + "MP" + ], + "type": "string" + }, + "swo": { + "additionalProperties": false, + "description": "Standard written order elements: true when on the order (quantity: also when none applies), false when missing — never the values", + "properties": { + "beneficiaryName": { + "description": "Beneficiary name or Medicare Beneficiary Identifier (MBI)", + "type": "boolean" + }, + "itemDescription": { + "description": "General description of the item", + "type": "boolean" + }, + "orderDate": { + "description": "Order date", + "type": "boolean" + }, + "practitionerName": { + "description": "Treating practitioner name or NPI", + "type": "boolean" + }, + "practitionerSignature": { + "description": "Treating practitioner signature", + "type": "boolean" + }, + "quantity": { + "description": "Quantity to be dispensed, if applicable", + "type": "boolean" + } + }, + "type": "object" + } +} - added
Input schema / properties / data / requiredAdded value: +[ + "code", + "dateOfService" +]
- Added
denial_code_info - Changed
disease_surveillance3 fields changed- added
Input schema / properties / code / maxLengthAdded value: +500 - added
Input schema / properties / condition / maxLengthAdded value: +500 - added
Input schema / properties / state / maxLengthAdded value: +500
- Changed
drug_enrich2 fields changed- added
Input schema / properties / drugName / maxLengthAdded value: +500 - changed
Input schema / properties / searchField / descriptionPrevious value: -"Search by brand or generic name"New value: +"Match the name against the label's brand name or generic name (default: brand_name)"
- Changed
drug_interactions2 fields changed- changed
Input schema / properties / drugs / descriptionPrevious value: -"Array of 2-5 drug names to check for interactions"New value: +"Array of 2-5 different drug names (brand or generic), each matched against the product name reported in FAERS. Drug names need at least two letters or digits and may otherwise hold only spaces, hyphens, apostrophes, periods, slashes, parentheses and commas; accents, curly apostrophes, ® and ™, \"+\" and \"&\", and strengths such as 0.5% or 1:100,000 are normalized first (a refused name is refunded)" - added
Input schema / properties / drugs / items / maxLengthAdded value: +500
- Changed
drug_lookup1 field changed- added
Input schema / properties / drugName / maxLengthAdded value: +500
- Changed
drug_rxnorm2 fields changed- removed
Input schema / properties / checkInteractionsRemoved value: -{ - "description": "Other drug names to check for clinical interactions against the primary drug", - "items": { - "type": "string" - }, - "type": "array" -} - added
Input schema / properties / drugName / maxLengthAdded value: +500
- Added
fee_schedule_lookup - Changed
market_analysis3 fields changed- changed
Input schema / properties / specialty / descriptionPrevious value: -"Medical specialty (e.g., \"cardiology\", \"orthopedics\")"New value: +"Medical specialty as an NPPES (NUCC) taxonomy description, e.g. \"Pulmonary Disease\", \"Cardiovascular Disease\" or \"Orthopaedic Surgery\"; a trailing * matches a prefix (\"Pulmon*\")" - added
Input schema / properties / specialty / maxLengthAdded value: +100 - added
Input schema / properties / state / enumAdded value: +[ + "AL", + "AK", + "AZ", + "AR", + "CA", + "CO", + "CT", + "DE", + "FL", + "GA", + "HI", + "ID", + "IL", + "IN", + "IA", + "KS", + "KY", + "LA", + "ME", + "MD", + "MA", + "MI", + "MN", + "MS", + "MO", + "MT", + "NE", + "NV", + "NH", + "NJ", + "NM", + "NY", + "NC", + "ND", + "OH", + "OK", + "OR", + "PA", + "RI", + "SC", + "SD", + "TN", + "TX", + "UT", + "VT", + "VA", + "WA", + "WV", + "WI", + "WY", + "DC", + "PR", + "VI", + "GU", + "AS", + "MP" +]
- Added
modifier_advisor - Changed
ner_extract4 fields changed- changed
Input schema / properties / entityTypes / descriptionPrevious value: -"Filter to specific entity types"New value: +"Return only these entity types: ICD10_CODE, HCPCS_CODE, CPT_CODE, DATE, MEDICATION_INDICATOR (any letter case; default all). Any other type is refused, and refunded." - added
Input schema / properties / entityTypes / items / maxLengthAdded value: +30 - added
Input schema / properties / entityTypes / maxItemsAdded value: +10 - added
Input schema / properties / text / maxLengthAdded value: +20000
- Added
order_readiness_checklist - Added
pa_exposure_report - Changed
pa_predict7 fields changed- removed
Input schema / properties / diagnosisCodesRemoved value: -{ - "description": "Supporting ICD-10 diagnosis codes", - "items": { - "type": "string" - }, - "type": "array" -} - removed
Input schema / properties / patientAgeRemoved value: -{ - "description": "Patient age in years", - "type": "number" -} - removed
Input schema / properties / patientGenderRemoved value: -{ - "enum": [ - "M", - "F", - "O" - ], - "type": "string" -} - changed
Input schema / properties / payerId / descriptionPrevious value: -"Insurance payer ID"New value: +"Payer category, e.g. \"MEDICARE\", \"AETNA\" or \"UNITED_HEALTHCARE\" (any letter case) — narrows your organization's own decided-PA cohort to that payer. A payer's own ID number names no category, so it finds no cohort." - added
Input schema / properties / payerId / maxLengthAdded value: +500 - changed
Input schema / properties / procedureCode / descriptionPrevious value: -"CPT/HCPCS procedure code"New value: +"CPT/HCPCS procedure code (e.g., \"E0651\", \"K0800\")" - added
Input schema / properties / procedureCode / maxLengthAdded value: +500
- Added
pa_required_check - Changed
pa_status2 fields changed- added
Input schema / properties / authorizationId / maxLengthAdded value: +500 - added
Input schema / properties / trackingNumber / maxLengthAdded value: +500
- Changed
provider_enrich1 field changed- added
Input schema / properties / npi / maxLengthAdded value: +500
- Changed
provider_payments1 field changed- added
Input schema / properties / npi / maxLengthAdded value: +500
- Changed
provider_search9 fields changed- added
Input schema / properties / city / maxLengthAdded value: +500 - added
Input schema / properties / firstName / maxLengthAdded value: +100 - added
Input schema / properties / lastName / maxLengthAdded value: +100 - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1 - added
Input schema / properties / organizationName / maxLengthAdded value: +100 - added
Input schema / properties / state / maxLengthAdded value: +500 - changed
Input schema / properties / taxonomy / descriptionPrevious value: -"Provider taxonomy/specialty code"New value: +"Provider specialty as an NPPES (NUCC) taxonomy description, e.g. \"Family Medicine\"; a trailing * matches a prefix" - added
Input schema / properties / taxonomy / maxLengthAdded value: +500
- Added
reimbursement_basic - Changed
trials_search5 fields changed- added
Input schema / properties / code / maxLengthAdded value: +200 - added
Input schema / properties / condition / maxLengthAdded value: +200 - added
Input schema / properties / intervention / maxLengthAdded value: +200 - added
Input schema / properties / limit / maximumAdded value: +50 - added
Input schema / properties / limit / minimumAdded value: +1
8 tool updates
v1.2.1- Added
code_crossref - Added
code_reimbursement - Added
disease_surveillance - Added
drug_interactions - Added
drug_lookup - Added
drug_rxnorm - Added
provider_payments - Added
trials_search
12 tool updates
- First observed
claims_validate - First observed
code_lookup - First observed
code_suggest - First observed
code_validate - First observed
compliance_audit - First observed
drug_enrich - First observed
market_analysis - First observed
ner_extract - First observed
pa_predict - First observed
pa_status - First observed
provider_enrich - First observed
provider_search
TDQS
Scored across 32 tools
Descriptions are unusually explicit about what each tool does not do, which rescues many near-neighbors, but real overlaps remain: reimbursement_basic vs code_reimbursement vs fee_schedule_lookup (and code_lookup's embedded DMEPOS rates) all answer 'what does Medicare pay,' and code_lookup vs code_lookup_basic vs code_lookup_batch differ mainly by price and payload size. The PA family (pa_required_check, pa_predict, pa_status, pa_exposure_report, plus PA checks inside order_readiness_checklist and compliance_audit) is distinguishable only after careful reading. An agent can get there, but misselection is plausible.
Overwhelmingly snake_case with a domain-ish prefix (code_*, drug_*, pa_*, provider_*), which is readable and mostly predictable. Deviations are ordering inconsistencies — reimbursement_basic vs code_reimbursement, fee_schedule_lookup vs code_lookup, denial_code_info — and a 'basic' suffix convention applied unevenly. Still far more consistent than not.
32 tools is well past the 25+ threshold where a surface starts to feel heavy, and the count is inflated by tiered duplicates (basic/full/batch variants of lookup, validate and reimbursement) rather than genuinely distinct operations. A broad domain justifies many tools, but several here earn their place only as billing tiers, not as new capabilities.
Coverage of the medical coding lifecycle is strong: lookup, suggest, validate, crossref, batch variants, reimbursement/fee schedules, PA checks, claims pre-submission validation, compliance audit and NER extraction, plus adjacent drug, provider, trial and surveillance data. Gaps are acknowledged rather than hidden (no NCCI PTP/MUE edits, no payer-specific policy, drug interactions only statistical), so agents hit few dead ends for core workflows.
Maintenance
Related MCP Connectors
270 pay-per-call AI tools for agents, paid via x402 (USDC on Base). No signup, no API keys.
17 pay-per-call web, finance, legal and onchain tools for AI agents. USDC on Base via x402/MPP.
10 pay-per-call tools for AI agents: QR, screenshots, DNS, OCR, PDF, email & more. USDC on Base.
40+ Lightning-paid AI tools for agents: calls, SMS, fax, voice, translation. No signup, no keys.
Related MCP Servers
- AlicenseAqualityBmaintenanceOfficial Backwork MCP server for Medicare and commercial payer coverage policies, medical code lookup, prior authorization research, and claim validation with cited sources. Supports hosted OAuth and local stdio.888 npm1MIT
- AlicenseNot gradedqualityAmaintenance62 real-time data tools for AI agents via MCP. Finance, crypto, FMCSA, sanctions, courts, weather, vehicles, cybersecurity. One bearer token, one bill. Free tier available.MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to look up medical billing codes, denial reasons, and payer rules for faster claim resolution.66MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to perform medical-billing tasks like prior authorization checks, claim denial decoding, unpaid claim triage, appeal assessments, and PHI de-identification using deterministic rules engines with per-call payments via the x402 protocol.52 npmMIT