Skip to main content
Glama
chrischall

Housecall Pro MCP

by chrischall

Server Quality Checklist

67%
Profile completionA complete profile improves this server's visibility in search results.
  • Latest release: v0.3.0

  • Disambiguation5/5

    Each tool targets a distinct resource or action: estimates, invoices, configured links, company info, decline, browser-approval explanation, and health checking. The closest pair is get_estimate and get_invoice, but their descriptions clearly differentiate line-item detail from summary billing data.

    Naming Consistency4/5

    Names consistently use the housecallpro_ prefix with lower_snake_case and mostly verb_object structure such as get_estimate, decline_estimate, and list_links. housecallpro_healthcheck is the one deviation, using a compound noun instead of something like check_health, but it is still readable and stylistically aligned.

    Tool Count5/5

    Seven tools is well within the well-scoped range for a customer-facing contractor document portal. Each tool covers a distinct function without redundancy or bloat.

    Completeness4/5

    The core read-and-decline workflow for estimates and invoices is covered, and list_links plus get_company provide necessary context. Approval is intentionally delegated to a browser via a refusal stub, and there is no payment or invoice-line-item tool, but these are external limitations rather than severe gaps.

  • Average 4.4/5 across 7 of 7 tools scored.

    See the Tool Scores section below for per-tool breakdowns.

    • 5 of 5 community issues answered or closed in the last 6 months
    • 34 commits in the last 12 weeks
    • Last stable release on
    • No critical vulnerability alerts
    • No high-severity vulnerability alerts
    • No code scanning findings
    • CI is passing
  • This repository is licensed under MIT License.

  • This repository includes a README.md file.

  • No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.

    Tip: use the "Try in Browser" feature on the server page to seed initial usage.

  • Add a glama.json file to provide metadata about your server.

  • If you are the author, simply .

    If the server belongs to an organization, first add glama.json to the root of your repository:

    {
      "$schema": "https://glama.ai/mcp/schemas/server.json",
      "maintainers": [
        "your-github-username"
      ]
    }

    Then . Browse examples.

  • Add related servers to improve discoverability.

How to sync the server with GitHub?

Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.

To manually sync the server, click the "Sync Server" button in the MCP server admin interface.

How is the quality score calculated?

The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).

Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.

Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).

Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.

