Skip to main content
Glama

Pallas — athenahealth Integration Engineer for Claude Code

A Claude Code extension that embeds a senior athenahealth integration engineer in your development workflow. Proactively catches data loss bugs, teaches clinical context, guides you through safe DataView queries and API integrations, and gets smarter from every interaction through a built-in learning loop.

Try It in 30 Seconds

No install needed. Add this to any project's .claude/settings.json:

{
  "mcpServers": {
    "athena-tools": {
      "url": "https://pallas-mcp-server.azurewebsites.net/sse"
    }
  }
}

Then open Claude Code and ask: "How do I safely join PATIENT to CHART in DataView?"

This gives you all 12 MCP tools via the hosted server. For the full experience (slash commands, proactive safety rules, CLAUDE.md guidance), use the install method below.

Related MCP server: Claude Code Starter Kit MCP

Full Install

npx pallas-athena-tools setup

This installs to your user-level Claude Code config (~/.claude/):

  • 12 MCP tools connected to the hosted knowledge base

  • 9 slash commands (/sql, /athena-api, /onboard, /diagnose, etc.)

  • CLAUDE.md with proactive safety rules and clinical context

Works in every project — no per-project configuration needed.

Other CLI commands

npx pallas-athena-tools status      # Check installation
npx pallas-athena-tools uninstall   # Remove everything

What It Does

  • Proactive safety — Flags unsafe joins (46% data loss from PATIENTID/CHARTID mismatch), missing soft-delete filters, hardcoded credentials, and CONTEXTID issues

  • Teaches the "why" — Not just "add this filter" but "here's why deleted records exist in healthcare and what happens if you include them"

  • Knowledge base — 828 DataView views, 16K+ columns, 1.3K FK relationships, 1.9K API/FHIR/workflow docs

  • Learning loop — Every interaction feeds lessons back to the KB. Low-risk patterns auto-merge; high-risk discoveries go through human review

  • Working examples — Annotated SQL queries and API code templates in Python, TypeScript, and C#

Slash Commands

Command

Description

/onboard

Guided onboarding for new athenahealth developers

/sql <query>

Generate safe DataView SQL with CONTEXTID, soft-delete, and correct joins

/athena-api <goal>

Generate API integration code with OAuth, retry, and error handling

/diagnose <error>

Diagnose API or DataView errors with root cause explanation

/review-athena

Scan project for athenahealth anti-patterns and safety issues

/validate

Pre-deployment safety check

/explain <concept>

Deep-dive explanation of any athenahealth concept

/workflow <name>

End-to-end clinical/admin workflow guidance

/review-candidates

Review and approve/reject pending KB update candidates

MCP Tools

Tool

Description

athena_search_kb

Full-text search across the knowledge base

athena_explain_view

DataView view schema, columns, relationships, and gotchas

athena_explain_join

Safe join path between two views with identity chain warnings

athena_diagnose_error

Error diagnosis with likely causes and fixes

athena_explain_workflow

Clinical/admin workflow documentation

athena_suggest_workflow

Recommended integration approach with anti-pattern detection

athena_submit_feedback

Report learned patterns back to the KB (learning loop)

athena_list_candidates

List pending KB update candidates for review

athena_review_candidate

Approve or reject a KB update candidate

athena_report_safety_flag

Record a fired proactive safety rule (v0.2.0)

athena_report_outcome

Record artifact intent and acceptance at end of interaction (v0.2.0)

athena_command_start

Beacon for slash command usage (v0.2.0)

Learning Loop

The extension gets smarter from every developer interaction:

Developer uses Claude Code for athenahealth work
    ↓
Claude calls KB tools (search, explain, diagnose)
    → Each call is recorded (tool, duration, success/failure)
    ↓
Developer's issue is resolved
    ↓
Claude submits feedback: what worked, what was learned
    ↓
Classifier evaluates risk:
    Low risk (error patterns, gotchas) → auto-merged, confidence 0.3
    High risk (schema, identity)       → queued for human review
    ↓
