The Service Marketing Guys Audit
Server Details
Read-only audit of any local service business, Open Service Profile conformance first.
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP
- URL
- Repository
- buildmodus/open-service-profile
- GitHub Stars
- 0
TDQS
Scored across 7 tools
Each check tool targets a distinct audit dimension (agent readiness, AI visibility, local rank, site speed), and start_audit/get_audit_report/explain_check have clearly separate roles. The synchronous behavior of check_agent_readiness is explicitly distinguished from the async check tools.
All tools use a consistent lowercase snake_case verb_noun pattern: check_* for starting audits, get_audit_report for fetching results, start_audit for the combined run, and explain_check for explanations. Naming is predictable and uniform.
Seven tools is well-scoped for an audit-oriented service. Each tool has a clear purpose, and the set covers individual checks, a combined audit, result retrieval, and explanation without unnecessary duplication.
The server covers the core audit lifecycle well: individual checks, a full audit, polling-based report retrieval, and human-readable explanations. Minor gaps exist, such as explain_check not supporting AI visibility or local rank finding IDs and no direct budget status tool, but agents can still complete the main workflows.
Available Tools
7 toolscheck_agent_readinessARead-onlyIdempotentInspect
Check whether a local service business is legible to AI agents. Headline: Open Service Profile conformance (manifest at https:///.well-known/open-service-profile validated against the spec, level claimed versus automated Level 1 checks, LocalBusiness and ScheduleAction JSON-LD on the home page). Secondary: the isitagentready.com signal, which degrades to unavailable when that service is down. Synchronous. Returns the final result, usually within about 30 seconds. Reuses a check from the last hour.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Website URL, http or https. The scheme is optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already signal readOnly, idempotent, and non-destructive behavior, but the description adds real behavioral detail: the tool is synchronous, usually returns within about 30 seconds, reuses a check from the past hour, and degrades the isitagentready.com secondary signal to 'unavailable' when that service is down. These specifics go beyond the annotations and help an agent anticipate latency and failure modes. Missing are explicit response type details, but the extra context merits a solid 4.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with a clear purpose and follows with structured sections (Headline, Secondary) and appended notes on latency and caching. The first sentence is both meaningful and compact. The parenthetical listing Open Service Profile details is dense but packed with necessary signal, so nothing is extraneous; slight formatting improvements could improve scannability, but it remains efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is a check with no output schema, the description does not say what the 'final result' actually looks like (boolean, report, level, etc.). It describes inputs, checks, performance, and caching but leaves the return contract vague—an agent may not know whether to expect a machine-readable verdict, a structured report, or a human-readable sentence. The tool itself is relatively simple, and the annotations fill some gaps, but the missing return description prevents a higher score.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The JSON schema already fully describes the single 'url' parameter, including 'http or https' and 'The scheme is optional', so schema coverage is 100%. The description adds no additional parameter nuance beyond this. The mention of manifest path is about the tool's internal checks, not parameter usage, so the parameter semantics rely on the schema alone – baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description's headline 'Check whether a local service business is legible to AI agents' provides a specific verb and resource, and then elaborates with concrete checks: Open Service Profile conformance (manifest at ///.well-known/open-service-profile, validated against the spec, including LocalBusiness and ScheduleAction JSON-LD) and the isitagentready.com signal. This level of detail clearly distinguishes it from sibling tools like check_ai_visibility or check_site_speed without needing to name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case—assessing AI-agent legibility of a local business—and gives no wrong-context instructions. However, it does not explicitly state when to use this tool versus alternatives such as check_ai_visibility or check_local_rank, nor does it mention any preconditions or exclusions (e.g., the URL must be publicly reachable). It would be stronger with a direct 'Use this when...' or a quick contrast to sibling checks.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_ai_visibilityARead-onlyIdempotentInspect
Start an AI visibility check: does the business appear when AI assistants are asked for local providers in its city? It uses up to five prompts to the configured OpenAI model. Paid, drawn from a shared daily budget; when the budget is used up the result says quota_reached with the UTC reset time. For a running result, wait pollAfterSeconds, then call get_audit_report with runId. Repeat while status is running. Cached completed results need no polling.
| Name | Required | Description | Default |
|---|---|---|---|
| url | No | Website URL, http or https. The scheme is optional. | |
| city | Yes | ||
| state | Yes | US state, two-letter code or full name. | |
| trade | No | Trade, for example hvac, plumbing, auto repair, marine. Optional; inferred when omitted. | |
| businessName | Yes | Business name as it appears on Google. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate read-only, open-world, idempotent, non-destructive behavior. The description adds meaningful behavioral context on top: it consumes a shared daily paid budget, can return quota_reached with UTC reset time, uses up to five prompts, and returns cached completions without polling. 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded, followed by three distinct operational facts (cost/quota, polling sequence, caching) with no filler. The longer length is justified by the async paid behavior that the agent must understand before calling.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, yet the description covers the necessary runtime contract: result can be running or quota_reached with reset time, pollAfterSeconds, runId, and caching behavior. An agent has enough to invoke and follow through correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 80%, and the description adds no per-parameter information beyond what the schema already documents; it only references runId/pollAfterSeconds as part of the response workflow, not input semantics. Baseline 3 is appropriate when the schema carries most parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action ('Start an AI visibility check') and defines the domain question: whether the business appears in AI assistant local-provider answers. It references get_audit_report, making its role as the start-side counterpart clear and distinguishing it from polling/audit siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides an explicit polling workflow: wait pollAfterSeconds, call get_audit_report with runId, repeat while running, and skip polling for cached results. It doesn't explicitly say 'use this instead of X,' but the workflow and budget/quota caveat tell the agent when and how to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_local_rankARead-onlyIdempotentInspect
Start a Google Maps rank grid (49 points, 8 miles) for a business by Google Place id, or by business name and city. Paid, drawn from a shared daily budget; when the budget is used up the result says quota_reached with the UTC reset time. For a running result, wait pollAfterSeconds, then call get_audit_report with runId. Repeat while status is running. Cached completed results need no polling.
| Name | Required | Description | Default |
|---|---|---|---|
| city | No | City, required with businessName when no placeId is given. | |
| state | No | US state, two-letter code or full name. | |
| trade | No | Trade, for example hvac, plumbing, auto repair, marine. Optional; inferred when omitted. | |
| placeId | No | Google Place id, for example ChIJ.... | |
| businessName | No | Business name as it appears on Google. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations declare readOnlyHint=true and idempotentHint=true, but the description says to 'Start' a paid grid drawn from a shared daily budget and describes a run lifecycle. This is a serious contradiction: starting a paid, quota-consuming job is not a read-only/idempotent operation. Per the contradiction rule, this dimension scores 1.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Every sentence carries operational value: inputs, payment/quota behavior, polling instructions, repeat condition, and caching behavior. There is no filler and the key purpose is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, the description covers the full lifecycle: how to start it, what happens on quota exhaustion, how to poll, when to stop polling, and when caching makes polling unnecessary. The only implicit details are the result fields pollAfterSeconds, runId, and status, but the workflow makes those clear enough to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents all five parameters with 100% coverage, so the baseline is 3. The description adds useful relational semantics: either placeId OR businessName+city is the identifying pair, and trade is inferred when omitted. This goes beyond the schema without repeating it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a concrete operation: 'Start a Google Maps rank grid (49 points, 8 miles)' and names the two acceptable input modes (Place id or business name + city). This clearly identifies what the tool does and distinguishes it from sibling report/audit tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives clear usage context: start a paid rank grid, wait pollAfterSeconds for running results, call get_audit_report with runId, repeat while status is running, and skip polling for cached completed results. It does not explicitly state when not to use this tool or contrast it with start_audit, but the workflow guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_site_speedARead-onlyIdempotentInspect
Start a Google PageSpeed run (mobile and desktop) for a website. Free. For a running result, wait pollAfterSeconds, then call get_audit_report with runId. Repeat while status is running. Cached completed results need no polling.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Website URL, http or https. The scheme is optional. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile, and the description adds useful behavioral context: it is free, asynchronous, yields a runId and pollAfterSeconds, and cached results skip polling. No contradiction with readOnlyHint or idempotentHint exists.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences front-load the core action and then give the essential workflow. Every sentence earns its place, and there is no redundant or filler wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter asynchronous tool with no output schema, the description supplies the lifecycle details needed to use it correctly: runId, pollAfterSeconds, status polling, and cached-result behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the only parameter, url, completely with guidance about the scheme. The description adds no extra parameter-level semantics, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource: 'Start a Google PageSpeed run (mobile and desktop) for a website.' This clearly separates it from retrieval siblings like get_audit_report and implies a distinct role from start_audit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides a clear follow-up workflow: wait pollAfterSeconds, call get_audit_report with runId, and poll while status is running. The caching note adds an explicit condition, though it does not directly compare against sibling tools beyond get_audit_report.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_checkARead-onlyIdempotentInspect
Plain-language explanation of one check id: what it looks at, why it matters to a service business, and what to do. Explains osp-1 through osp-20 and agent-readiness check ids. Other engines' finding ids are not supported.
| Name | Required | Description | Default |
|---|---|---|---|
| checkId | Yes | A check id from a result, for example osp-7 or discoverability.robotsTxt. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds meaningful behavioral context: it explains the scope of supported check ids and the nature of the output (plain-language explanation with three components). This goes beyond the annotations and helps the agent set expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no wasted words. It front-loads the core purpose, then adds scope constraints and exclusions. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter and no output schema, the description is nearly complete. It covers what the tool does, what it supports, and what it doesn't. The only minor gap is not describing the exact output format, but since there's no output schema and the description already says 'plain-language explanation,' this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents the checkId parameter with an example. The description adds context about what values are valid (osp-1 through osp-20, agent-readiness ids) and what is not supported, which is useful. However, it doesn't add much beyond the schema's example, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: providing a plain-language explanation of a check id, including what it looks at, why it matters, and what to do. It explicitly names the supported check id ranges (osp-1 through osp-20 and agent-readiness check ids) and excludes other engines' finding ids, which distinguishes it from sibling tools that perform checks or audits.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: when you need to understand a check id from a result. It explicitly states what is not supported (other engines' finding ids), which helps an agent avoid misuse. However, it doesn't explicitly name alternative tools for unsupported ids or describe when to use siblings like get_audit_report, so it's clear but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_audit_reportARead-onlyIdempotentInspect
Fetch the status and, when finished, the report for a runId returned by check_site_speed, check_ai_visibility, check_local_rank, or start_audit. For a running result, wait pollAfterSeconds, then call again with the same runId. Repeat while status is running.
| Name | Required | Description | Default |
|---|---|---|---|
| runId | Yes | The runId returned by an async tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already mark it read-only and idempotent; the description adds the key behavioral trait that repeating the call with the same runId is the expected polling mechanism and that a running result must be re-fetched after pollAfterSeconds. It also clarifies the response contains status and, on completion, the report.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences front-load the action and resource, then immediately give the polling loop. No filler or repetition of schema details.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter retrieval tool with read-only/idempotent annotations, the description provides everything needed to call and poll it correctly: source of runId, expected statuses, wait behavior, and repetition rule. The absence of an output schema is mitigated by the explicit status/report semantics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already explains runId as 'returned by an async tool,' and the description adds value by naming the exact producer tools and stressing that the same runId should be reused across polls. This is more than the schema alone, though the parameter format is already fully documented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb+resource: 'Fetch the status and, when finished, the report for a runId' and ties it to concrete producer tools (check_site_speed, check_ai_visibility, check_local_rank, start_audit). This makes it unmistakable as the async result-retrieval endpoint among the sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly defines when to call: after an async tool returns a runId, and how to poll: 'wait pollAfterSeconds, then call again with the same runId. Repeat while status is running.' This is actionable and leaves no ambiguity about the call pattern.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
start_auditARead-onlyIdempotentInspect
Start the full visibility audit: site speed, agent readiness, and Open Service Profile conformance, plus the paid engines when their inputs are given. city enables AI visibility. placeId enables local rank. Provide businessName and state for accurate identification. If the paid budget cannot cover this request, nothing starts; use the individual free tools. For a running result, wait pollAfterSeconds, then call get_audit_report with runId. Repeat while status is running. Cached completed results need no polling.
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | Website URL, http or https. The scheme is optional. | |
| city | No | City. Needed for the AI visibility check. | |
| state | No | US state, two-letter code or full name. | |
| trade | No | Trade, for example hvac, plumbing, auto repair, marine. Optional; inferred when omitted. | |
| placeId | No | Google Place id. Needed for the local rank grid. | |
| businessName | No | Business name as it appears on Google. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnly/idempotent/non-destructive safety. The description adds genuinely useful behavioral context beyond that: the async nature (returns a runId, not a result), the polling loop requirement, cached-result handling, and the critical 'nothing starts without budget' behavior. No contradiction with the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first sentence, and every sentence earns its place: scope, parameter gating, budget exception, and the polling workflow. It is dense but not bloated; it packs multiple distinct topics into a single block, which is the only structural weakness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an async start-tool with no output schema, the description covers what an agent needs: what is started, when it won't start, parameter prerequisites, how to retrieve results (poll get_audit_report with runId), and caching semantics. Minor gaps remain: the term 'paid engines'/'paid budget' is never defined, and the individual free tools are referenced generically rather than by name.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description maps city→AI visibility and placeId→local rank, but these largely duplicate the schema's own parameter descriptions ('Needed for the AI visibility check', 'Needed for the local rank grid'). The only incremental value is stating that businessName and state are for 'accurate identification', which is marginal over the 100% schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb-resource pair ('Start the full visibility audit') and enumerates exactly what the audit encompasses: site speed, agent readiness, and Open Service Profile conformance. This clearly distinguishes it from the sibling single-purpose tools (check_site_speed, check_ai_visibility, etc.) since it is the umbrella audit that subsumes them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives explicit when-to-use guidance: use this for a full multi-part audit, and explicitly excludes the use case ('If the paid budget cannot cover this request, nothing starts; use the individual free tools'). It also provides workflow guidance on polling vs. cached results. It does not individually name which sibling is preferred for which condition, but the alternative ('individual free tools') is concrete enough.
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.
7 tool updates
- First observed
check_agent_readiness - First observed
check_ai_visibility - First observed
check_local_rank - First observed
check_site_speed - First observed
explain_check - First observed
get_audit_report - First observed
start_audit
Related MCP Connectors
Discover and query every business on ANOTS — search, ask, or find-and-ask over MCP.
Read-only, privacy-safe evidence of physical business presence for AI agents.
Official-source US business, permit, and WHOIS evidence via read-only MCP tools.
Read-only tools for finding where a small business leaks deals, time, and cash.
Related MCP Servers
AlicenseNot gradedqualityCmaintenanceRemote, read-only MCP connector to check any company's witnessed trust record on the Trooth Network, across identity, security, privacy, and AI practices. Also does a neutral read of a domain's public security surface and verifies signed Trust Ledger Tokens. No key, no account.MIT- AlicenseNot gradedqualityBmaintenanceMCP server that provides read-only business operations tools: list businesses, get status, identify missing inputs, and prepare email drafts/attachment manifests from synthetic evidence, with strict no-send/no-write safeguards.Apache 2.0
- AlicenseBqualityCmaintenanceEnables read-only operational audits of schedulers, recurring job health, delivery failures, overdue runs, gateway/MCP health, and lock-file inventory without modifying inspected systems.11MIT
- FlicenseNot gradedqualityFmaintenanceThe owner-verified local business data + service & menu-price layer for AI agents. Owner-authored business profiles where every response carries provenance — verification level, completeness score, freshness timestamps, and upstream sources. * Search & profiles — find businesses by name, category, city, or geo-radius; full profiles with contacts, hours, media, ratings. * Price layer-