manmohm

advisorsai-check

Community manmohm
Updated

Lists which machine-readable basics a public page declares, and which it does not. One command, no API key, no account; also a read-only MCP tool.

advisorsai-check

Listed on mcpservers.org

Does a public page expose the declared machine-readable basics that answer engines can use?

One command. No API key, no account, no signup.

# one-off, nothing left behind (needs pipx: python -m pip install pipx)
pipx run --spec git+https://github.com/manmohm/advisorsai-check advisorsai-check example.com

# or install once
pipx install git+https://github.com/manmohm/advisorsai-check
advisorsai-check example.com
From a clone
git clone https://github.com/manmohm/advisorsai-check.git
cd advisorsai-check
python -m pip install .
advisorsai-check example.com

Use it from Claude or any MCP client — no install

The same bounded public-page check is available as one remote, read-only MCPtool. You provide one public URL; it returns at most one actionable findingwith an HMAC evidence receipt that the operator can re-verify.

  • Add Advisors AI Store Readiness to Claude
  • Official MCP Registry name: ai.advisorsai/store-readiness
  • Streamable HTTP endpoint: https://advisorsai.ai/store-readiness-mcp
  • Inspect the MCP implementation and its operator boundary

The remote tool does not write to the submitted site, store the result, shareit, infer answer-engine rankings, or predict sales. It is new: there are nocustomer case studies yet.

advisorsai-check  https://example.com

  ok   page title: «Example — industrial valves since 1994»
  ok   meta description, 153 chars
  MISS no Organization/LocalBusiness structured data: nothing states what this
       business IS in a form machines read
  MISS no Service/Product structured data: what you sell is only in prose
  ok   one <h1>: «Valves that survive the plant floor»
  ok   canonical link with an HTTP(S) href is present
  ok   declared robots policy allows search crawlers on /
       (training/model-use crawlers blocked by policy: GPTBot, Google-Extended)
  note no /llms.txt (informational only: it is not a web standard)
  ok   valid urlset sitemap with 24 locations

  64% of the declared public-page basics checked in this run are in place.

Use it as an Agent Skill

Coding agents that follow the Agent Skills format can loadskills/ai-site-readiness/SKILL.md: it teaches the agentto run this check, read only observed evidence, and never claim rankings.

What it checks

Signal Why a machine cares
robots.txt The site's declared policy for autonomous search crawlers on the submitted path. User-triggered fetchers and training/model-use crawlers are reported separately and never change the score. It does not prove a crawler passes the site's firewall.
llms.txt An experimental summary. It is reported but carries no score weight: it is not a web standard, and Google Search says it does not use it.
JSON-LD Organization Whether anything states, in a form machines parse, what this business is.
JSON-LD Service / Product Whether what you sell exists outside prose.
<title>, meta description, <h1>, canonical Page fields commonly exposed to parsers.
sitemap.xml Whether /sitemap.xml has valid urlset/url/loc or sitemapindex/sitemap/loc records with absolute HTTP(S) locations.

What it does not check

It does not tell you whether an assistant names you when a buyer asks.

That is not established by a page fetch. It is an observation of live answers,and establishing it requires timestamped captures against real assistants andcomparison with peers. This tool therefore never relabels its bounded pagechecks as a visibility score.

So everything here is a public-page basic: a fixable technical condition,not evidence that an answer engine will cite you. Not a ranking. Not a share.Not a promise.

Install from source

git clone https://github.com/manmohm/advisorsai-check.git
cd advisorsai-check
python -m pip install .
advisorsai-check example.com

The package is not yet published to PyPI. Do not use or advertise apip install advisorsai-check command until the release exists there.The command-line checker core supports Python 3.9+. The optional remote-serverdependencies require Python 3.10+, and the published server source is forinspection of the official operator deployment rather than a turn-keyself-hosted promise. The package pins html5lib==1.1 andwebencodings==0.6.1 somalformed HTML is interpreted with one stable HTML5 tree-construction contractand charset labels follow the WHATWG web-encoding registry. The HTML parser andfact extractor run in a byte-capped, time-capped child process; there is nohand-written token or nesting estimator. Home pages must be served astext/html: application/xhtml+xml is deliberately rejected because thistool does not claim an XML parsing contract. Responses must also be anuncompressed identity representation; unsupported Content-Encoding valuesare rejected instead of being parsed as HTML bytes.

Use it in CI

--json gives you the full result. Exit code 0 means every checker returned;1 means at least one check was unavailable or failed internally; and 2means the submitted address was unusable. A partial run publishes score: null,reports weighted coverage_percent, and is never a successful process result:

set -o pipefail
advisorsai-check example.com --json | jq '.score'
- name: Public-page machine basics
  run: |
    git clone --depth 1 https://github.com/manmohm/advisorsai-check.git /tmp/advisorsai-check
    python -m pip install /tmp/advisorsai-check
    result=$(advisorsai-check "$SITE" --json) || {
      status=$?
      echo "$result"
      exit "$status"
    }
    score=$(printf '%s' "$result" | jq -er '.score')
    echo "Declared public-page basics: $score%"
    [ "$score" -ge 80 ] || { echo "::warning::below 80%"; }

As a library

from advisorsai_check import run

report = run("example.com")
if not report.successful:
    raise RuntimeError(report.errors)
print(report.score)
for signal in report.signals:
    if signal.ok is False:
        print("fix:", signal.detail)

report.successful is false if any signal is unchecked or any checker raisedan internal error. In that state report.score is None; usereport.coverage_percent to describe how much of the weighted check set ran,never as a substitute score.The report vocabulary is closed: every run carries exactly one receipt forhome, title, description, structured_business,structured_offering, h1, canonical, robots, llms_txt, andsitemap, with weights fixed by the library. jsonld_valid is the soleoptional diagnostic and may occur at most once. Missing stages, unknown keys,duplicates, empty receipts, or changed weights make the report unsuccessful;they can never yield a score or 100% coverage.The home receipt also pins the six page-derived rows: a checked home failurerequires checked failures for title, description, structured business,structured offering, H1, and canonical; an unavailable home requires all sixto remain unavailable. The optional jsonld_valid row is accepted only as anegative diagnostic (false) after a full home representation was parsed. Itcan lower a score but can never act as a positive bonus. Although home andllms_txt are zero-weight stage receipts, leaving either unchecked adds amissing-coverage unit, so a partial run cannot display 100% coverage.signal.ok is True, False, or None. None means the check could not run— a DNS, connection, TLS, or timeout failure, for example. Such failures arereported as unchecked (ok: null), never as evidence that the site failed.They make the whole run incomplete: report.successful is false,report.score is None, and coverage_percent shows only the weighted sharethat actually ran. Status 0 is reserved for this transport/unavailable state.An HTTP 4xx or 5xx response is different: the site did answer, so it produces achecked result according to that signal's contract before the checker considersthe error representation's body or Content-Type. Thus a home-page 4xx/5xx isa checked failure even when the body is empty or mislabeled; robots.txt keepsRFC 9309's distinct 4xx/5xx semantics. A page or robots representation is fullonly at exact HTTP 200: informational/accepted or partial/delta statuses suchas 202, 206, and 226 are rejected. Redirects to another origin are not followed.

The first site we pointed it at was our own

It identified a crawler-policy mismatch between the site's intended robotsrules and the rules served at the edge. The lesson is narrower than a rankingclaim: inspect what public crawlers actually receive, not only the file in therepository.

We had not noticed. The tool found it in one run, which is the entire argumentfor running it on yours.

Who made this

Advisors AI measures timestamped answer-engine outputsfor a business, and builds systems the client then owns outright. This tool is thefree, honest part: the part you can verify yourself, offline, with the sourcein front of you.

The paid part is the part this tool refuses to guess at — what assistantsactually say about you, with the captures to prove it, and what to change.

MIT licensed. Issues and pull requests welcome.

MCP Server · Populars

MCP Server · New

    hermes-labs-ai

    Fidelis Memory

    Zero-LLM agent memory for Claude Code and AI agents: local-first BM25, dense-vector, and reciprocal-rank-fusion retrieval. Returns original passages verbatim by default. Available on PyPI as fidelis-memory. MIT.

    Community hermes-labs-ai
    n24q02m

    Better Code Review Graph

    Knowledge graph for token-efficient code reviews -- semantic search and call-graph resolution across your codebase.

    Community n24q02m
    Noveum

    Orbit

    Free, open source, realtime task manager. Issues, boards, sprints, projects and docs that sync instantly. Keyboard-first, self-hostable, with an MCP server for AI agents. No pricing, ever.

    Community Noveum
    feder-cr

    aihawk

    Anti detect browser and web browsing agent: an open-source MCP server for undetected browsing, AI web scraping and computer use agents. No captchas.

    Community feder-cr
    LeandroPG19

    MemoryIndustry

    Persistent memory MCP server for AI agents — Rust, 19 tools, knowledge graph, Hebbian learning, episodic memory, contradiction detection, prospective triggers, Bayesian calibration, zero-config Docker setup.

    Community LeandroPG19