Reviewer approves → promoted to KB, confidence 0.7
    ↓
Next developer benefits from this knowledge

Development

Prerequisites

Local Development

git clone https://github.com/nous-ehr/claude_pallas_extension.git
cd claude_pallas_extension
pnpm install
pnpm build
claude    # Opens Claude Code with local MCP server

Environment Variables

Variable

Default

Description

PALLAS_KB_PATH

./data

Path to directory containing kb.json

PALLAS_LOG_LEVEL

error

Log level: error, warn, info, debug

PALLAS_TRANSPORT

stdio

Transport: stdio (local) or http (Azure)

PALLAS_PORT

8080

Port for HTTP transport

COSMOS_ENDPOINT

Azure Cosmos DB endpoint (enables learning loop)

COSMOS_KEY

Azure Cosmos DB key

COSMOS_DATABASE

pallas-kb

Cosmos DB database name

Project Structure

pallas_claude_extension/
├── CLAUDE.md                     # "Senior engineer" brain
├── data/kb.json                  # Knowledge base (828 views, 16K columns, 1.9K docs)
├── examples/                     # Annotated SQL + API code templates
├── .claude/
│   ├── settings.json             # MCP server config
│   └── commands/                 # 9 slash commands
├── packages/
│   ├── mcp-server/               # MCP server (9 tools, dual transport)
│   │   └── src/
│   │       ├── server.ts         # stdio + HTTP/SSE
│   │       ├── db/kbStore.ts     # KB with MiniSearch
│   │       ├── tools/            # 9 tool implementations
│   │       └── learning/         # Event capture, classifier, Cosmos DB
│   └── cli/                      # npm package installer
└── .github/workflows/deploy.yml  # Auto-deploy to Azure on push

Architecture

This extension is fully independent from the Athena Tools VS Code extension. They share the same knowledge base source data but have separate codebases, separate deployments, and separate evolution paths. Neither can break the other.

License

  • Source code: MIT

  • Knowledge base (data/kb.json): CC BY-NC-SA 4.0 — non-commercial use only; contact maintainers for commercial licensing

Available Tools

12 tools
athena_command_startA

Mark the start of a slash command invocation. Call this as the first action in every athena slash command (/sql, /onboard, /diagnose, /athena-api, /review-athena, /validate, /explain, /workflow). One call per invocation. Returns a session ID that can be passed to athena_report_outcome at the end.

ParametersJSON Schema
NameRequiredDescriptionDefault
commandYesThe slash command name without the leading slash (e.g. "sql", "onboard"). Use "ad_hoc" if this is not a slash command but a general athenahealth query.
argSummaryNoShort, non-PII summary of what the user is trying to do. Categorical rather than verbatim — e.g. "join PATIENT and CHART", not the exact query text.

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses that the tool returns a session ID and must be called once per invocation. It does not mention any side effects, destructive behavior, or idempotency. For a marker tool, this is adequate but lacks some detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words. Front-loaded with the core action. Each sentence provides essential information about usage, return value, and pairing with another tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema, the description correctly reports the return type (session ID) and its downstream use. It covers constraints (one call per invocation, applicable commands) and is sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the description adds valuable context: for 'command' it clarifies format and special case 'ad_hoc'; for 'argSummary' it explains non-PII and categorical nature. This significantly aids correct parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Mark the start of a slash command invocation.' It specifies the verb 'mark' and the resource 'start of a slash command invocation', and lists example commands. It distinguishes from the sibling 'athena_report_outcome' by noting the returned session ID is passed to it.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this as the first action in every athena slash command' and lists specific commands. It also says 'One call per invocation'. However, it does not explicitly state when NOT to use this tool versus alternatives among siblings, though the unique role is implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_diagnose_errorA

