Skip to main content

The API and MCP are open to every Kaneme account, including Starter. Each operation uses credits, exactly as in the app: one balance. The writing-pattern review (local stylometry) is free; a stamp costs up to 2 credits, and nothing when the engine abstains. Paid operations stop when available credits run out. A top-up reactivates them; in a personal space, the next monthly allowance also reactivates them. The API returns HTTP 402 when available credits are exhausted.

Nemi FR 1.1 (model voice-fr-base, calibration emb-frq-1.1); Nemi EN 1.1 (calibration emb-en-5.0).

Developers and agents

Develop with Kaneme

Connect an assistant through MCP, or integrate your product through the REST API.

Cost per action

Kaneme writes in your tool: no quota, 3 credits per text, for every format and channel.

Compact voice in your tool: your model writes, with 10 free portages per month for each account or Business seat, then 1 credit per call. One call = one portage.

10 credits and 10 free portages each month on Free and Credits accounts. Reset on your signup anniversary day, without rollover; the allowance is spent before purchased credits.

Grant a Kaneme account a Measure or Measure and write visa. The actor pays. The owner sees who, when, which action and which verdict, never the text, and can revoke access at any time. Only the owner publishes a certificate. A visa does not replace the OAuth voice:measure scope.

The surface, counted

REST operations
48
MCP tools
43
MCP tools without an account
2
MCP clients with a setup guide
11
Contract
OpenAPI · v5.4.0

Two ways to use it

Inside an assistant

Add the MCP server to ChatGPT, Claude, Grok, Cursor, or Notion.

MCP address

https://kaneme.com/api/mcp
MCP guide

Inside a product or process

Use the REST API with a key created in Connections.

First call

curl -H "Authorization: Bearer kaneme_…" https://kaneme.com/api/v1/me
API reference

Offline certificate verification

Contract 2.12: 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. This step can run locally without sending the text.

Test vector (straight apostrophe, no line break):

Bonjour à tous ! Rock & roll, l'été.
SHA-256: cd58fb5dcf1722b9f2520eddeebedca163883466388f2dbdf5e3b7fb61f08b99

Fetch /.well-known/kaneme-certificate-key from the trusted issuer. Select keys by trust.signature.keyId, including retired keys. Recursively sort signedCore object keys, preserve array order, serialize compact JSON (sorted-keys-json) exactly as ECMAScript JSON.stringify does — non-ASCII characters stay unescaped (Python: json.dumps(core, sort_keys=True, separators=(",", ":"), ensure_ascii=False)) —, encode UTF-8, decode the base64url signature and verify Ed25519 using publicKeyPem. Localized claims labels and the response envelope are outside the signature. Existing unsigned certificates stay trust.model=origin; legacy text digests are null. Voice certificates attest no text.

A stored signature attests that Kaneme measured this text on this date, with this result. It does not establish who wrote it. A certificate is an indication, never proof. Trust in the downloaded public key and current revocation status still requires the issuer.

For signed certificates, compare the text with signedCore.textDigest only after verifying the signature, issuer and expected token. Check that the envelope textDigest matches it; an unsigned envelope field is not authenticated by the signature.