# RNCP / RS — certifications professionnelles (France compétences)

> French RNCP/RS certification registers: search, sheets, blocs, validity, SIRET habilitation.

- name: io.github.ALDEBERTArnaud/mcp-rncp
- version: 0.1.4
- connection class: R0 (autonomous)
- trust: 93/100
- quality: 96/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.ALDEBERTArnaud%2Fmcp-rncp
- tools: https://api.protogrid.dev/v1/servers/io.github.ALDEBERTArnaud%2Fmcp-rncp/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "mcp-rncp": {
      "type": "http",
      "url": "https://mcp-rncp.com/mcp"
    }
  }
}
```


## Trust

- hygiene: 100
- liveness: 98
- freshness: 85
- provenance: 90
- drivers: +repository +namespace-matches-repo +website +reachable +uptime-96% ~updated-61d-ago
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 96/100 (strong)

### protocol: 88 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- warn `protocol.list_ttl`: tools/list declares ttlMs 0, so clients re-fetch it on every use

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 9 of 9 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 1,893 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: 100 (weight 15)

- pass `deps.known_vulns`: no known advisory in 1 resolved packages
- n/a `deps.mcp_sdk_version`: the official MCP SDK is not in the dependency graph
- pass `deps.resolvable`: mcp-rncp@0.1.4 resolved: 1 packages

- tools: 9, about 1,893 tokens to load them all
- tool set hash: 91fa81be17924c7ede2185231ce1cb0d
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.ALDEBERTArnaud/mcp-rncp.svg)](https://protogrid.dev/servers/io.github.ALDEBERTArnaud/mcp-rncp)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Dependencies

- npm mcp-rncp@0.1.4: resolved, 0 dependencies

Dependency graphs from deps.dev; advisories from OSV.dev, including the GitHub Advisory Database and the PyPI Advisory Database; all CC BY 4.0.

## Remotes

- https://mcp-rncp.com/mcp (streamable-http, auth none, reachable true, uptime30d 0.95535713)

## Packages

- npm mcp-rncp@0.1.4

## Tools (9)

- `changes_since`: Certifications created, updated, deactivated, reactivated or removed since a date (history starts at the first ingestion run). Filter by change type, register or NSF code. Example (FR): « Quelles fiches informatique (NSF 326) ont changé depuis le 1er juillet ? »
- `check_habilitation`: Is a given SIRET (or SIREN) habilitated for a certification, and for which role: 'former' (train), 'evaluer' (organise assessment) or both? Also detects when the SIRET is the certifier itself. Habilitation is effective only if the certification is active AND the partner state is 'Actif'. Example (FR): « Le SIRET 80875076400025 est-il habilité sur le RNCP 35419 ? »
- `check_validity`: Is this certification currently registered (active) and until when? Returns status, expiry date, remaining days, delivery deadline, replacement certification(s) and an estimated CPF eligibility (a registered active certification is eligible in principle; the training organism must still be habilitated and referenced). Example (FR): « Le RNCP 35419 est-il encore actif ? Jusqu'à quand ? »
- `compare_certifications`: Side-by-side comparison of two certifications: level, status, certifiers, NSF/ROME overlap, number of blocs and lexical overlap of blocs (Jaccard on skill terms) and, for each bloc of A, the closest bloc of B (overlap coefficient). Example (FR): « Compare le RNCP 36490 et le RNCP 37873. »
- `get_certification`: Full structured sheet of one RNCP or RS certification: title, level, status and expiry, certifier(s), activities, attested skills, NSF/ROME/Formacode codes, access routes, legal texts, replacements, statistics, official URL. Long texts are truncated to 4000 chars unless full=true. Example (FR): « Donne-moi la fiche RNCP 35419 et ses compétences attestées. »
- `get_data_status`: Source dataset date, ingestion run, counts (total/active/RNCP/RS/blocs/partners) and age of the data in days. Call this to tell the user how fresh the answers are. Example (FR): « De quand datent les données RNCP ? »
- `list_blocs`: Blocs de compétences of an RNCP certification (code RNCPxxxxxBCyy, title, skills, assessment methods), in the order and wording expected by EDOF / Mon Compte Formation forms. RS certifications have no blocs. Example (FR): « Liste les blocs de compétences du RNCP 37674 à renseigner dans EDOF. »
- `list_partenaires`: Training organisms habilitated on a certification (name, SIRET, role former/evaluer/both, state, dates). Paginated; filter by SIRET/SIREN prefix. Example (FR): « Quels organismes sont habilités sur le RNCP 37674 ? »
- `search_certifications`: Full-text search (BM25 + French synonyms) over the French national registers of professional certifications: RNCP (diplomas, titles, CQP) and RS (specific register: skills certificates, habilitations). Filter by register, level (3-8), NSF or ROME code. Returns ranked matches with status and expiry date; use get_certification for details. Example (FR): « Quelles certifications de niveau 6 en cybersécurité sont actives ? »