Diagnoses an athenahealth API or Snowflake DataView error. Returns likely causes, suggested fixes, and links to relevant knowledge base content. Handles HTTP status codes, athenahealth-specific error strings, OAuth/scope errors, and SQL errors.

ParametersJSON Schema
NameRequiredDescriptionDefault
contextNoOptional additional context: which endpoint or view, what operation, etc.
errorMessageYesThe full error message or status code, e.g. "403 invalid scope" or "400 Invalid Clinical Status"

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden. It discloses the tool's diagnostic nature, the types of errors handled, and the output (causes, fixes, KB links). It implies a read-only operation with no side effects, which is transparent. However, it does not mention any limitations or edge cases.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, each contributing unique value: first sentence states the main function, second describes the output, third lists supported error categories. No redundancy or unnecessary details. Front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description adequately covers the tool's purpose, input, output, and error scope. No output schema exists, but the description mentions what is returned. It does not specify whether all error types are covered or mention related sibling tools for context, but overall it is sufficient for understanding the tool's functionality.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with both parameters described. The description adds no additional information about parameter usage beyond what the schema provides (errorMessage and context). Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool diagnoses athenahealth API or Snowflake DataView errors. It specifies the verb 'diagnose' and the resource 'error', and lists the types of errors handled (HTTP status codes, error strings, OAuth/scope, SQL errors). This distinguishes it from sibling tools like athena_search_kb, which is a general knowledge base search.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives. The description implies it is for error diagnosis, but does not mention when not to use it or provide comparisons to siblings like athena_explain_view or athena_search_kb.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_explain_joinA

Explains how to join two athenahealth Snowflake DataView views. Returns the join columns, confidence level, known warnings (e.g. CONTEXTID requirements, multi-tenant row-level security), and a sample SQL snippet. Always call this before writing a JOIN to avoid silent data loss from incorrect key usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourceViewYesThe starting view, e.g. "APPOINTMENT"
targetViewYesThe view to join to, e.g. "DEPARTMENT"

TDQS

A4.6/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses outputs (join cols, confidence, warnings, SQL snippet) and mentions specific warnings (CONTEXTID, multi-tenant security). No annotations exist, so description carries full burden; it could note whether the operation is read-only or if it modifies state, but 'explain' implies read.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no fluff: first sentence states purpose and output, second sentence provides critical usage guidance. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and two simple string parameters, the description covers what the tool does, what it returns, and when to use it. Could mention prerequisites (e.g., views must exist), but overall sufficient for an agent to select and invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Both parameters (sourceView, targetView) have full schema coverage with descriptions and examples in the description text. The examples ('APPOINTMENT', 'DEPARTMENT') add clarity beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it explains join between two views, listing specific outputs (join columns, confidence, warnings, SQL snippet). This verb+resource combination is distinct from siblings like athena_explain_view which handles single views.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises 'Always call this before writing a JOIN to avoid silent data loss from incorrect key usage.' This provides clear when-to-use and a strong consequence for not using the tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_explain_viewA

Returns detailed information about an athenahealth Snowflake DataView view: description, columns with data types, known enum values, FK relationships, and any operational gotchas. Use this before writing SQL against any view.

ParametersJSON Schema
NameRequiredDescriptionDefault
viewNameYesView name, e.g. "PATIENT" or "ATHENAONE.PATIENT" or "APPOINTMENTVIEW"
includeColumnsNoInclude column list with data types. Defaults to true.
includeGotchasNoInclude operational warnings specific to this view. Defaults to true.
includeRelationshipsNoInclude known FK relationships from this view. Defaults to true.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Describes returned info types but no annotations exist. Doesn't disclose side effects, auth needs, or rate limits; acceptable for a read-only info tool but could be more thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with action and resource, then usage guidance. No unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers key return types despite no output schema; could mention format but sufficient for a param-explanation tool with good schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers all 4 params with descriptions; tool description adds context (e.g., examples for viewName) but doesn't significantly enhance beyond schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Clearly states it returns detailed info about a Snowflake DataView, listing specific categories (description, columns, enums, FKs, gotchas). Distinguishes from siblings like athena_explain_join.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly advises using it before writing SQL against any view. Doesn't mention when not to use, but context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_explain_workflowA

