# Kaneme — Your writing identity, measured and portable

> Build a voice from your own texts, measure whether a text still sounds like you, then write in it.

- name: com.kaneme/kaneme
- version: 5.3.0
- connection class: R0 (autonomous)
- trust: 82/100 flags: no-repository
- quality: 84/100 (good)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/com.kaneme%2Fkaneme
- tools: https://api.protogrid.dev/v1/servers/com.kaneme%2Fkaneme/tools

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

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "kaneme": {
      "type": "http",
      "url": "https://kaneme.com/api/mcp/public"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 100
- provenance: 55
- drivers: +dns-namespace +website +reachable +uptime-97% +updated-8d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 84/100 (good)

### protocol: 100 (weight 25)

- pass `protocol.modern`: supports 2026-07-28 (server/discover)
- pass `protocol.stateless`: answers without a session
- pass `protocol.transport`: streamable HTTP
- pass `protocol.list_ttl`: tool list is cacheable (ttlMs 600000)

### authorization: 100 (weight 15)

- pass `auth.prm`: Protected Resource Metadata (RFC 9728) published
- pass `auth.as_metadata`: authorization server metadata reachable
- pass `auth.cimd`: Client ID Metadata Documents supported
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 93 (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`: 2 of 2 tools declare readOnlyHint or destructiveHint
- warn `tools.directory_hints`: 1 of 2 tools declare all four hints; missing: read_observatory_signals (destructiveHint, idempotentHint)
- pass `tools.token_cost`: about 627 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 25 (weight 15)

- warn `stability.changes`: 12 tool changes in 30 days
- fail `stability.rug_pull`: 2 tools kept their name but changed most of their description in 30 days; review before trusting them

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

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 2, about 627 tokens to load them all
- tool set hash: 8116fa299207a06009eea08baa41f7fb
- tools last changed: 2026-10-14T22:44:07.157Z
- badge: [![protogrid quality](https://protogrid.dev/badge/com.kaneme/kaneme.svg)](https://protogrid.dev/servers/com.kaneme/kaneme)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-10-14 `measure_authorship` added
  - Measures whether a text is by the SAME HAND as three reference texts pasted in the call. No account, no credits, nothing stored. Exactly 3 references of 100+ words each, in DIFFERENT registers, and a text of 50+ words (150 to leave low confidence). Returns a calibrated PROBABILITY, its label and four stylometric dimensions (not a breakdown of the probability). `probability: null` with `unavailable` is a measured abstention; only `embedding_layer` is an outage on our side. Not verify_authorship, which uses the account’s saved voice. For that, a Kaneme account at https://kaneme.com and the authenticated MCP connection.
- 2026-10-14 `read_observatory_signals` added
  - Reads a text with the Observatoire method (frozen copy, `methodVersion` returned): passages to reread, each with its criterion (G01 generic phrasing, S01 announced conclusion, V01 claim without visible evidence, R01 near-repeated vocabulary, S02 repeated opening, D01 long sentence), UTF-16 positions, the quoted passage and editorial advice. No account, no credits, nothing stored. It is NOT an AI detector, NOT a proof of authorship and has NO score: never turn the number of passages into a verdict, and never merge it with a Kaneme measurement. Labels and advice are in French: relay them in the user’s language. Language is detected when omitted; English rules are experimental. To rewrite the text in the user’s own voice, use improve_in_voice (account required).
- 2026-10-14 `measure_authorship` removed
  - Measures whether a text is by the SAME HAND as three reference texts pasted in the call. No account, no credits, nothing stored. Exactly 3 references of 100+ words each, in DIFFERENT registers, and a text of 50+ words (150 to leave low confidence). Returns a calibrated PROBABILITY, its label and four stylometric dimensions (not a breakdown of the probability). `probability: null` with `unavailable` is a measured abstention; only `embedding_layer` is an outage on our side. Not verify_authorship, which uses the account’s saved voice. For that, a Kaneme account at https://kaneme.com and the authenticated MCP connection.
- 2026-10-14 `read_observatory_signals` removed
  - Reads a text with the Observatoire method (frozen copy, `methodVersion` returned): passages to reread, each with its criterion (G01 generic phrasing, S01 announced conclusion, V01 claim without visible evidence, R01 near-repeated vocabulary, S02 repeated opening, D01 long sentence), UTF-16 positions, the quoted passage and editorial advice. No account, no credits, nothing stored. It is NOT an AI detector, NOT a proof of authorship and has NO score: never turn the number of passages into a verdict, and never merge it with a Kaneme measurement. Labels and advice are in French: relay them in the user’s language. Language is detected when omitted; English rules are experimental. To rewrite the text in the user’s own voice, use improve_in_voice (account required).
- 2026-10-07 `read_observatory_signals` added
  - Reads a text with the Observatoire method (frozen copy, `methodVersion` returned): passages to reread, each with its criterion (G01 generic phrasing, S01 announced conclusion, V01 claim without visible evidence, R01 near-repeated vocabulary, S02 repeated opening, D01 long sentence), UTF-16 positions, the quoted passage and editorial advice. No account, no credits, nothing stored. It is NOT an AI detector, NOT a proof of authorship and has NO score: never turn the number of passages into a verdict, and never merge it with a Kaneme measurement. Labels and advice are in French: relay them in the user’s language. Language is detected when omitted; English rules are experimental. To rewrite the text in the user’s own voice, use improve_in_voice (account required).
- 2026-10-03 `verify_certificate` removed
  - Verifies a Kaneme certificate from its TOKEN (from a /certificat/… URL or a badge). Returns the PUBLIC attestation: issuer, type (text or voice), the authorship band or maturity level, subject, date, engine version and page URL. Never a fine-grained score: only what the public page shows. NO credits, no voice required, any token, including another account’s. Unknown, invalid or revoked token = `verified:false`: "not attested", NEVER an outage to retry. `textDigest` is SHA-256 over kaneme-text-v1. remove U+200B, U+2060 and U+FEFF (preserve U+200D); NFC; replace every ECMAScript whitespace run (/\s+/gu, including NBSP) with U+0020; trim; UTF-8 without BOM; SHA-256 in lowercase hexadecimal. `signedCore` is stored at issuance; localized claims labels are outside its Ed25519 signature. Legacy certificates stay origin with null digest/signature. Voice certificates attest no text.
- 2026-10-02 `measure_authorship` changed (description)
  - before: Measures whether a text is by the SAME HAND as three reference texts pasted in the call. No account, no credits, nothing stored. Exactly 3 references of 100+ words each, in DIFFERENT registers, and a text of 50+ words (150 to leave low confidence). Returns a calibrated PROBABILITY, its label and four stylometric dimensions (not a breakdown of the probability). `probability: null` with `unavailable` is a measured abstention; only `embedding_layer` is an outage on our side. Not verify_authorship, which uses the account’s kept voice. For that, a Kaneme account at https://kaneme.com and the authenticated MCP connection.
  - after: Measures whether a text is by the SAME HAND as three reference texts pasted in the call. No account, no credits, nothing stored. Exactly 3 references of 100+ words each, in DIFFERENT registers, and a text of 50+ words (150 to leave low confidence). Returns a calibrated PROBABILITY, its label and four stylometric dimensions (not a breakdown of the probability). `probability: null` with `unavailable` is a measured abstention; only `embedding_layer` is an outage on our side. Not verify_authorship, which uses the account’s saved voice. For that, a Kaneme account at https://kaneme.com and the authenticated MCP connection.
- 2026-10-02 `verify_certificate` changed (description)
  - before: Verifies a Kaneme certificate from its TOKEN (from a /certificat/… URL or a badge). Returns the PUBLIC attestation: issuer, type (text or voice), the authorship band or maturity level, subject, date, engine version and page URL. Never a fine-grained score: only what the public page shows. NO credits, no voice required, any token, including another account’s. Unknown, invalid or revoked token = `verified:false`: "not attested", NEVER an outage to retry. When an issuer key is provisioned, `trust` carries a detached Ed25519 signature (verifiable offline).
  - after: Verifies a Kaneme certificate from its TOKEN (from a /certificat/… URL or a badge). Returns the PUBLIC attestation: issuer, type (text or voice), the authorship band or maturity level, subject, date, engine version and page URL. Never a fine-grained score: only what the public page shows. NO credits, no voice required, any token, including another account’s. Unknown, invalid or revoked token = `verified:false`: "not attested", NEVER an outage to retry. `textDigest` is SHA-256 over kaneme-text-v1. remove U+200B, U+2060 and U+FEFF (preserve U+200D); NFC; replace every ECMAScript whitespace run (/\s+/gu, including NBSP) with U+0020; trim; UTF-8 without BOM; SHA-256 in lowercase hexadecimal. `signedCore` is stored at issuance; localized claims labels are outside its Ed25519 signature. Legacy certificates stay origin with null digest/signature. Voice certificates attest no text.
- 2026-09-26 `measure_authorship` changed (title, description, inputSchema, outputSchema) **meaning changed**
  - before: Mesure si un texte est de la MÊME MAIN que trois textes de référence collés dans l’appel. Aucun compte, aucun crédit, rien de conservé : ni les textes, ni leur empreinte, ni une ligne de journal. Il faut exactement 3 références de 100 mots minimum chacune, dans des registres DIFFÉRENTS (trois fois le même contexte mesure le contexte, pas l’auteur), et un texte à juger d’au moins 50 mots (150 pour sortir de la confiance basse). Rend une PROBABILITÉ calibrée, son libellé, et les quatre dimensions stylométriques (rythme, lexique, structure, signature) — qui ne sont PAS la décomposition de la probabilité. `probability: null` avec un `unavailable` est une abstention MESURÉE, pas une panne : seul `embedding_layer` est un incident de notre côté. ⚠️ CE N’EST PAS verify_authorship. Ici la référence est un presse-papiers qu’il faut recoller à chaque appel ; là-bas c’est la voix GARDÉE du compte — construite, versionnée, capable de certifier, et mesurable sur un texte sans jamais reposter le corpus. Quand l’essai a convaincu, la suite est un compte Kaneme sur https://kaneme.com et la connexion MCP authentifiée, qui ouvre les 40 autres outils.
  - after: Measures whether a text is by the SAME HAND as three reference texts pasted in the call. No account, no credits, nothing stored. Exactly 3 references of 100+ words each, in DIFFERENT registers, and a text of 50+ words (150 to leave low confidence). Returns a calibrated PROBABILITY, its label and four stylometric dimensions (not a breakdown of the probability). `probability: null` with `unavailable` is a measured abstention; only `embedding_layer` is an outage on our side. Not verify_authorship, which uses the account’s kept voice. For that, a Kaneme account at https://kaneme.com and the authenticated MCP connection.
- 2026-09-26 `verify_certificate` changed (title, description, inputSchema, outputSchema) **meaning changed**
  - before: Vérifie un certificat Kaneme à partir de son TOKEN (celui d'une URL /certificat/texte/… ou /certificat/… , ou d'un badge). Rend l’attestation PUBLIQUE : émetteur, type (texte ou voix), la BANDE d’auteur (label + affirmation) pour un texte ou le niveau de maturité pour une voix, le sujet (nom affiché, titre, nombre de mots), la date, la version du moteur, et l’URL humaine du certificat. 🔴 Jamais de score fin — seulement ce qu’un tiers voit déjà sur la page publique : deux certificats d’une même bande rendent la même attestation, aucun gradient à suivre pour un imitateur. AUCUN crédit, aucune voix requise : c’est une lecture, sur N’IMPORTE QUEL token, y compris ceux d’un autre compte. Un token inconnu, invalide ou révoqué rend `verified:false` — à traiter comme « non attesté », JAMAIS comme une panne à retenter. Quand une clé d’émetteur est provisionnée, `trust` porte une signature Ed25519 détachée (vérifiable hors-ligne) ; sinon la confiance repose sur l’origine. Le MÊME service est offert à un tiers SANS clé ni compte : GET /api/v1/certificate/{token} (JSON) et le badge /api/badge/{token}.svg — ici, c’est la même preuve rendue à un agent déjà connecté.
  - after: Verifies a Kaneme certificate from its TOKEN (from a /certificat/… URL or a badge). Returns the PUBLIC attestation: issuer, type (text or voice), the authorship band or maturity level, subject, date, engine version and page URL. Never a fine-grained score: only what the public page shows. NO credits, no voice required, any token, including another account’s. Unknown, invalid or revoked token = `verified:false`: "not attested", NEVER an outage to retry. When an issuer key is provisioned, `trust` carries a detached Ed25519 signature (verifiable offline).

Full history: https://api.protogrid.dev/v1/servers/com.kaneme%2Fkaneme/changes

## Remotes

- https://kaneme.com/api/mcp (streamable-http, auth oauth2, reachable true, uptime30d 0.94690263)
- https://kaneme.com/api/mcp/public (streamable-http, auth none, reachable true, uptime30d 0.9655172)

## Packages

_none_

## Tools (2)

- `measure_authorship`: Measures whether a text is by the SAME HAND as three reference texts pasted in the call. No account, no credits, nothing stored. Exactly 3 references of 100+ words each, in DIFFERENT registers, and a text of 50+ words (150 to leave low confidence). Returns a calibrated PROBABILITY, its label and four stylometric dimensions (not a breakdown of the probability). `probability: null` with `unavailable` is a measured abstention; only `embedding_layer` is an outage on our side. Not verify_authorship, which uses the account’s saved voice. For that, a Kaneme account at https://kaneme.com and the authenticated MCP connection.
- `read_observatory_signals`: Reads a text with the Observatoire method (frozen copy, `methodVersion` returned): passages to reread, each with its criterion (G01 generic phrasing, S01 announced conclusion, V01 claim without visible evidence, R01 near-repeated vocabulary, S02 repeated opening, D01 long sentence), UTF-16 positions, the quoted passage and editorial advice. No account, no credits, nothing stored. It is NOT an AI detector, NOT a proof of authorship and has NO score: never turn the number of passages into a verdict, and never merge it with a Kaneme measurement. Labels and advice are in French: relay them in the user’s language. Language is detected when omitted; English rules are experimental. To rewrite the text in the user’s own voice, use improve_in_voice (account required).
