thumbtack-mcp
Server Quality Checklist
Latest release: v0.1.1
- Disambiguation5/5
Each tool has a clearly distinct purpose: searching pros, resolving service slugs, reading a pro profile, reading reviews, raw GraphQL access, and health checking. No two tools overlap in functionality.
Naming Consistency4/5All tools share the consistent thumbtack_ prefix and snake_case, but not all follow a verb_noun pattern: thumbtack_graphql and thumbtack_healthcheck are nouns rather than actions. This is a minor deviation from an otherwise predictable convention.
Tool Count5/5Six tools is well-scoped for an anonymous read-only API. Each tool serves a distinct purpose without redundancy, and the set is neither too thin nor too heavy.
Completeness4/5The core workflow of searching for pros, resolving services, and reading profiles and reviews is fully covered. The GraphQL escape hatch covers missing data, but a dedicated service category listing is absent, which is a minor gap.
Average 4.4/5 across 6 of 6 tools scored.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 16 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.jsonto 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
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, and the description adds context that reviews are embedded on the profile page and lists the fields (rating, author, date, text). No contradiction; the extra detail about data source is valuable beyond the annotation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core action 'Read the reviews', and no wasted words. Every phrase adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with a full schema and no output schema, the description adequately conveys purpose, input source, and the review components returned. The read-only annotation covers safety, so no more is needed.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already explains both parameters. The description adds a hint that the URL comes from search_pros but doesn't introduce new semantics for limit or URL format.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool 'Read the reviews embedded on a Thumbtack pro's profile page' and enumerates the contents (star rating, author, date, text). This distinguishes it from siblings like get_pro (pro details) and search_pros (search).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
It says 'Takes a profile URL from thumbtack_search_pros', giving a clear prerequisite and source for the input. It doesn't explicitly state when not to use it or name alternatives, but the instruction is practical and contextually sufficient.
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 declare readOnlyHint=true, and the description adds behavioral context by specifying that it reports server version and separates HTML and GraphQL probe results. This goes beyond the bare annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded, and every phrase adds value. It conveys purpose and key outputs without unnecessary verbosity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter healthcheck with no output schema, the description fully covers what actions are performed and what is reported (server version, HTML probe, GraphQL probe). No critical information is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty with 100% coverage (vacuously). Since there are no parameters to explain, the baseline of 4 applies; no further detail is required.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: checking reachability and response shape of Thumbtack's anonymous surface. It also mentions the distinct components (server version, HTML probe, GraphQL probe), which sets it apart from sibling tools that deal with search or data retrieval.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the healthcheck nature of the tool, but there is no explicit statement of when to use it versus alternatives or when not to use it. The description does not mention exclusions or alternatives, so the guidance is only implicit.
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 marks it safe, and the description adds valuable context: 'Anonymous — no account needed' and 'Returns up to 10 ranked pros' with specific fields. This goes beyond the annotation without contradicting it.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two crisp sentences: the first states the action and inputs, the second states the output shape and authentication note. No filler or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description compensates by explicitly listing return fields (rating, review count, lifetime hires, mean response time, profile URL) and the cap of 10. Combined with detailed parameter schemas and the readOnly annotation, this is sufficient for correct selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the structured data already explains all four parameters. The description only loosely maps 'trade' to service and 'ZIP' to zip, adding no extra parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Search Thumbtack for local service pros by trade and US ZIP code' – a specific verb, resource, and query criteria. It clearly distinguishes from sibling tools like thumbtack_get_pro (single pro) and thumbtack_get_pro_reviews (reviews) by describing search behavior and result fields.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
Clear usage context: search by trade and ZIP, returns ranked pros, and 'Anonymous — no account needed' implies it works without authentication. However, it does not explicitly name alternative tools or state when not to use it, stopping short of full guidance.
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 declare readOnlyHint: true, and the description's 'Read' verb is consistent. The description adds valuable behavioral context by listing what the tool retrieves (profile details, credentials, section inventory), which goes beyond the structured annotation and clarifies the tool's output scope.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: the first states the purpose and contents, the second specifies the parameter source. It is front-loaded with the core action and all information is relevant, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema, the description lists the main returned elements, which gives a good sense of the result. It doesn't explain potential error conditions or what 'section inventory' means, but it is reasonably complete for a read-only tool with a well-defined input source.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single 'url' parameter fully with a description. The description adds semantic value by specifying that the URL should come from thumbtack_search_pros, which is not in the schema. This helps the agent understand the expected provenance of the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Read') and the resource ('a Thumbtack pro's profile'), and enumerates specific content (name, description, location, rating, credentials, section inventory). It distinguishes itself from sibling tools like thumbtack_get_pro_reviews and thumbtack_search_pros by focusing on the full profile.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context by specifying the input source ('Takes a profile URL from thumbtack_search_pros'), which guides when to use this tool after a search. It doesn't explicitly mention alternatives or exclusions, but the usage context is strong enough for an agent to understand its role.
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 annotation readOnlyHint=true, the description discloses that the endpoint is anonymous (no auth needed), that introspection is disabled upstream (field names must come from Apollo state), and that mutations are refused. These are non-obvious behavioral details that help the agent avoid failed calls. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each earning its place: purpose, a critical caveat about introspection, and a constraint on mutations. The most important information is front-loaded in the first sentence. No redundant filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the essential context for a generic escape-hatch tool: what it does, the read-only restriction, the lack of introspection, and the need for Apollo state. It doesn't describe return format, but for GraphQL the query itself predetermines the response shape, so this is acceptable. Given the absence of an output schema, slightly more detail could be helpful, but it's largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides complete descriptions for both parameters (query and variables), with query explicitly stating it must not contain mutation or subscription. The description reinforces this ('mutations refused') but doesn't add new syntax or format details. With 100% schema coverage, 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/5Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with 'Escape hatch: issue an arbitrary read-only query against Thumbtack's anonymous GraphQL endpoint.' This clearly states the action (issue query), the resource (Thumbtack's GraphQL endpoint), and the scope (arbitrary read-only). The 'escape hatch' wording distinguishes it from sibling tools that serve specific lookup purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'escape hatch' implies use when specialized tools (e.g., thumbtack_search_pros) are insufficient, and the description adds concrete constraints: 'Introspection is disabled upstream, so field names must come from a page's Apollo state' and 'Mutations are refused.' While it doesn't explicitly list alternatives, the context clearly guides when this tool is appropriate.
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 description adds behavioral context beyond the readOnlyHint: it explains that the tool asks Thumbtack and that canonicalisation happens via redirect, with a concrete example. It does not discuss rate limits or error cases, but the core behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the action, and every phrase adds value. The example is compact and immediately illustrative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness5/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a minimal tool with two parameters, a read-only annotation, and no output schema, the description fully explains what it does and when to use it. No additional behavioral or context information is necessary.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% since both parameters have descriptions, but the tool description adds an example ('plumbing' -> 'plumbers') that clarifies the service parameter intent. It also reinforces that zip does not affect the resolved slug, matching the schema description.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb-resource pair: 'Resolve a loose service name to the canonical Thumbtack slug.' It clearly differentiates from siblings like search/get by focusing on slug resolution rather than actor search or profile data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines5/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to use the tool: 'Use before assuming a slug is right.' This gives a clear directive for appropriate invocation and implies that it should precede other slug-dependent operations.
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
Copy to your README.md:
Score Badge
Copy to your README.md:
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/chrischall/thumbtack-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server