Explains a named athenahealth clinical or administrative workflow: the intended sequence of steps inside athenaOne, the API calls that correspond to each step, the Snowflake views that capture the workflow state, and common integration mistakes. Use this to understand the INTENDED system behaviour before building an automation — many integration failures stem from automating around the workflow instead of through it.

ParametersJSON Schema
NameRequiredDescriptionDefault
workflowYesName of the workflow to explain, e.g. "patient check-in", "appointment scheduling", "claim submission", "document upload", "referral creation", "lab result processing"

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description should disclose side effects. It describes the output but doesn't explicitly state the tool is read-only or non-destructive, which is important for an explanation tool. This is an adequate but incomplete disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, front-loaded with the main purpose, and every sentence adds value: output details, examples, and usage guidance. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one parameter and no output schema, the description covers core semantics and usage context. It does not mention return format or limitations, but the information provided is sufficient for basic understanding.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the description's parameter info ('Name of the workflow...') mirrors the schema exactly. No additional meaning is added beyond what the schema already provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool explains a named workflow, listing specific outputs like steps, API calls, and Snowflake views. It distinguishes from sibling tools like athena_explain_view and athena_explain_join by focusing on workflows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly advises using the tool before building automation to understand intended behavior and avoid common mistakes. While it doesn't mention when not to use it, the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_list_candidatesA

Lists pending knowledge base update candidates from the review queue. These are high-impact discoveries (schema corrections, relationship changes, identity patterns) that were flagged by the learning loop and need human approval before being added to the knowledge base.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum candidates to return (1–50). Defaults to 10.
statusNoFilter by status. Defaults to "pending".pending

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool lists candidates and mentions the need for human approval, but does not specify permissions, rate limits, or behavior when the queue is empty. For a read-only listing tool, this is adequate but could be more transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences that efficiently convey the core function and context. No unnecessary words, and the structure is front-loaded with the key action.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (two parameters, no nested objects, no output schema), the description is sufficient. It explains the purpose and the nature of returned items. However, it could optionally mention the default sort order or that the list is from the review queue.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with parameters limit and status already well documented (defaults, enums, ranges). The description does not add new meaning beyond what the schema provides, so a baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool lists pending knowledge base update candidates from the review queue. It explains what these candidates are (high-impact discoveries) and that they need human approval, distinguishing it from siblings like athena_review_candidate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for listing pending items needing approval but does not explicitly state when to use this tool versus alternatives (e.g., athena_review_candidate) or when not to use it. No exclusions or context provide guidelines.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_report_outcomeA

Report the outcome of an athenahealth-related interaction once it concludes. Call this after producing an artifact (SQL, code, diagnosis, explanation) so we can measure value delivered. One call per logical interaction. Non-blocking.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoOptional one-sentence note — no PII, no patient data.
intentYesWhat the user was trying to accomplish.
acceptedYesDid the user accept the artifact? yes = used as-is, edited = used with tweaks, no = explicitly rejected, unknown = conversation continued without a clear signal.
toolsUsedNoWhich athena_* MCP tools you invoked during this interaction.
artifactTypeYesWhat you produced (or "none" if no artifact).
slashCommandNoIf this was triggered by a slash command, the command name (e.g. "/sql").
safetyFlagsFiredNoHow many athena_report_safety_flag calls you made during this interaction.

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It mentions non-blocking and one-call limits, but does not describe what the tool does besides reporting (e.g., no side effects, idempotency, or error handling). Basic but not comprehensive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, front-loaded with purpose, no wasted words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and 7 parameters (all described in schema), the description lacks information about what the tool returns or confirms (e.g., success indicator). Adequate but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with clear descriptions. The description adds context about measuring value, but does not enhance parameter semantics beyond the schema. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'report' and resource 'outcome of an athenahealth-related interaction', and specifies when to call it ('after producing an artifact'). It is distinct from sibling tools, which are query/diagnosis/feedback tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when to use ('after producing an artifact'), enforces 'one call per logical interaction', and notes it is non-blocking. It does not explicitly list when not to use, but the usage is well-scoped.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_report_safety_flagA