Tool Scores

  • Behavior5/5

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

    Beyond the readOnlyHint annotation, the description discloses that the tool always refuses, explains the reCAPTCHA barrier, and states it returns an explanation and a link. This gives the agent accurate expectations about what the tool can and cannot do.

    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 deliver the critical limitation, the reason behind it, and the intended fallback usage. The most important information is front-loaded and every sentence 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?

    The description tells the agent what the tool does, why it behaves that way, and what it returns. With no output schema, the promised 'explanation and link' is sufficient for this narrowly scoped tool, though it never clarifies the role of `option_ids` or the exact response shape.

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

    Parameters2/5

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

    The schema documents the `link` parameter in detail, but the tool-level description adds no parameter guidance. The `option_ids` parameter has no description in the schema, and this description does not compensate for that gap, leaving its purpose ambiguous.

    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 a specific behavior—this tool always refuses to approve and instead returns an explanation and a browser link. It clearly differentiates itself from the implied action in the tool name and from siblings like housecallpro_decline_estimate and housecallpro_get_estimate.

    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 'Use this to get the explanation and the link to approve in a browser,' giving a clear use case. It also explains why automated approval is not viable, but it does not explicitly contrast with sibling tools or state 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.

  • Behavior4/5

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

    The readOnlyHint annotation already signals a safe read operation. The description adds useful behavioral context by specifying the returned fields and the relationship to an estimate, which matters because there is no output schema. It does not cover failure modes, but for a simple read-only lookup with one parameter, 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 two compact sentences with no redundancy. The primary purpose and return fields are front-loaded, and the parameter guidance follows naturally. Every part earns its place.

    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 single-parameter read-only lookup with annotations covering the safety profile, the description is complete: it states what the tool does, what it returns, and how to obtain the required identifier. No critical information for correct invocation is missing.

    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 single parameter is described clearly in the input schema. The description adds a small clarification about where the value originates, but this largely repeats the schema's own description. This meets the baseline without adding substantial new meaning.

    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 a specific verb and resource ('Look up the contractor behind an estimate') and lists the concrete data returned: phone, email, website, address, and arrival window. This clearly distinguishes the tool from sibling estimate/invoice lookup tools, even without naming 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 gives clear context: use this when you have an estimate and need the contractor's company details. It also tells the agent to source the `organization_id` from an estimate. It does not explicitly list alternatives or when-not-to-use, but the intended situation is strongly implied.

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

  • Behavior4/5

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

    Annotations already set readOnlyHint=true, and the description is consistent with that. It adds valuable behavioral detail beyond the annotations: the compact view returns both cents and dollars, the server derives tax_cents/tax_usd and is_paid, and invoices carry no line items. This gives the agent an accurate expectation of the payload.

    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 with no waste: purpose and return summary, compact-view currency behavior, and a caution about missing line items. Information is front-loaded and every sentence 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?

    For a read-only tool with two optional parameters and no output schema, the description clearly tells the agent what to expect in the response and what not to expect. The view parameter is further explained in the schema, so the description plus schema together provide sufficient context.

    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?

    Schema description coverage is 100%, so the baseline is 3. The description adds extra meaning beyond the schema by spelling out the default compact-view behavior and the 'no line items' caveat, which the schema does not state. This pushes it slightly above baseline.

    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 opens with a specific verb and resource: 'Read an invoice a Housecall Pro contractor sent you,' then enumerates the key returned information (amount, subtotal, tax, balance due, payability). It also distinguishes itself from siblings like get_estimate by targeting invoices specifically and noting the summary-only scope.

    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 gives a clear context: use this when you have an invoice link from a contractor. However, it does not explicitly name alternatives or state when not to use this tool versus get_estimate or list_links. The resource type makes the intended use obvious, but exclusion conditions are absent.

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

  • Behavior4/5

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

    Annotations already indicate readOnlyHint=true, and the description adds valuable behavioral context that retrieval tokens are credentials and are never returned. This reassures the agent that the tool is safe and privacy-preserving beyond what the annotation alone conveys.

    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 concise sentences with no wasted words. The action and resource are front-loaded, and the security caveat about tokens is stated succinctly.

    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 zero-parameter, read-only listing tool, the description is nearly complete: it states what is returned and what is deliberately omitted. It could add slightly more about how the links are represented, but the core behavior is clear.

    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 tool has zero parameters, so there is no parameter information for the description to add. The baseline for zero-parameter tools is 4, and the description appropriately focuses on what the list contains rather than input semantics.

    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 names a specific verb ('List'), a specific resource ('Housecall Pro customer links'), and a clear scope ('this server is configured with'). It also clarifies what is included (labels and document kinds) and what is excluded (retrieval tokens), fully distinguishing this tool from the estimate/invoice/company siblings.

    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 clearly implies when to use the tool: when you need the configured Housecall Pro customer links rather than operating on a specific estimate, invoice, or company. It provides clear context but does not explicitly name alternatives or state 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.

  • Behavior5/5

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

    The description adds important behavioral context beyond the annotations: it is a no-op without confirm:true, makes no network call in dry-run mode, tells the contractor the user is not proceeding, and cannot be undone. The readOnlyHint:false annotation aligns with the stated irreversibility.

    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 tightly written sentences lead with the action, then the critical safe-dry-run detail, then the consequential irreversibility. Every sentence earns its place with no fluff or repetition.

    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 three-parameter tool with full schema coverage, the description supplies the essential behavioral nuances: confirmation requirement, dry-run preview, no network call without confirmation, and irreversibility. Nothing critical is missing for an agent to invoke it correctly.

    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 already documents all three parameters with meaningful descriptions, including the confirm requirement and option_ids source. The description reinforces the confirm semantics and irreversibility but does not add significant new meaning 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 uses a specific verb ('Decline') with a clear resource ('one or more options on an estimate') and scope. It clearly differentiates from siblings like housecallpro_approve_estimate and read-oriented 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?

    The description explains the required confirm:true flow and the dry-run behavior without confirmation, which tells the agent the key precondition for actually executing. It does not explicitly name alternatives or exclusion conditions, but the destructive irreversible nature is clearly conveyed.

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

  • Behavior5/5

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

    Beyond the readOnlyHint, the description discloses important behavior: the default compact view returns money as both integer cents and dollars, while raw returns the upstream document with cents-only money. It also warns about the cents interpretation, preventing misreading of raw values.

    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 dense sentences with no filler. The main purpose is front-loaded, and the view-format nuance is presented in a compact, easy-to-scan second sentence.

    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?

    The description, combined with a fully documented schema and readOnly/openWorld annotations, gives an agent everything needed to call the tool correctly. It covers the return contents, money representation, and the two views without requiring an output schema.

    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 both parameters already have detailed schema descriptions. The tool description adds little beyond what the schema provides, so the baseline of 3 is appropriate.

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

    Purpose5/5

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

    Description uses a specific verb ('Read') and resource ('an estimate'), and lists the concrete contents returned: line items, totals, tax, company, and approval state. It clearly distinguishes itself from sibling tools like housecallpro_get_invoice and the approve/decline actions.

    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 makes the intended use clear: reading an estimate a contractor sent, including its approval status. It does not explicitly name alternatives or exclude invoices, but the resource type and sibling names make the selection unambiguous.

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

  • Behavior4/5

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

    Annotations already provide readOnlyHint=true, so the description does not need to restate safety. The description adds useful behavioral context by revealing that the tool performs a live reachability check and a customer-link resolution check, and its wording implies external network access consistent with openWorldHint.

    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 redundancy. The core purpose is stated first and the usage guidance is delivered in a short, imperative second sentence.

    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 zero-parameter diagnostic tool, the description covers what it checks and when to run it. It does not specify the exact output format, but no output schema exists and the healthcheck's role as a first-line diagnostic is clear.

    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 tool has zero parameters and an empty input schema, so the schema places no burden on the description. The baseline for no-parameter tools is 4, and the description appropriately focuses on purpose rather than parameters.

    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 uses a specific verb ('Check') and names two concrete resources: reachability to Housecall Pro and resolution of a configured customer link. This clearly distinguishes it from sibling data and mutation tools like get_estimate or approve_estimate.

    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?

    'Run this first when a tool fails' is an explicit, actionable usage instruction. It tells the agent exactly when to invoke this tool, and no competing diagnostic alternative appears among the sibling tools.

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

GitHub Badge

Glama performs regular codebase and documentation scans to:

  • Confirm that the MCP server is working as expected.
  • Confirm that there are no obvious security issues.
  • Evaluate tool definition quality.

Our badge communicates server capabilities, safety, and installation instructions.

Card Badge

housecallpro-mcp MCP server

Copy to your README.md:

Score Badge

housecallpro-mcp MCP server

Copy to your README.md:

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/chrischall/housecallpro-mcp'

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