The Service Marketing Guys Audit

Read-only audit of any local service business, Open Service Profile conformance first.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
98%
Naming quality
97%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,718Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (1.34% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "audit": {
      "url": "https://www.theservicemarketingguys.com/api/audit-mcp"
    }
  }
}

Remote endpoints

https://www.theservicemarketingguys.com/api/audit-mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢check_agent_readiness(url)

Check whether a local service business is legible to AI agents. Headline: Open Service Profile conformance (manifest at https://<host>/.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.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 3,
      "maxLength": 2048,
      "description": "Website URL, http or https. The scheme is optional."
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_site_speed(url)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 3,
      "maxLength": 2048,
      "description": "Website URL, http or https. The scheme is optional."
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_ai_visibility(businessName, city, state, trade, url)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "businessName": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "Business name as it appears on Google."
    },
    "city": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "state": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "US state, two-letter code or full name."
    },
    "trade": {
      "description": "Trade, for example hvac, plumbing, auto repair, marine. Optional; inferred when omitted.",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "url": {
      "type": "string",
      "minLength": 3,
      "maxLength": 2048,
      "description": "Website URL, http or https. The scheme is optional."
    }
  },
  "required": [
    "businessName",
    "city",
    "state"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢check_local_rank(placeId, businessName, city, state, trade)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "placeId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300,
      "description": "Google Place id, for example ChIJ...."
    },
    "businessName": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "Business name as it appears on Google."
    },
    "city": {
      "description": "City, required with businessName when no placeId is given.",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "state": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "US state, two-letter code or full name."
    },
    "trade": {
      "description": "Trade, for example hvac, plumbing, auto repair, marine. Optional; inferred when omitted.",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢start_audit(url, businessName, city, state, placeId, ...)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "minLength": 3,
      "maxLength": 2048,
      "description": "Website URL, http or https. The scheme is optional."
    },
    "businessName": {
      "type": "string",
      "minLength": 2,
      "maxLength": 200,
      "description": "Business name as it appears on Google."
    },
    "city": {
      "description": "City. Needed for the AI visibility check.",
      "type": "string",
      "minLength": 1,
      "maxLength": 120
    },
    "state": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "US state, two-letter code or full name."
    },
    "placeId": {
      "description": "Google Place id. Needed for the local rank grid.",
      "type": "string",
      "minLength": 1,
      "maxLength": 300
    },
    "trade": {
      "description": "Trade, for example hvac, plumbing, auto repair, marine. Optional; inferred when omitted.",
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    }
  },
  "required": [
    "url"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢get_audit_report(runId)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "runId": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "The runId returned by an async tool."
    }
  },
  "required": [
    "runId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢explain_check(checkId)

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.

Input Schema

{
  "type": "object",
  "properties": {
    "checkId": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "A check id from a result, for example osp-7 or discoverability.robotsTxt."
    }
  },
  "required": [
    "checkId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools
verifiedversion not recorded7 tools