Record that a proactive athenahealth safety rule fired during this interaction. Call this every time you flag an anti-pattern from the SKILL.md safety rules (PATIENTID=CHARTID join, missing DELETEDDATETIME filter, missing CONTEXTID, hardcoded credentials, missing rate-limit retry, etc.). One call per flag. Non-blocking — never delays your response.

ParametersJSON Schema
NameRequiredDescriptionDefault
ruleYesShort rule identifier. Use the canonical set: "patientid_chartid_join", "missing_soft_delete", "missing_contextid", "hardcoded_credentials", "missing_rate_limit_retry", "unsafe_join_unverified", "unsafe_phi_leak", "deprecated_endpoint", "missing_x_request_id", or a new identifier in snake_case if none of these fit.
actionYesWhat you did with the flag in the conversation.
contextYesOne sentence describing what triggered the flag and where it appeared (file path, function, query) — no PII, no patient data.
filePathNoOptional. Repo-relative file path where the issue was found.
severityYescritical = blocks correctness (data loss, compliance, security). warning = production-risk but not blocking. info = style/best-practice nudge.
languageOrDialectNoOptional. e.g. "snowflake-sql", "python", "typescript", "fhir-r4".

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool is non-blocking and each flag requires one call. It also implies the tool is a logging action by describing what to include (rule, severity, etc.). It does not mention auth requirements or data persistence, but for a simple logging tool this is sufficient.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise—two sentences with no redundant words. The purpose is front-loaded ('Record that...'), followed by usage guidance ('Call this every time...'), and constraints ('One call per flag. Non-blocking'). Every sentence adds essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple logging tool with no output schema, the description is complete. It explains the tool's purpose, when to use it, what data to include (via example parameters), and behavioral notes (non-blocking, one call per flag). No gaps remain that would leave an agent unsure of how to invoke it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, so parameters are already documented. The description adds semantic value by specifying the canonical set for 'rule' and providing example anti-patterns, clarifying that 'context' must contain no PII, and explaining severity levels. This exceeds the schema's descriptions and helps the agent choose correct values.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states the specific action (record/proactively report) and resource (athenahealth safety rule firing). It clearly distinguishes from sibling tools by being a logging mechanism for safety rule flags, while siblings are for listing, searching, explaining, etc. The phrasing 'Record that a proactive athenahealth safety rule fired during this interaction' is precise.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to call the tool: 'every time you flag an anti-pattern from the SKILL.md safety rules'. It also specifies 'One call per flag' and 'Non-blocking — never delays your response.' It does not explicitly state when not to use it, but the guidance is clear enough to avoid misuse.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_review_candidateA

Approve or reject a pending knowledge base update candidate. Approved candidates are promoted to the learned knowledge base with elevated confidence. Rejected candidates are marked with the rejection reason for audit.

ParametersJSON Schema
NameRequiredDescriptionDefault
noteNoOptional review note explaining the decision.
decisionYesApprove to add to KB, reject to discard.
candidateIdYesThe ID of the candidate to review (from athena_list_candidates).

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description discloses key effects: approval promotes to KB with elevated confidence, rejection marks with reason. This is adequate for a review action, though it lacks details on reversibility or required permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, front-loaded with the main action. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description sufficiently explains the two outcomes and the meaning of the parameters. It does not mention any permissions or state prerequisites, but for a straightforward review tool, this is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline 3. The description adds minimal extra meaning beyond the schema—mainly connecting `candidateId` to `athena_list_candidates`. The note parameter is explained in the schema, not the main description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Approve or reject') and the resource ('pending knowledge base update candidate'), with distinct outcomes for each decision. It distinguishes from sibling `athena_list_candidates` which only lists candidates, not reviews them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies use when a candidate needs a decision, and the parameter description links `candidateId` to `athena_list_candidates`, providing a clear prerequisite. However, it does not explicitly state when not to use the tool or compare against other siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_search_kbA

