hcp-engagement
Provides tools for querying and analyzing synthetic Healthcare Professional (HCP) engagement data stored in Supabase, including HCP profiles, interactions, consent status, prescribing trends, rep activity, and engagement analytics.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@hcp-engagementWhich Tier A cardiologists haven't been visited in 90+ days?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
HCP Engagement × Supabase × MCP (mock pharma demo)
Model Context Protocol server for simulated Healthcare Professional (HCP) engagement data — reps, visits/calls/emails, consent status, and prescribing trends — from Supabase.
All data is synthetic (example-pharma.com reps, fictional drug names like Cardiozin, sequential NPIs). This is not real provider or prescribing data.
Shares the same Supabase project as the separate Frescopa MCP repo, but lives in its own table namespace (hcps, hcp_reps, hcp_products, hcp_interactions, hcp_interaction_products, hcp_prescribing_trends, hcp_consents) — no foreign keys, joins, or code shared between the two.
Mode | Use case |
stdio ( | Cursor, Claude Desktop on your Mac |
HTTP ( | Adobe AI Assistant, any remote app — public URL |
Repo layout
Path | Purpose |
| Tables, RLS ( |
| MCP stdio entry |
| MCP HTTP entry ( |
| Shared tools |
| Env template |
Related MCP server: Garmin Health MCP Server
Supabase setup
SQL: Dashboard → SQL Editor → paste
../supabase/migrations/20260831000000_hcp_engagement_init.sql→ Run. Safe to re-run (useson conflict do nothing/create or replace view).API: reuse the same
SUPABASE_URLandSUPABASE_ANON_KEYfrom the Frescopa.env— same project, read-only anon key.
Local build
cd /Users/zkorczyc/Projects/Frescopa/hcp-mcp
cp .env.example .env # skip if .env already exists
npm install
npm run buildCursor mcp.json snippet
{
"mcpServers": {
"hcp-engagement": {
"command": "node",
"args": ["/Users/zkorczyc/Projects/Frescopa/hcp-mcp/dist/index.js"],
"env": {
"SUPABASE_URL": "https://uxlccvzhuwzwzrmqunml.supabase.co",
"SUPABASE_ANON_KEY": "eyJ..."
}
}
}
}MCP tools
Tool | Role |
| List HCPs; filter |
| Search HCPs by name, NPI, or institution |
| Full profile by NPI — demographics, consent status per channel, engagement summary |
| Visits/calls/emails — filter by NPI, region, specialty, rep name, interaction type, days back |
| Analytics: interaction counts, recency, sentiment score, samples per HCP — find engagement gaps |
| Monthly new/total Rx and market share % for one HCP, optionally scoped to one product |
| Analytics: quarterly Rx trend for one product, broken out by region/specialty ( |
| Analytics: quarterly interaction/visit frequency by region/specialty — pairs with |
| Analytics: per-rep territory summary — HCPs engaged, interaction volume (30d/90d), avg sentiment |
Example questions this enables
"Which Tier A cardiologists haven't been visited in 90+ days?" →
hcp_engagement_summary(filtertier: A,specialty: Cardiology), then checklast_interaction_at."Can I drop samples with Dr. Reyes?" →
hcp_get_profile→ checkconsentsforsample_drop."Summarize my last 3 interactions with Dr. Nguyen." →
hcp_list_interactions(filter bynpi)."Which reps have the most positive-sentiment interactions?" →
hcp_rep_activity.
Demo narrative: "declining Rx despite steady engagement" (coverage-problem hook)
A 4-step chain that ties prescribing trend + rep engagement together to surface a "clinical demand exists, something's blocking it" story — useful for framing a payer/access-coverage narrative rather than a pure sales-execution one:
Baseline, side by side — "Show me Oncovarin prescribing trends by region and specialty over the last 2 quarters, alongside HCP visit frequency for each region." →
hcp_prescribing_trend_by_segment(brand_name: Oncovarin) +hcp_visit_frequency_by_segment, both grouped by region/specialty/quarter so they line up.Isolate the signal — "Which regions/specialties show declining Oncovarin prescribing despite stable or increasing visit frequency?" → compare the two
segment_rollupoutputs quarter-over-quarter (reasoning step, no new tool needed).Rule out physician sentiment — "For HCPs in [flagged region] with declining trends, what's the interaction sentiment from recent visits?" →
hcp_prescribing_trend_by_segment'shcp_quarterly(filtered to the flagged region) to find the specific decliners, thenhcp_list_interactions(filter bynpi, or byregion+specialty) to check sentiment.Territory context — "Summarize rep/territory performance in [flagged region] this quarter." →
hcp_rep_activity(filterregion).
The seed data has one segment deliberately built to produce this exact pattern: South region, Oncology, Oncovarin — prescribing drops sharply in the latest quarter while visit frequency stays comparatively steady and sentiment trends more positive, not less. Everything else in the dataset is pseudo-random (deterministic per NPI, but not hand-tuned), so other region/specialty combinations may or may not show a similar pattern.
Remote MCP URL (HTTP)
Same pattern as Frescopa — see ../README.md for the full walkthrough (build → start:http → deploy → register URL). This server defaults to port 3100 (vs. Frescopa's 3000) so both can run locally at once.
Security
Do not commit
.envor service role keys.Demo is safe with anon + RLS limited to
SELECT.Data is synthetic — do not populate with real patient, prescriber, or PHI/PII data.
HTTP: always set
MCP_API_KEYon public deploy.
Available Tools
9 toolshcp_engagement_summaryA
Analytics: total interactions, recency, sentiment score, and samples per HCP. Sorted by most interactions first. Useful for finding engagement gaps (e.g. Tier A HCPs with no recent contact).
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | ||
| limit | No | ||
| region | No | ||
| specialty | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses useful behavioral traits: sorted by most interactions first and including samples per HCP. However, it omits important context such as whether the operation is read-only, the time window for recency/interactions, and how sentiment score is defined or scaled.
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 compact sentences with no filler. The first sentence front-loads the core output and sort order; the second provides a concrete use case. Every sentence 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?
The description gives a reasonable outline of the result fields and ordering, but no output schema exists and annotations are absent so more weight falls on the description. It fails to clarify the meaning of 'samples', the recency window, sentiment scoring, or how the optional filters interact with each other and with the limit.
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 0%, and there are 4 parameters: tier, limit, region, and specialty. The description only indirectly references tier via the 'Tier A HCPs' example and says nothing about limit, region, specialty, their defaults, or filter behavior, so the agent must infer most parameter meaning from names and enum values alone.
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?
Description clearly identifies the resource (HCP engagement analytics) and specific metrics: total interactions, recency, sentiment score, and samples per HCP. Although it lacks an explicit action verb like 'returns' or 'computes', the metric list and sorting behavior sufficiently distinguish it from sibling tools such as hcp_list_interactions and hcp_visit_frequency_by_segment.
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 states a clear use case: finding engagement gaps, with a concrete example (Tier A HCPs with no recent contact). It does not explicitly mention when not to use it or name alternatives, but the use case provides enough context for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcp_get_profileA
Full profile for one HCP by NPI: demographics, consent status per channel, and engagement summary.
| Name | Required | Description | Default |
|---|---|---|---|
| npi | Yes | 10-digit NPI, e.g. 1000000001 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It discloses the scope and return content but does not mention access requirements, sensitivity of consent data, behavior for invalid/unknown NPI, or whether the response could be large. For a read operation, the lack of side-effect disclosure is acceptable, but more would strengthen transparency.
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?
One concise sentence that front-loads the core action and scope, then lists the returned content categories without repetition. No filler or redundant wording.
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 retrieval tool, the description is largely complete: it names the key input and the high-level return categories. It does not describe failure modes or permissions, but the low complexity and clear single parameter make the tool callable with confidence.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage for the single parameter, including the 10-digit format and an example. The description only restates the NPI-based lookup, so it adds little semantic value beyond the schema. Baseline 3 is appropriate for full schema coverage.
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?
Uses a specific verb+resource ('Full profile for one HCP') and identifies the key input (NPI) and the main content areas (demographics, consent status per channel, engagement summary). This clearly separates it from sibling list/search/aggregate tools by emphasizing a single-HCP full-profile retrieval.
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 clearly implies the usage context: call this when you have a specific NPI and need the complete profile for that HCP. It does not explicitly name alternatives such as hcp_search for finding an NPI or hcp_engagement_summary for engagement-only data, so there are no stated exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcp_list_hcpsA
List Healthcare Professionals (HCPs). Filter by specialty, tier (A|B|C), region, or state. Mock data — not real providers.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | ||
| limit | No | ||
| state | No | Two-letter state code, e.g. NY | |
| region | No | ||
| specialty | No | e.g. Cardiology, Oncology, Primary Care |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description is the only safety/behavior source. It does add the important trait that the data are mock and not real providers, and 'List' implies a read-only operation, but it does not mention pagination, ordering, or output shape.
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, front-loaded sentences cover the operation, filters, and the mock-data warning with no filler. Every sentence 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?
The definition is adequate for a simple list tool, especially with the mock-data warning and schema-enforced filter constraints. It is not complete: without an output schema or annotations, it leaves out return-field and pagination details, and any differentiation from hcp_search.
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 40%, so the description must compensate. It names four filter parameters and spells out tier values (A|B|C), but it does not explain the limit parameter or clarify whether the listed filters combine or are mutually exclusive.
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 clearly identifies the operation ('List') and resource ('Healthcare Professionals (HCPs)'), and lists the main filter dimensions. It does not explicitly distinguish this from the sibling hcp_search, so it stops short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The filter list gives a clear implied use case—obtain a filtered collection of HCPs—but no alternative tools are named and there is no when-not-to-use guidance. Since hcp_search exists as a sibling, the description leaves some selection to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcp_list_interactionsA
List rep-HCP interactions (visits, calls, emails). Filter by HCP NPI, region, specialty, rep name, interaction type, or how many days back.
| Name | Required | Description | Default |
|---|---|---|---|
| npi | No | Filter to one HCP by NPI | |
| limit | No | ||
| region | No | ||
| rep_name | No | Partial match on rep name | |
| specialty | No | e.g. Cardiology, Oncology | |
| since_days | No | ||
| interaction_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It clearly signals a read-only list operation and enumerates filter dimensions, but it does not disclose output shape, ordering, how filters combine, or default limiting behavior beyond what the schema exposes.
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 a single sentence with the action and resource front-loaded, followed by a compact list of filters. Every clause adds useful information and 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 tool with seven optional parameters and no output schema, the description covers core intent and filter vocabulary but omits output format, pagination/limit behavior, and filter-combination semantics. It is minimally adequate for invoking the tool correctly, with clear gaps left to schema defaults and agent inference.
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%, but the description adds practical meaning to several otherwise undocumented parameters: it identifies region, interaction_type, and since_days ('how many days back') as filters. The limit parameter remains undocumented in both the description and the schema's prose, though its default and bounds are present.
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 the specific verb 'List' and names the resource 'rep-HCP interactions', explicitly enumerating interaction types (visits, calls, emails). This makes it immediately distinct from siblings like hcp_list_hcps, which lists HCPs, and hcp_engagement_summary, which suggests an aggregate view.
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 when raw interaction records are needed and lists the available filters, but it gives no explicit when-to-use vs. alternatives guidance. An agent must infer from sibling names that summary/aggregate tools are more appropriate for engagement totals or trends.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcp_prescribing_trend_by_segmentA
Quarterly prescribing trend for one product, broken out by region and specialty (segment_rollup), plus per-HCP quarterly rows (hcp_quarterly) for drill-down into which specific HCPs are declining/growing. Use segment_rollup to compare regions/specialties side by side; use hcp_quarterly to find individual decliners within a flagged segment.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| specialty | No | e.g. Oncology | |
| brand_name | Yes | e.g. Oncovarin | |
| quarters_back | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the key behavioral output: two data categories, segment_rollup and hcp_quarterly, and that the tool can identify declining/growing HCPs. It could add notes on data availability or limitations, but for a read-only reporting tool the main behavior is clearly communicated.
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 with no filler. The first sentence front-loads the core function and output structure, and the second provides actionable guidance. 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?
For a tool with no output schema and no annotations, the description names both output groups and maps them to use cases, which is the essential contextual information. It is slightly light on edge-case behavior such as no-data results or how quarters_back affects the returned rows, but the core usage is 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?
The description adds context matching brand_name, region, and specialty, and the word 'Quarterly' hints at quarters_back. However, it does not explicitly explain quarters_back semantics or the meaning of the region values; with schema coverage at 50%, the description only partially compensates for the undocumented parameters.
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 clearly states the tool computes a quarterly prescribing trend for one product, broken out by region and specialty, with per-HCP drill-down rows. This is a specific, identifiable purpose. It does not explicitly distinguish itself from the similarly named sibling hcp_prescribing_trends, so it stops just short of full sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit within-tool usage guidance: use segment_rollup for side-by-side region/specialty comparison and hcp_quarterly to find declining/growing HCPs. This is clear analytical context. However, it does not state when to choose this tool over sibling alternatives or 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.
hcp_prescribing_trendsA
Monthly prescribing trend (new Rx, total Rx, market share %) for an HCP, optionally scoped to one product. Requires npi.
| Name | Required | Description | Default |
|---|---|---|---|
| npi | Yes | 10-digit NPI, e.g. 1000000001 | |
| brand_name | No | e.g. Cardiozin — omit for all products this HCP prescribes | |
| months_back | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden, and it does disclose the main behavior: it returns monthly trend data for new Rx, total Rx, and market share, and can be scoped to a product. It stops short of describing return shape, pagination, sorting, time-period semantics, or any side effects, but for a read-only reporting tool this is a reasonable but not exhaustive disclosure.
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 entire description is one efficient, front-loaded sentence that starts with the core function and metrics, then adds scoping behavior and the required prerequisite. There is no filler, redundancy, or structural 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?
For a simple read-only tool with three parameters and no output schema, the description is close to complete: it states the returned metrics, the optional product scope, and the NPI requirement, which is enough for an agent to select and invoke it correctly. Minor gaps remain, such as clarifying whether the trend is a per-month series or how market share is computed, but these do not block correct use.
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 67% because months_back has no description in the schema. The description adds some meaning by tying brand_name to 'optionally scoped to one product' and indicating the output is monthly, but it adds no meaningful detail about months_back beyond what the schema's min/max/default already 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?
The description uses a specific verb and resource: it states this tool provides a monthly prescribing trend for an HCP, naming the returned metrics (new Rx, total Rx, market share %) and optional product scoping. It clearly describes what the tool does, though it does not explicitly contrast it with the sibling hcp_prescribing_trend_by_segment, relying on the sibling name and the phrase 'for an HCP' to imply the difference.
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 explicit: the description signals that this is appropriate when you need an HCP-level prescribing trend and states the NPI prerequisite and optional product filtering. However, it provides no when-not-to-use guidance or explicit alternatives, such as directing segment-level requests to hcp_prescribing_trend_by_segment.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcp_rep_activityB
Per-rep territory summary: HCPs engaged, total interactions, interactions in last 30 days, average sentiment.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| rep_name | No | Partial match on rep name |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal the scope (per-rep territory), the aggregation level, and the 30-day window for a subset of metrics. It does not disclose how optional filters affect results, what 'engaged' means, whether results are grouped or sorted, or what the output shape is.
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, compact sentence with a colon-delimited metric list. Every word contributes to the tool's purpose, and the content is front-loaded with the summary concept before the metrics.
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?
The metric list is useful and the tool is relatively simple, but the absence of an output schema, annotations, and any mention of filter behavior leaves gaps. Given the number of sibling tools, an agent could still be uncertain how this differs from hcp_engagement_summary or whether no parameters returns an aggregate territory rollup or a per-rep list.
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 50%, and the description adds no parameter-level meaning. It does not mention that region filters by territory or that rep_name is a partial match, leaving the agent to depend entirely on the schema. The description names metrics but not how the two parameters constrain or aggregate them, so it fails to compensate for the coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a per-rep territory summary and lists the exact metrics returned: HCPs engaged, total interactions, interactions in the last 30 days, and average sentiment. Although it uses a noun phrase rather than a verb, it conveys the resource and scope well. It does not explicitly differentiate itself from sibling tools like hcp_engagement_summary, so it falls 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 context is implied: an agent can infer this tool is for rep-level activity summaries. However, the description provides no guidance about when to choose this over hcp_engagement_summary, hcp_list_interactions, or other siblings. There are no exclusions, prerequisites, or alternative tool mentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcp_searchA
Search HCPs by name, NPI, or institution (partial match).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | e.g. Nguyen, 1000000001, Boston Heart Institute |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only reveals the partial-match behavior but does not state what the tool returns (e.g., a list, count, or structured profiles), whether results are paginated, or any limits on result size. This is a significant gap for a search operation.
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 a single sentence that immediately states the core purpose without any filler. The key search dimensions are front-loaded, and the partial-match note is appended logically. No unnecessary words.
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 search tool with no output schema and no annotations, the description is minimally adequate. However, it lacks essential details such as the return format (does it return a list? a single best match?), any pagination hints, or error behavior (e.g., empty results). Given the simplicity of the tool, the missing return information is a notable gap.
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 schema already documents the 'query' parameter with examples and 100% coverage. The description adds value by specifying the three accepted search dimensions (name, NPI, institution) and clarifying that matching is partial, which goes beyond the schema's single string 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?
The description clearly states the action (search), the resource (HCPs), and the specific search dimensions (name, NPI, institution). It also mentions partial match, making the purpose unambiguous. While it doesn't name sibling tools, its distinct search function is evident from the description alone.
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 when to use this tool (when you need to find HCPs by partial criteria), but it does not explicitly exclude alternatives like hcp_list_hcps for listing all HCPs or hcp_get_profile for retrieving a specific profile. There is no 'when not to use' guidance, leaving the agent to infer the boundary.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
hcp_visit_frequency_by_segmentB
Quarterly rep interaction/visit frequency broken out by region and specialty — meant to be compared side by side with hcp_prescribing_trend_by_segment's segment_rollup for the same quarters.
| Name | Required | Description | Default |
|---|---|---|---|
| region | No | ||
| specialty | No | e.g. Oncology | |
| quarters_back | No | ||
| interaction_type | No | Omit to count all interaction types |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral disclosure burden. It does state the core behavior: quarterly frequency computed and grouped by region and specialty, and it hints at join compatibility through the segment_rollup reference. It does not disclose output shape, how optional filters affect results, or how quarters_back is applied, but the primary behavior is still clear.
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 a single, front-loaded sentence with no filler. The first clause states the primary output and grouping, and the second clause provides a useful comparison target. Every part 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?
The tool has no annotations, no output schema, four parameters, and sits among eight related HCP tools. The description provides one sibling comparison but omits important context such as default behavior when optional parameters are omitted, expected result structure, and how it differs from hcp_engagement_summary or hcp_list_interactions. More context is needed for an agent to reliably invoke 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?
The description adds meaning by indicating that region and specialty are grouping dimensions and that time is measured in quarters. However, it adds no additional semantics for quarters_back or interaction_type beyond what the schema already provides, and with 50% schema coverage the missing parameter explanations are only partially compensated.
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 clearly states the tool produces quarterly interaction/visit frequency data broken out by region and specialty, so an agent can infer the resource and aggregation. It also references the sibling hcp_prescribing_trend_by_segment, adding context for comparison. It lacks a direct verb like 'returns' or 'aggregates', but the metric and segmentation are unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete intended use case: compare side by side with hcp_prescribing_trend_by_segment's segment_rollup for the same quarters. However, it does not explain when to prefer this over related siblings such as hcp_engagement_summary, hcp_list_interactions, or hcp_rep_activity, nor does it provide exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
Most tools target distinct resources or views: search/list/get HCPs, raw interactions, rep summaries, engagement analytics, and prescribing trends. The overlaps between hcp_list_hcps and hcp_search, and between the segment rollup tools, are manageable because descriptions specify different filters and metrics.
All tools share a consistent hcp_ prefix and descriptive names. However, the set mixes verb-led names like hcp_list_hcps and hcp_get_profile with noun-phrase names like hcp_rep_activity and hcp_engagement_summary, so the pattern is not perfectly uniform.
Nine tools is well-scoped for an HCP engagement analytics domain. Each tool covers a meaningful capability, from individual HCP lookup and interaction history to rep-level activity and segment-level prescribing trends, without unnecessary redundancy.
The tool set covers the core read-only engagement workflow: finding HCPs, viewing profiles, inspecting interactions, and aggregating engagement and prescribing trends at both individual and segment levels. Minor gaps exist, such as no dedicated rep directory or HCP/consent update capability, but agents can work around these with existing tools.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Your Supabase account in natural language: run SQL, apply migrations, manage tables, storage, edge f
Ask data questions in natural language. Get SQL, insights, and charts from your databases.
Query BigQuery, Snowflake, Redshift & Azure Synapse with natural language
Query your org's data in natural language — read-only MCP access to SQL, NoSQL, files & warehouses.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform CRUD operations on Supabase databases through natural language. Supports advanced filtering, pagination, and safety checks for seamless database interaction.MIT
- FlicenseAqualityCmaintenanceEnables querying Garmin health data stored in Supabase through natural language, providing access to VO2 max trends, activity breakdowns, sleep statistics, race predictions, heart rate zones, and training load metrics.7
- FlicenseNot gradedqualityDmaintenanceConnects to a Gym Tracker Supabase database to provide LLMs with access to personal workout history, routines, and training progress. It enables users to analyze fitness performance, track personal records, and receive personalized coaching advice through natural language.
- FlicenseNot gradedqualityDmaintenanceTransforms natural language queries into SQL for customer segmentation, enabling democratized access to customer data insights.1
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zkorczyc/hcp-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server