Skip to content

Moonlings — Local Business Intelligence

by moonlings.ai · remote · no sign-in to list tools · v0.4.1 · published by ai.moonlings

AI visibility + fact-checks (ChatGPT/Perplexity), review gaps & competitor scans, local SEO.

Changes · 3

8 tools: 3 change things and 5 only read.

Scanned Oct 21, 2026

1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http moonlings https://moonlings.ai/api/mcp

Findings

Matches of fixed checks, with the text they matched.

1 warn
  • The server marks "run_scan" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true}; The name "run_scan" says "run": a word for a change.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

8 tools

Changes things 3Claude Code: ask
  • check_visibilityAsk ChatGPT and Perplexity live (with web search) who they'd recommend in a business's category and city, and report whether THIS business appears.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Ask ChatGPT and Perplexity live (with web search) who they'd recommend in a business's category and city, and report whether THIS business appears. Returns honest appearance counts (never an invented metric), a per-engine split, who gets recommended instead, and which local sites the AI answers cite. AI answers vary substantially between runs — one check is a snapshot, not a stable measurement; re-check over time for the real picture. Call this when a user wants to know if AI assistants recommend a local business. Takes ~10-30 seconds. Price: $0.79 per delivered check.

    Annotations the server declares

    • readOnlyHint: true
  • run_scanA live competitor scan: a research agent finds the business's strongest same-category rival nearby and scouts it (offer, pricing signals, review positioning, what they do that this…1 finding

    Why it is in this group

    • The name "run_scan" says "run": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "run_scan" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true}; The name "run_scan" says "run": a word for a change.

      What this check looks for
    Description, as the server wrote it
    A live competitor scan: a research agent finds the business's strongest same-category rival nearby and scouts it (offer, pricing signals, review positioning, what they do that this business doesn't), while two ground-truth lookups run in parallel: ChatGPT/Perplexity sampling for AI-assistant visibility, and a direct Google Places review comparison (reviewSnapshot — the authoritative numbers; finding source URLs are verified against what the agent actually retrieved). The AI-visibility portion is a single-run snapshot — AI answers vary substantially between runs. BLOCKING and slow: typically 2-4 minutes — only call it from contexts that tolerate a long tool call. Price: $1.99 per delivered scan; a failed scan is never charged.

    Annotations the server declares

    • readOnlyHint: true
  • start_deep_reportLaunch a full overnight-grade research report on a local business: an autonomous research crew maps the competitive landscape, reads the business's and rivals' web presence, and de…No findings

    Why it is in this group

    • The name "start_deep_report" says "start": a word for a change.
    Description, as the server wrote it
    Launch a full overnight-grade research report on a local business: an autonomous research crew maps the competitive landscape, reads the business's and rivals' web presence, and delivers a long-form graded report with structured findings and an action list. ASYNC: this tool returns a slug immediately; the report takes roughly 10-20 minutes. Poll check_report_status, then fetch with get_report_result. Price: $9.99, charged when the report launches; if the report fails, the charge is refunded automatically. Each call starts a NEW report — do not retry a call that already returned a slug.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
Only reads 5Claude Code: allow
  • check_factsFind what AI assistants get WRONG about a local business.No findings

    Why it is in this group

    • The description's first verb is "find": a word for reading.
    Description, as the server wrote it
    Find what AI assistants get WRONG about a local business. Asks ChatGPT and Perplexity live (with web search) about the business's hours, address, phone, and category, then verifies each stated fact against Google Business ground truth. Returns a severity-ranked list of conflicts (with the AI's value vs. the trusted value and source) plus discrepancies to check. Conservative by design: a claim with no trusted source is 'unverifiable' (never an error), and a conflict is only counted when it reproduces across engines — so it won't cry wolf. Call this when a user asks whether AI has the right info about a business, or 'why does ChatGPT say we're closed'. Takes ~15-30 seconds. Price: $1.49 per delivered check.

    Annotations the server declares

    • readOnlyHint: true
  • check_report_statusPoll a deep research report by slug.No findings

    Why it is in this group

    • The name "check_report_status" says "status": a word for reading.
    Description, as the server wrote it
    Poll a deep research report by slug. Free. Returns status (generating / ready / failed); a failed report triggers the automatic refund of its launch charge. Deep reports typically take 10-20 minutes — poll every few minutes, not every few seconds.

    Annotations the server declares

    • readOnlyHint: true
  • get_report_resultFetch a completed deep research report by slug.No findings

    Why it is in this group

    • The name "get_report_result" says "get": a word for reading.
    Description, as the server wrote it
    Fetch a completed deep research report by slug. Free. Returns the long-form report (markdown), a structured-findings JSON block, the action list, and the report card. If the report is still generating you get its status instead; if it failed, the launch charge is refunded automatically.

    Annotations the server declares

    • readOnlyHint: true
  • pingReturns server status, the price list, and (when authenticated) your credit balance.No findings

    Why it is in this group

    • The name "ping" says "ping": a word for reading.
    Description, as the server wrote it
    Returns server status, the price list, and (when authenticated) your credit balance. Free — call it to check connectivity and see what this server offers.

    Annotations the server declares

    • readOnlyHint: true
  • review_gapCompare a local business's Google rating and review count against the top same-category rivals nearby, with the gap math done: who leads, the rating delta, the review-volume ratio,…No findings

    Why it is in this group

    • The description's first verb is "compare": a word for reading.
    Description, as the server wrote it
    Compare a local business's Google rating and review count against the top same-category rivals nearby, with the gap math done: who leads, the rating delta, the review-volume ratio, and a verdict (leading / rated_equal_or_better_but_outreviewed / trailing). Live Google Maps lookup at call time. Call this when a user wants to know how a business's reviews stack up against local competitors. Takes a few seconds. Price: $0.39 per delivered comparison.

    Annotations the server declares

    • readOnlyHint: true

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 0.4.1. Values in angle brackets are yours to fill in.

claude mcp add --transport http moonlings https://moonlings.ai/api/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__moonlings__ping",
      "mcp__moonlings__review_gap",
      "mcp__moonlings__check_facts",
      "mcp__moonlings__check_report_status",
      "mcp__moonlings__get_report_result"
    ],
    "ask": [
      "mcp__moonlings__check_visibility",
      "mcp__moonlings__run_scan",
      "mcp__moonlings__start_deep_report"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as moonlings. Review it before you use it.