Search the Athena Tools knowledge base. Returns views, columns, API endpoints, workflows, FHIR resources, gotchas, and error patterns relevant to the query. Every result includes a confidence score and the source tier (primary = verified live data, secondary = scraped docs, reference = public repos).

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum results to return (1–20). Defaults to 5.
queryYesNatural language search query, e.g. "patient identity join" or "appointment status codes"
filterNoNarrow results to a specific content type. Defaults to "all".all

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It mentions result structure (confidence score, source tier) but does not disclose behavioral traits like rate limits, authentication, or destructive potential. Adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences with no wasted words. First sentence defines purpose, second adds key result features.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given 3 parameters, no output schema, and no annotations, description covers purpose, result types, and result attributes. Could elaborate on search behavior, but sufficient for a search tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already describes all 3 parameters with 100% coverage. Description adds no extra meaning beyond what schema provides, so baseline 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states 'Search the Athena Tools knowledge base' and lists specific return types (views, columns, API endpoints, etc.). Distinguishes from sibling tools which are more specific (explain, diagnose, etc.).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage as a general knowledge search, but no explicit guidance on when to use this vs. sibling tools like athena_explain_view or athena_diagnose_error.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_submit_feedbackA

Submit feedback about an athenahealth interaction outcome. Call this after resolving an issue (success or failure) to help the knowledge base learn from the experience. Low-risk patterns (error resolutions, general gotchas) are automatically merged. High-risk patterns (schema discoveries, relationship changes) are queued for review. This is how the extension gets smarter over time.

ParametersJSON Schema
NameRequiredDescriptionDefault
targetNoOptional target identifier for the discovery, e.g. "DOCUMENT.STATUS", "APPOINTMENT.SCHEDULINGPROVIDERID", "PATIENTCASE workflow". Helps maintainers find the affected KB entry quickly.
contextYesWhat the user was trying to accomplish (e.g., "joining PATIENT to CHART for a demographics report").
outcomeYesWhether the interaction was ultimately resolved successfully.
categoryNoOptional structured category for the discovery. Providing this skips the keyword-classification step and routes the feedback faster. Use "identity_pattern" for PATIENT/CHART/identity, "schema_correction" for column/view behavior differences, "join_path" for incorrect join columns, "enum_value" for missing or new enum values.
sessionIdNoOptional. The sessionId returned by athena_command_start, if this feedback is being submitted as part of a slash-command interaction.
toolsUsedYesWhich MCP tools were called during this interaction (e.g., ["athena_explain_join", "athena_diagnose_error"]).
resolutionNoWhat worked (if success) or what was attempted (if failure). Be specific about the fix.
learnedPatternNoA new pattern, gotcha, or insight discovered during the interaction that other developers would benefit from knowing. This is the most important field — capture what was surprising or non-obvious.
errorEncounteredNoThe error message that was encountered, if any.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses that low-risk patterns are automatically merged and high-risk patterns are queued for review—important behavioral traits. No destructive actions are mentioned, and no contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise—only 4 sentences—yet conveys the purpose, usage timing, and behavioral details. It is front-loaded and every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has 9 parameters (3 required) and no output schema, the description covers purpose, when to use, and behavioral traits well. It omits return value details, but this is acceptable for a feedback submission tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage with detailed descriptions for all 9 parameters. The tool description does not add significant extra meaning beyond what the schema already provides, so a baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: submit feedback about athenahealth interaction outcomes to help the knowledge base learn. It uses a specific verb 'submit' and resource 'feedback', and distinguishes from siblings like athena_report_outcome by describing the automatic merging of low-risk patterns and queuing of high-risk patterns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says to call this after resolving an issue (success or failure), which is clear guidance. It doesn't explicitly state when not to use it or name alternatives, but the context is well implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

