# io.github.AmauryDvl/serpmantics (remote · app.serpmantics.com)

French-first SEO: semantic content guides, scoring, E-E-A-T audits for Google, ChatGPT & Claude.

- Trust score: 68/100 (medium)
- Change this week: +4
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-08-03

## Components

- remote · `app.serpmantics.com`: 68/100 (this document), [markdown](https://verifymcp.io/servers/amaurydvl-serpmantics/api-mcp.md), [page](https://verifymcp.io/servers/amaurydvl-serpmantics/api-mcp)

## Channel facts

- Endpoint: `https://app.serpmantics.com/api/mcp`
- Transports: `streamable-http`
- Auth: `required`
- Version: `0.1.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-03.

- **Endpoint Security**: 63/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation not fully verified: no authorisation is required to call this server, and 28 tool(s) never declared a destructiveHint. The MCP spec treats an absent hint as destructive by default, so we cannot call this surface safe.
  - 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.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 70/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 3011 tokens (~107/item across 28 items; 28 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 27/100
  - Stability observed for 8 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.
- **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 amaurydvl-serpmantics https://app.serpmantics.com/api/mcp
```

### Codex

```toml
[mcp_servers.amaurydvl-serpmantics]
url = "https://app.serpmantics.com/api/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "amaurydvl-serpmantics": {
      "type": "remote",
      "url": "https://app.serpmantics.com/api/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add amaurydvl-serpmantics --url https://app.serpmantics.com/api/mcp --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  amaurydvl-serpmantics:
    url: "https://app.serpmantics.com/api/mcp"
```

### Other

```json
{
  "mcpServers": {
    "amaurydvl-serpmantics": {
      "type": "http",
      "url": "https://app.serpmantics.com/api/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-02 (score 68, +1)

No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-31 (score 67, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-30 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-28 (score 65, +1)

No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

### 2026-07-27 (score 64, +1)

- [functional] We updated how we score, so this day's move reflects our rubric, not a change to the server

### 2026-07-26 (score 63)

First indexed and scored.

## MCP tools (28)

### `get_aissistant_tokens` (~126 tokens)

Get the current user's available AI tokens

Returns the number of AI tokens available to the authenticated user.

These tokens fund EVERY AI feature in SERPmantics — meta, outline,
intent, internal-links, EEAT, EEAT competitors, score, AND the
AISSistant prompts. The endpoint lives under /aissistant for
historical reasons but the balance is shared across all AI features.

Do NOT confuse with guide-creation credits (see /api/v1/credits).
For a combined view (credits + tokens) prefer /api/v1/credits.

### `get_credits` (~176 tokens)

Get user balance (guide credits + AI tokens)

Returns the authenticated user's full balance.

SERPmantics has TWO distinct currencies:

\- **credits** (`credits`): how many NEW GUIDES the user can still create.
  Consumed once per guide creation. `"unlimited"` if the user's plan
  grants unlimited guide creation (`hasUnlimitedCredits: true`).

\- **AI tokens** (`tokens`): pool consumed by every AI feature (meta,
  outline, intent, internal-links, EEAT, EEAT competitors, score…).
  Each feature has its own cost — call `/api/v1/tokens-usage` to get
  the per-feature pricing.

Do not confuse the two: running out of `credits` blocks new guides;
running out of `tokens` blocks AI features inside existing guides.

### `get_eeat_competitors` (~96 tokens)

Get E-E-A-T analysis results for a guide's competitors

Retrieves the E-E-A-T analysis results for the top competitors of a guide.
Poll this endpoint until `pending` is `0` to know when the full analysis is complete.
Individual competitor results are available as soon as their `status` is `done`.

Input parameters:

- `guideId` (string, required): ID of the guide whose competitors should be returned

### `create_eeat_competitors` (~196 tokens)

Start an E-E-A-T analysis on a guide's top SERP competitors

Starts an asynchronous E-E-A-T analysis on the top competitors of the guide's SERP.
Each competitor is fetched and scored individually. Use GET /api/v1/eeat-competitors to
poll for results until `pending` reaches `0`.

\**Token cost:** This endpoint charges `eeatCompetitorsTokensCostPerCompetitor`
(see /api/v1/tokens-usage) per competitor analyzed, up to 10 competitors.
Example: 10 competitors × 5 tokens = 50 tokens. 6 competitors × 5 tokens = 30 tokens.
The number of competitors corresponds to the deduplicated URLs in the guide's top-10 SERP
results (available via GET /api/v1/guide).

Input parameters:

- `guideId` (string, required): ID of the guide whose competitors should be analyzed

### `get_eeat` (~162 tokens)

Get E-E-A-T analysis results

Retrieves the result of an E-E-A-T analysis. Either pass `eeatId` (returned by POST /api/v1/eeat)
to fetch a specific analysis, or pass `guideId` to fetch the latest analysis for that guide.

Poll this endpoint until `status` is `done` (results available) or `failed`.

Input parameters:

- `eeatId` (string): ID of a specific analysis (returned by POST /api/v1/eeat). Either `eeatId` or `guideId` must be provided.
- `guideId` (string): ID of the guide whose latest analysis should be returned. Either `eeatId` or `guideId` must be provided.

### `create_eeat` (~146 tokens)

Start an E-E-A-T analysis on a guide content

Starts an asynchronous E-E-A-T (Experience, Expertise, Authoritativeness, Trustworthiness) analysis
on the HTML content provided for a given guide. The analysis runs in the background — use
GET /api/v1/eeat to poll for results until `status` is `done` (or `failed`).

\**Note:** This endpoint uses tokens (check /api/v1/tokens-usage for the cost, might vary).

Input parameters:

- `guideId` (string, required): ID of the guide to analyze
- `html_content` (string, required): HTML of the article to analyze (without `<mark>` tags)

### `get_intent` (~39 tokens)

Get search intent analysis for a guide

Retrieves existing intent analysis results for a guide

Input parameters:

- `guideId` (string, required): ID of the guide

### `create_intent` (~91 tokens)

Generate search intent analysis for a guide

Analyzes search intent for a guide and optionally analyzes provided content against that intent. 
\**Note:** This endpoint uses tokens (check /api/v1/tokens-usage for the cost, might vary).

Input parameters:

- `content` (string): Optional content to analyze against the intent (only after intent analysis was created)
- `guideId` (string, required): ID of the guide

### `delete_intent` (~40 tokens)

Delete generated intent analysis for a guide

Removes previously generated intent analysis for the given guide.

Input parameters:

- `guideId` (string, required): ID of the guide

### `get_internal_links` (~39 tokens)

Get internal linking suggestions for a guide

Retrieves existing internal linking suggestions for a guide

Input parameters:

- `guideId` (string, required): ID of the guide

### `create_internal_links` (~68 tokens)

Generate internal linking suggestions for a guide

Analyzes a guide and generates internal linking suggestions based on content analysis. 
\**Note:** This endpoint uses tokens (check /api/v1/tokens-usage for the cost, might vary).

Input parameters:

- `guideId` (string, required): ID of the guide

### `delete_internal_links` (~42 tokens)

Delete generated internal-links suggestions for a guide

Removes previously generated internal-links suggestions for the given guide.

Input parameters:

- `guideId` (string, required): ID of the guide

### `get_meta` (~42 tokens)

Get generated meta titles and descriptions for a guide

Retrieves generated SEO meta titles and descriptions for a guide

Input parameters:

- `guideId` (string, required): ID of the guide

### `create_meta` (~67 tokens)

Generate SEO meta titles and descriptions for a guide

Generates optimized meta titles and descriptions based on guide content analysis.
\**Note:** This endpoint uses tokens (check /api/v1/tokens-usage for the cost, might vary).

Input parameters:

- `guideId` (string, required): ID of the guide

### `delete_meta` (~40 tokens)

Delete generated meta for a guide

Removes previously generated meta titles/descriptions for the given guide.

Input parameters:

- `guideId` (string, required): ID of the guide

### `get_outline` (~43 tokens)

Get generated page structure for a guide

Retrieves the generated page structure (flat heading list) for a guide.

Input parameters:

- `guideId` (string, required): ID of the guide

### `create_outline` (~65 tokens)

Generate content outline for a guide

Generates a content outline based on SERP analysis for a guide.
\**Note:** This endpoint uses tokens (check /api/v1/tokens-usage for the cost, might vary).

Input parameters:

- `guideId` (string, required): ID of the guide

### `delete_outline` (~38 tokens)

Delete generated outline for a guide

Removes previously generated outline data for the given guide.

Input parameters:

- `guideId` (string, required): ID of the guide

### `get_tokens_usage` (~99 tokens)

Get API token usage costs for different endpoints

Returns the number of tokens required for each API endpoint operation.

Note: `eeatCompetitorsTokensCostPerCompetitor` is a **per-competitor** cost.
The total cost of POST /api/v1/eeat-competitors equals this value × the number of
competitors analyzed (deduplicated URLs in the guide's top-10 SERP, capped at 10).

### `get_usage` (~49 tokens)

Get current API usage and quota status

Returns the current period's API guide usage, quota limit, remaining count and the renewal date. Aligned on the Stripe subscription billing cycle. Does not consume credits.

### `get_credit_ledger` (~176 tokens)

Grand-livre crédits d'un compte (admin)

Timeline complète et immuable des mouvements de crédits d'un utilisateur (octrois, consommations, refunds, resets, ajustements admin), avec libellés FR en clair, delta signé, solde après, source, auteur et référence. Inclut le solde reconstruit à une date arbitraire (paramètre `at`) et un contrôle de cohérence (solde == dernier balanceAfter == somme des deltas). Réservé aux administrateurs. Lecture seule.

Input parameters:

- `at` (string): Date ISO pour reconstruire le solde à cet instant (point-in-time).
- `limit` (number): Nombre maximum de lignes (défaut 200, max 1000).
- `userId` (string, required): Identifiant Mongo de l'utilisateur.

### `get_guide` (~38 tokens)

Get data for a specific guide

Retrieves details of a specific guide

Input parameters:

- `id` (string, required): The ID of the guide to retrieve

### `update_guide` (~172 tokens)

Update a guide

Updates editable fields of a specific guide (group, status, share state, linked URL, meta, hidden expressions). Only owners may update.

Input parameters:

- `group` (string): Group/folder the guide belongs to (triggers cannibalisation analysis on previous and new group)
- `hiddenExpressions` (array): Expressions to hide from the optimisation suggestions
- `id` (string, required): The ID of the guide to update
- `linkedUrl` (string): Public URL where the guide content is published (validated as URL)
- `meta` (object): SEO meta override for the guide
- `shareState` (string): Sharing mode. Plan must allow shared-read or shared-edit, otherwise 403 is returned.
- `status` (string): Editorial status of the guide. Empty string clears the status.

### `delete_guide` (~32 tokens)

Delete a guide

Deletes a specific guide

Input parameters:

- `id` (string, required): The ID of the guide to delete

### `get_guides` (~43 tokens)

List user's guides

Returns a list of guides for the authenticated user

Input parameters:

- `page`: Page number for pagination
- `pageSize`: Number of guides per page

### `create_guides` (~790 tokens)

Create new guides

Create one or more new guides based on provided queries.
Each guide targets exactly ONE engine and ONE analysis mode, chosen with the optional `source` field (default `google`).

How to request each guide type:
1\. Google SERP guide (1 credit per guide): omit `source`, or pass `source: "google"`.
   Example payload: {"queries": ["best crm"], "lang": "en-us"}
1bis. Google AI Overview guide (1 credit per guide). Two modes, like AI engines:
   \`source: "google_ai_overview"` builds the guide from the TEXT of Google's AI answers
   (AI Overview, completed with AI Mode answers) ; `source: "google_ai_overview_citations"`
   builds it from the content of the web SOURCES those answers cite (recommended for GEO).
   Same language/country parameters as a Google SERP guide, 1 credit per guide in both modes.
   Example payload: {"queries": ["best crm"], "lang": "en-us", "source": "google_ai_overview_citations"}
2\. LLM ANSWER guide (4 credits per guide): pass the engine name alone, e.g. `source: "chatgpt"`.
   The guide is built from the answer text the AI generates for the query.
   Example payload: {"queries": ["best crm"], "lang": "en-us", "source": "chatgpt"}
3\. LLM CITATIONS guide (4 credits per guide) [RECOMMENDED AI mode]: pass the engine name with the `_citations` suffix, e.g. `source: "chatgpt_citations"`.
   The guide is built from the content of the web pages the AI cites in its answer.
   Example payload: {"queries": ["best crm"], "lang": "en-us", "source": "chatgpt_citations"}

Which AI mode to pick? For GEO (getting a page visible in AI answers), prefer `<engine>_citations`:
AI engines send traffic by CITING pages as sources, so the winning move is to look like the pages they cite.
The answer-text mode (`<engine>` alone) is mostly useful to analyze how the AI phrases its own answer.
When in doubt, pick `<engine>_citations`.

The same two modes exist for every AI engine (chatgpt, perplexity, claude, gemini, grok, mistral, deepseek).
To optimize the…

Input parameters:

- `lang` (string, required): Language code for the guides
- `queries` (array, required): Array of queries to create guides for
- `source` (string): Target engine AND analysis mode the guide optimizes for. One guide = one source. `google` analyzes the Google SERP (1 credit per guide). Google's AI answers have the same two modes as AI engines : `g…

### `delete_guides` (~19 tokens)

Delete multiple guides

Deletes multiple guides at once

### `create_score` (~77 tokens)

Analyze content optimization score

Analyzes the optimization score of the provided content for a specific guide

Input parameters:

- `content` (string, required): Content to analyze
- `guideId` (string, required): ID of the guide to analyze
- `saveToGuide` (boolean): Whether to save the content and the analysis score back to the guide (default: true)

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/amaurydvl-serpmantics/api-mcp#diagnostics

## Score history

- 2026-08-03: 68
- 2026-08-02: 68
- 2026-08-01: 67
- 2026-07-31: 67
- 2026-07-30: 66
- 2026-07-29: 65
- 2026-07-28: 65
- 2026-07-27: 64
- 2026-07-26: 63

## Links

- Remote endpoint: https://app.serpmantics.com/api/mcp
- Authorisation metadata: https://app.serpmantics.com/.well-known/oauth-protected-resource/api/mcp
- Website: https://app.serpmantics.com/landing/mcp
- Changelog RSS feed: https://verifymcp.io/servers/amaurydvl-serpmantics/api-mcp/changelog.xml
- Changelog JSON feed: https://verifymcp.io/servers/amaurydvl-serpmantics/api-mcp/changelog.json
- HTML version of this page: https://verifymcp.io/servers/amaurydvl-serpmantics/api-mcp
