# it.heera/agentimus (remote · heera.it)

heera.it via Agentimus: AI readiness, traffic, request log, search & index reports, by approval.

- Trust score: 77/100 (medium)
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-04

## Components

- remote · `heera.it`: 77/100 (this document), [markdown](https://verifymcp.io/servers/it-heera-agentimus/wp-json-agentimus-v1-mcp.md), [page](https://verifymcp.io/servers/it-heera-agentimus/wp-json-agentimus-v1-mcp)

## Channel facts

- Endpoint: `https://heera.it/wp-json/agentimus/v1/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.33.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-08-04.

- **Endpoint Security**: 94/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token.
  - HTTPS is enforced; there's no plaintext access path.
  - The HSTS (Strict-Transport-Security) header is present.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
  - The authorisation server offers only Dynamic Client Registration (RFC 7591), which MCP 2026-07-28 deprecated in favour of Client ID Metadata Documents.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 68/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 2167 tokens (~144/item across 15 items; 15 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 3/100
  - Stability observed for 1 of 30 days with no destabilising changes; credit accrues until the full window elapses.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
  - Structured output schemas are declared (100% of tools); any adoption earns full credit.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### Claude

```bash
claude mcp add --transport http it-heera-agentimus https://heera.it/wp-json/agentimus/v1/mcp
```

### Codex

```toml
[mcp_servers.it-heera-agentimus]
url = "https://heera.it/wp-json/agentimus/v1/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "it-heera-agentimus": {
      "type": "remote",
      "url": "https://heera.it/wp-json/agentimus/v1/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add it-heera-agentimus --url https://heera.it/wp-json/agentimus/v1/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  it-heera-agentimus:
    url: "https://heera.it/wp-json/agentimus/v1/mcp"
```

### Other

```json
{
  "mcpServers": {
    "it-heera-agentimus": {
      "type": "http",
      "url": "https://heera.it/wp-json/agentimus/v1/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-08-04 (score 77, 0)

- [security] Tool “agentimus-read-google-index” rewrote its description, which is the text the model reads
- [functional improvement] Stability: unverified → 0.03
- [functional] Schema quality: excellent → good
- [functional] Server version: v1.33.0 → v1.34.0-dev12

### 2026-08-03 (score 77)

First indexed and scored.

## MCP tools (15)

### `agentimus-read-readiness` (~108 tokens)

Get AI readiness & AEO/GEO score

Returns the site’s AI-visibility health: the blended 0–100 AEO/GEO score with its band (Findable, Readable, Trusted, Optimized, Cited pillars), the impact-ranked "do this next" action plan, AND the full list of readiness checks with their pass/warn/fail status and the fix for each. Use this to answer "how ready is my site to be found and cited by AI, and what should I fix first?".

Output parameters:

- `checks` (array)
- `score` (object)

### `agentimus-read-ai-visibility` (~84 tokens)

Get AI Visibility results

Returns the latest AI Visibility run: whether AI assistants mention and cite each tracked product, the overall visibility score and citation rate, per-product share-of-voice against competitors, and the trend across recent runs. Empty (hasData=false) until a run has completed. Read-only; it does not start a run (running one spends the site’s AI credits).

Output parameters:

- `hasData` (boolean)
- `lastRunAt` (string)
- `products` (array)
- `summary` (object)
- `trend` (array)

### `agentimus-read-ai-traffic` (~160 tokens)

Get AI referral traffic

Returns real visits this site received FROM AI assistants (ChatGPT, Perplexity, Gemini, etc.) over a day range: totals, the per-assistant leaderboard, the landing pages they sent readers to, a daily series, and a diagnostic of unrecognised referrers. Optionally filter to one assistant and/or a landing-path prefix.

Input parameters:

- `from` (string): Start date (YYYY-MM-DD). Defaults to the retention window.
- `path` (string): Narrow to a landing-path prefix, e.g. "/blog".
- `source` (string): Narrow to one assistant, by its exact label (see read-ai-traffic facets).
- `to` (string): End date (YYYY-MM-DD). Defaults to today.

Output parameters:

- `activeDays` (integer)
- `beacon` (boolean)
- `bySource` (array)
- `daily` (array)
- `enabled` (boolean)
- `filters` (object)
- `range` (object)
- `sourceCount` (integer)
- `topPages` (array)
- `total` (integer)
- `unknown` (object)

### `agentimus-read-request-log` (~256 tokens)

Get the AI request log

Returns individual requests AI crawlers and agents made to this site’s discovery endpoints (llms.txt, the .md twins, JSON-LD, sitemaps), newest first and cursor-paginated. Each row has the endpoint, the detected agent, its user-agent, the owning network, and a verdict (0=unchecked, 1=verified real engine, 2=spoofed impersonator). Filter by agent, endpoint, network, verdict, or a user-agent prefix.

Input parameters:

- `agent` (string): Exact detected agent name.
- `before` (integer): Pagination cursor: return rows with id below this (use the previous page’s "cursor").
- `endpoint` (string): Exact endpoint path.
- `from` (string): Start date (YYYY-MM-DD).
- `network` (string): Exact owning network (only populated when "identify every bot" is on).
- `per_page` (integer): Rows per page (the store clamps this).
- `to` (string): End date (YYYY-MM-DD).
- `ua` (string): User-agent prefix to match.
- `verdict` (integer): 0 = unchecked, 1 = verified real engine, 2 = spoofed impersonator.

Output parameters:

- `autoPrune` (boolean)
- `cursor` (integer|null)
- `hasMore` (boolean)
- `identifyOn` (boolean): Whether "identify every bot" (network attribution) is on.
- `maxRows` (integer)
- `perPage` (integer)
- `retentionDays` (integer)
- `rows` (array)
- `total` (integer)
- `verifyOn` (boolean): Whether Web Bot Auth signature verification is on.

### `agentimus-read-edge-traffic` (~142 tokens)

Get edge traffic from Cloudflare

Returns what Cloudflare saw from AI crawlers BEFORE this server did, when the owner has connected a Cloudflare zone: per-crawler totals (requests at the edge, served from cache, reached the server, blocked at the edge, bytes out), per-company rollups, and any conflicts between the edge's observed behaviour and the site's declared AI policy — e.g. the edge blocking a crawler the policy welcomes. The request log only sees what reached the server; this is the missing before-the-server half. Returns connected=false when no zone is connected.

Input parameters:

- `days` (integer): Window in days, 1-30. Default 7.

Output parameters:

- `companies` (array)
- `conflicts` (array)
- `connected` (boolean): False = no Cloudflare zone is connected; the data fields are then absent.
- `connectedAt` (integer)
- `crawlers` (array)
- `dashUrl` (string)
- `days` (integer)
- `hiddenConflicts` (array)
- `lastError` (string): The most recent poll failure, empty after a clean poll.
- `lastPollAt` (integer): Unix time of the newest numbers; 0 = never polled.
- `lastPurgeAt` (integer): Unix time of the last edge cache purge; 0 = never purged.
- `lastPurgeError` (string): The most recent purge failure (e.g. the token lacks the Cache Purge permission), empty after a clean purge. Separate from lastError so healthy numbers cannot hide it.
- `totals` (object)
- `zoneName` (string)

### `agentimus-read-search-visibility` (~137 tokens)

Get AI-search visibility from Bing

Returns how much of this site sits in Bing's index and how cleanly Bing's crawler gets in, when the owner has connected Bing Webmaster Tools. Bing's index is what ChatGPT search reads today (Microsoft Copilot too), so this is the closest measurable answer to "can AI search find this site": pages in the index (daily trend), pages crawled, crawl errors, robots.txt blocks as Bing sees them, plus conflicts between Bing's view and the site's declared policy. Returns connected=false when no key is connected.

Input parameters:

- `days` (integer): Window in days, 1-90. Default 30.

Output parameters:

- `conflicts` (array)
- `connected` (boolean): False = no Bing key is connected; the data fields are then absent.
- `connectedAt` (integer)
- `days` (integer)
- `feeds` (array)
- `feedsAt` (integer): Unix time the sitemap snapshot was fetched; 0 = not fetched yet — an empty feeds list then means "unknown", never "none registered".
- `hasMsvalidate` (boolean): Whether the site prints the msvalidate verification tag.
- `indexnow` (object)
- `lastError` (string): The most recent poll failure, empty after a clean poll.
- `lastPollAt` (integer): Unix time of the newest numbers; 0 = never polled.
- `lastQueryError` (string): The most recent query-stats poll failure, empty after a clean run. Separate from lastError so healthy crawl numbers cannot hide it.
- `siteUrl` (string): The site as Bing Webmaster Tools stores it.
- `totals` (object)
- `trend` (array)

### `agentimus-read-google-index` (~233 tokens)

Get Google index status for this site

Returns whether Google's index holds this site's pages, when the owner has connected Google Search Console. Google's index is what AI Overviews, AI Mode and Gemini grounding read — the Google counterpart of "Bing's index is what ChatGPT search reads". Three tiers share Google's 2,000-inspections/day budget (there is no bulk index report): a WATCHLIST (homepage, busiest pages, newest posts — every answer in rows) checked daily; PROMOTED PROBLEMS — pages any check found unhealthy join the daily check (stalest first, capped at watched.promotedDaily) until they heal; and a WHOLE-SITE ROTATION walking every published URL in daily slices — healthy pages become the site counts, every problem (watched or not) appears in site.problems, and a page that just healed announces in site.healed for about two days before going quiet. On sites small enough the rotation covers everything every day; site.cycleDays states the honest cadence. Presence only, no traffic (read-search-performance has the traffic). Returns connected=false with empty rows when no key is connected.

Output parameters:

- `checkedAt` (integer): Unix time of the newest sweep; 0 = never checked.
- `connected` (boolean): False = Google Search Console is not connected; rows is then empty.
- `counts` (object)
- `lastError` (string): The most recent sweep failure, empty after a clean sweep.
- `pending` (integer): Pages of the current sweep still waiting — the sweep runs in short budgeted chunks so no web request runs long. 0 = the last sweep finished; rows not yet reached carry their previous answers.
- `property` (string): The Search Console property the answers come from.
- `quotaHit` (boolean): True when Google's daily inspection budget ran out mid-sweep — unreached rows keep their last good answers (see each row's inspectedAt).
- `rows` (array)
- `site` (object)
- `sitemaps` (object)
- `watched` (object)

### `agentimus-read-search-performance` (~190 tokens)

Get classic-search performance

Returns what classic search actually sent this site over the reported window: total times shown, visits, click rate and impression-weighted average rank, plus the top searches people used and the top pages they landed on. Numbers are the engine's own — Google Search Console and/or Bing Webmaster Tools, whichever the owner connected — never estimated, and never blended (the two count different searchers). Use it to answer "how is this site doing in search?". Returns source="" when no engine has reported yet. When source="bing", totals and topPages come from two separate Bing reports counted differently — they never quite reconcile, and one page can show more clicks than totals.clicks. Neither is an error: state the split rather than reconciling the numbers.

Input parameters:

- `source` (string): Which engine to read: "google" or "bing". Omit for the richer one that has data.

Output parameters:

- `counts` (object)
- `daily` (array): Clicks and impressions per day, oldest first — Google only (Bing's API has no daily split; empty there). History accumulates locally beyond Google's own window; the payload ships the most recent 112…
- `discover` (object)
- `range` (object)
- `source` (string): The engine these numbers came from; empty when none has data yet.
- `sources` (object)
- `topPages` (array)
- `topQueries` (array)
- `totals` (object)
- `updatedAt` (integer): Unix time the daily series last refreshed successfully; 0 = never. Older than a few days = the trend is last-good data, not current — say so.
- `weekly` (object)

### `agentimus-read-search-opportunities` (~176 tokens)

Get search pages worth improving

Returns the pages that already rank in classic search but under-earn — the worklist behind the Search Opportunities screen. Two groups: "almostThere" (ranking 8–20, one improvement from page one) and "seenNotClicked" (already on page one, but a click rate well under THIS site's own page-one median — never an industry benchmark). Each page carries its searches, its totals, and whether it qualified on a single search or on the page's combined demand. Pair it with write-description / update-content to act on what it finds. Returns state "not_connected", "collecting" or "too_thin" when no honest verdict is possible.

Input parameters:

- `source` (string): Which engine to read: "google" or "bing". Omit for the richer one that has data.

Output parameters:

- `almostThere` (array)
- `counts` (object)
- `ctrBar` (number|null): The click-rate threshold actually applied to "seenNotClicked" (percentage): a page must fall BELOW this, not merely below medianCtr. Quote this, never medianCtr, when stating what "not clicked enough…
- `medianCtr` (number|null): This site's own page-one median click rate (percentage) — the bar "seenNotClicked" is measured against. Null when no honest bar can be set, in which case that group stays empty and medianReason says…
- `medianNeeds` (integer): How many it takes before a bar is computed at all.
- `medianReason` (string): Why there is no bar, when medianCtr is null: "thin" = too few page-one results carry enough views to measure (says nothing about clicking); "unclicked" = enough exist and the middle one earned no cli…
- `medianRows` (integer): How many page-one results carried enough views to measure a click rate.
- `noise` (object)
- `seenNotClicked` (array)
- `source` (string): The engine these numbers came from; empty when none has data yet.
- `sources` (object)
- `state` (string): ready | not_connected | collecting | too_thin | clear.

### `agentimus-identify-bot` (~113 tokens)

Identify a bot by IP

Given an IP address, resolves who it really belongs to via forward-confirmed reverse DNS: the PTR hostname, the owning network/organisation, whether it maps to a known AI engine, and a verdict (0 = no engine match, 1 = forward-confirmed engine, 2 = forged engine hostname — an impersonator). Use it to answer "is this crawler that claims to be GPTBot actually OpenAI?".

Input parameters:

- `ip` (string, required): The IPv4 or IPv6 address to check.

Output parameters:

- `engine` (string)
- `host` (string)
- `ip` (string)
- `network` (string)
- `slow` (boolean)
- `verdict` (integer): 0 = no engine / no PTR, 1 = forward-confirmed engine, 2 = forged engine hostname.

### `agentimus-check-page` (~116 tokens)

Check a page’s AI readability

Checks ONE post/page’s readability for AI: grades how easily an AI can read, section and cite it — word count, an opening summary, concrete figures or cited sources, heading structure, quotable passage length, link density, image alt text, and freshness. Returns a pass/warn/fail row per check plus a tally. Use it when asked to check a page’s readability, or to tell an author exactly what to improve on a specific page.

Input parameters:

- `post_id` (integer, required): The post/page ID to grade.

Output parameters:

- `checks` (array)
- `summary` (object)

### `agentimus-preview-schema` (~97 tokens)

Preview a page’s JSON-LD

Returns the JSON-LD @graph Agentimus would emit — for a specific post (pass post_id) or the site-wide identity graph (omit post_id / pass 0). Includes both the structured object and a pretty-printed JSON string. Read-only preview: it reflects the current draft, and changes nothing.

Input parameters:

- `post_id` (integer): Post/page ID to preview; omit or 0 for the site-wide identity graph.

Output parameters:

- `graph` (object|null): JSON-LD document { "@context", "@graph": [ …nodes ] }, or null when there is nothing to emit.
- `json` (string)

### `agentimus-preview-markdown` (~74 tokens)

Preview a page’s Markdown twin

Returns the plain-Markdown version of a post — the ".md twin" Agentimus serves to AI clients that prefer clean text over rendered HTML. Read-only preview of a single post; the site-wide index lives at /index.md.

Input parameters:

- `post_id` (integer, required): The post/page ID to render as Markdown.

Output parameters:

- `markdown` (string)

### `agentimus-scan-exposed-files` (~103 tokens)

List exposed-file risks & debug posture

Returns the list of sensitive paths the exposed-files self-check probes for (config backups, .env, VCS metadata, DB dumps, keys) plus the site’s WordPress debug posture and detected environment. NOTE: this SUPPLIES what to check and flags the debug config — it does not fetch the URLs. The live probe must run same-origin from the admin browser so a server loopback cannot mask a leak the real public URL would reveal.

Output parameters:

- `debugConfig` (object)
- `environment` (string)
- `probePaths` (array)

### `agentimus-suggest-internal-links` (~138 tokens)

Suggest internal links for a page

Suggests which of the site’s OWN posts this post should link to, from local signals only (shared topics, categories/tags, and the candidate’s subject appearing in the text) — no AI call is spent. Each suggestion carries the target post, the exact phrase in this post’s text to link (empty when none exists — append a "See also" line instead), and a one-line reason. READ-ONLY: it suggests; to actually insert a link, edit the post through the governed update tool like any other content change.

Input parameters:

- `post_id` (integer, required): The post/page ID to suggest links for.

Output parameters:

- `suggestions` (array)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/it-heera-agentimus/wp-json-agentimus-v1-mcp#diagnostics

## Score history

- 2026-08-04: 77
- 2026-08-03: 77

## Links

- Remote endpoint: https://heera.it/wp-json/agentimus/v1/mcp
- Repository: https://github.com/heera/agentimus
- Website: https://heera.it/
- Changelog RSS feed: https://verifymcp.io/servers/it-heera-agentimus/wp-json-agentimus-v1-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/it-heera-agentimus/wp-json-agentimus-v1-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/it-heera-agentimus/wp-json-agentimus-v1-mcp