athena_suggest_workflowA

Given an integration goal, suggests the recommended API sequence, required Snowflake views, known anti-patterns to avoid, and warnings. Specifically flags when a proposed automation is fighting the intended athenaOne workflow instead of using it — a common cause of failed integrations and partner certification failures.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesDescribe the integration goal, e.g. "sync patient demographics to external CRM", "auto-create appointments from a scheduling system", "upload lab results via API"
contextNoOptional: additional context about your system, tech stack, or constraints.

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description must fully convey behavioral traits. It discloses that the tool suggests sequences and flags anti-patterns, clearly indicating a read-only advisory function. It does not mention side effects, authentication needs, or rate limits, but the nature of the tool suggests no destructive actions. The description is adequate but could be more explicit about its non-destructive status.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long, front-loading the core purpose and then adding specific value about anti-patterns. Every sentence adds unique information without redundancy. It is appropriately sized for the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (suggesting API sequences, views, anti-patterns) and the lack of an output schema, the description provides a reasonable overview of what the tool returns. It could be enhanced by mentioning the output format (e.g., structured list or markdown), but the current description is largely complete for an advisory tool. Sibling tools are diverse, so this tool's role is clear.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the description does not need to compensate for missing parameter definitions. The description provides an example for 'goal', adding contextual value beyond the schema's description. However, it adds no extra semantics for 'context' beyond its optional nature. Therefore, it meets the baseline of 3.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's function: given an integration goal, it suggests recommended API sequences, required Snowflake views, anti-patterns, and warnings. It distinguishes from sibling tools like athena_explain_workflow by focusing on integration planning and suggesting sequences rather than just explaining workflows.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly indicates when to use the tool: when the user has an integration goal. It implies usage for planning integrations and avoiding anti-patterns. However, it does not explicitly state when not to use it or mention alternatives (e.g., athena_explain_workflow for general workflow explanations), which would strengthen guidance.

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. Dates show when Glama detected each change.

  1. 12 tool updatesv0.1.0
    • First observedathena_command_start
    • First observedathena_diagnose_error
    • First observedathena_explain_join
    • First observedathena_explain_view
    • First observedathena_explain_workflow
    • First observedathena_list_candidates
    • First observedathena_report_outcome
    • First observedathena_report_safety_flag
    • First observedathena_review_candidate
    • First observedathena_search_kb
    • First observedathena_submit_feedback
    • First observedathena_suggest_workflow

TDQS

A4.3/5.0
Disambiguation5/5

Each tool has a unique, well-defined purpose in the athenahealth integration domain. No two tools have overlapping functionality; even closely related tools like athena_explain_view and athena_search_kb are clearly differentiated by scope and use case.

Naming Consistency5/5

All tools follow a consistent 'athena_verb_noun' pattern (e.g., athena_list_candidates, athena_explain_view). No mixing of naming conventions, making tool selection predictable for both agents and humans.

Tool Count5/5

With 12 tools, the collection is appropriately scoped for the domain. Each tool provides a distinct, necessary function without redundancy or unnecessary breadth, balancing coverage with simplicity.

Completeness5/5

The tool set covers the full lifecycle of athenahealth knowledge and error handling: discovery (list_candidates, search_kb), explanation (explain_view, explain_join, explain_workflow), diagnosis (diagnose_error), suggestions (suggest_workflow), feedback (submit_feedback, review_candidate), reporting (report_safety_flag, report_outcome), and session management (command_start). No critical gaps are apparent.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

Related MCP Servers

Latest Blog Posts

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/nous-ehr/claude_pallas_extension'

If you have feedback or need assistance with the MCP directory API, please join our Discord server