Pro
Pour les makers qui livrent à de vrais clients.
€29 / mois
Démarrer Pro- 250 licences actives
- Produits illimités
- Webhook events
- Support par e-mail
Licensing pour apps, CLI et plugins · compatible MCP
Clés de licence pour apps desktop, CLI, extensions IDE et plugins. API REST documentée OpenAPI 3.1. Votre agent IA (Claude Code, Cursor, ChatGPT) s'occupe du câblage. SDK TypeScript open-source et serveur MCP fournis. Alternative à Keygen, Cryptlex ou Lemon Squeezy, pensée pour les indie devs.
100 licences gratuites · Sans carte bancaire
import { createClient, getFingerprint } from '@paperkeyhq/sdk';
const paperkey = createClient({ apiKey: process.env.PAPERKEY_PK! });
const fp = await getFingerprint();
const result = await paperkey.validate(licenseKey, fp.fingerprint);
if (!result.valid) throw new Error(result.error);curl https://api.paperkey.dev/v1/licenses/validate \
-H "Authorization: Bearer $PAPERKEY_PK" \
-H "Content-Type: application/json" \
-d '{
"license_key": "K7WX9-M3NP4-H8TRC-R2",
"fingerprint": "paperkey_fp_v1_abc123..."
}'import os, requests
resp = requests.post(
"https://api.paperkey.dev/v1/licenses/validate",
headers={"Authorization": f"Bearer {os.environ['PAPERKEY_PK']}"},
json={"license_key": license_key, "fingerprint": fp},
)
resp.raise_for_status()
result = resp.json()
if not result["valid"]:
raise RuntimeError(result["error"])body, _ := json.Marshal(map[string]string{
"license_key": licenseKey,
"fingerprint": fp,
})
req, _ := http.NewRequest("POST",
"https://api.paperkey.dev/v1/licenses/validate",
bytes.NewBuffer(body))
req.Header.Set("Authorization", "Bearer "+os.Getenv("PAPERKEY_PK"))
req.Header.Set("Content-Type", "application/json")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()Dans le dashboard
Chaque license, chaque activation, chaque livraison de webhook au même endroit. Recherche par clé, par client, par statut. Les agents IA voient la même chose via le serveur MCP.
Pourquoi Paperkey
L'une prend un long prompt et beaucoup de chance. L'autre prend un paquet.
Vibecoder un Paperkey-like
Si l'agent s'en sort.
Avec Paperkey
Fait.
Serveur MCP
Branchez @paperkeyhq/mcp dans votre client IA. Demandez, listez, auditez, révoquez en français, depuis n'importe quel chat. Le protocole est ouvert, le SDK vous appartient.
you liste les licences avec plus de 5 activations cette semaine
claude 3 licences trouvées avec plus de 5 activations cette semaine :
Voulez-vous que j'en révoque certaines, ou que j'envoie un e-mail d'avertissement d'abord ?
Conçu pour durer. Prévisible, économique, extensible.
3 endpoints, 1 SDK. Intégrez-le et oubliez les serveurs de licence, les secrets et les rotations.
Identifiants stables après réinstallations et mises à jour. Mode CI pour les pipelines de build. Résistant aux altérations par défaut.
Free tier de 100 licences. Tarifs prévisibles. Zéro appel commercial, zéro cycle enterprise.
TypeScript, auditable, sous licence MIT. Le contrat de confiance, c'est le code source. Pas une promesse marketing.
Limiteurs par IP et par licence prêts à l'emploi. Plus jamais de réveil avec un brute-force sur votre endpoint d'activation.
Branchez @paperkeyhq/mcp dans Claude Desktop, Cursor ou Continue. Pilotez les licences, auditez les activations, révoquez les abus. En français.
Headers
Body
{
"id": "evt_4b8c9a2f…",
"event": "license.created",
"createdAt": "2026-04-25T12:34:56Z",
"data": {
"id": "clx7w8…",
"key": "K7WX9-M3NP4-H8TRC-R2",
"email": "customer@acme.io",
"maxActivations": 3
}
} Webhooks signés de bout en bout
Six events, un HMAC. Vérification en trois lignes de SDK. Auto-pause après 10 échecs consécutifs, pour qu'un endpoint en panne ne noie pas votre inbox.
license.created/revoked/reinstated/expired activation.created/removed delivery Installer le serveur MCP dans Claude Desktop et lancer la première action.
I want to drive Paperkey (a software-licensing API) from Claude Desktop using MCP.
Read the full integration spec first: https://paperkey.dev/llms-full.txt
Then:
1. Add this server to my claude_desktop_config.json (under mcpServers):
{
"paperkey": {
"command": "npx",
"args": ["-y", "@paperkeyhq/mcp"],
"env": { "PAPERKEY_API_TOKEN": "<paste-my-dashboard-jwt>" }
}
}
2. Tell me how to grab my dashboard JWT from app.paperkey.dev (Settings → AI integrations).
3. Tell me to fully restart Claude Desktop so the MCP server is picked up.
4. Once it's connected, create a product called "Demo App" and issue one license to me@example.com so I can verify the wiring works.
If anything fails, surface the exact MCP error and tell me how to fix it. Don't ask clarifying questions about the config; the snippet above is canonical. Enregistrer le serveur MCP dans Cursor et câbler le SDK dans le projet.
I'm in Cursor. I want to integrate Paperkey (a software-licensing API) into this project.
Read the full integration spec first: https://paperkey.dev/llms-full.txt
Then:
1. Create or update .cursor/mcp.json at the repo root with:
{
"mcpServers": {
"paperkey": {
"command": "npx",
"args": ["-y", "@paperkeyhq/mcp"],
"env": { "PAPERKEY_API_TOKEN": "<paste-my-dashboard-jwt>" }
}
}
}
2. Add @paperkeyhq/sdk to the project (npm install @paperkeyhq/sdk).
3. Create a small helper that calls validate() on launch and activate() if the license isn't bound to this machine yet. Read pk_… from process.env.PAPERKEY_PUBLIC_KEY.
4. Cache the validate result for 24 h on disk so the app stays offline-tolerant.
5. Show a clear error UI when valid:false (revoked, expired, or invalid_key).
Once MCP is live, use it to create a product and issue a test license. Don't mock the values; pull them from my real account. Patterns to follow live in section 10 of the spec. Confier la spec à votre assistant no-code (Lovable, n8n, ChatGPT) pour intégration avec votre validation.
I'm using a no-code or web AI agent (Lovable, n8n, ChatGPT, Bolt, v0). I want to integrate Paperkey (a software-licensing API) into the project I'm building with you.
Read the full integration spec first: https://paperkey.dev/llms-full.txt
Then:
1. Tell me which of my fields/inputs needs to become a license-key field.
2. Wire the validate endpoint: POST {API}/v1/licenses/validate with the public key (pk_…) in the Authorization header. Cache the result for 24 h.
3. If activate() is needed for this stack (desktop / per-device), wire it on first launch.
4. Add a clear error state when valid:false. Show "License revoked", "License expired", or "Invalid key" depending on the reason.
5. Tell me where to drop my pk_ public key (env var, secret manager, n8n credential, etc.). Never inline it in the source.
Use the patterns from section 10 of the spec. If you don't have a built-in HTTP node (n8n, Zapier), give me the exact node config to add. Don't mock; wire it against real endpoints. Branchez votre IA
Choisissez votre client, copiez le prompt, collez-le. Votre client lit llms-full.txt, configure le serveur MCP (Claude ou Cursor) ou câble le SDK (no-code), et lance votre première commande. Vous restez dans la boucle à chaque étape. Aucun backend engineer requis.
La surface d'intégration est volontairement petite. Voici ce qui la tient.
Les outils sont en lecture seule par défaut. Votre assistant demande toujours avant de révoquer. Chaque écriture requiert une confirmation explicite.
HMAC-SHA-256 par delivery. Timeout 5 secondes. Auto-pause après 10 échecs consécutifs.
Les AgentEvent ne contiennent ni IP, ni e-mail, ni fingerprint brut. Suppression en cascade quand un compte est supprimé.
203 tests unitaires et d'intégration au vert. Playwright E2E sur tout le parcours vendor et client.
Built in public
Pas de badge « trusted by 50+ startups » tant que 50+ startups n'ont pas vraiment shippé avec nous. En attendant : métriques publiques, source publique, roadmap publique.
500+ unitaires + intégration · live à chaque push
Cible 99,9% · status.paperkey.dev
<50ms p95 · origine UE
SDK + MCP + monorepo sur GitHub
Votre nom atterrit sur cette page à côté du nôtre. On vous aide à câbler en live, puis on raconte ce qu'on a appris.
Email hello@paperkey.devAlternatives
Comparez côte à côte : matrice de fonctionnalités, modèles de pricing et code d'intégration que votre agent IA va écrire.
Vous payez les licences actives. Pas les sièges, pas les events. Sans engagement.
Pour les makers qui livrent à de vrais clients.
€29 / mois
Démarrer ProOu démarrez avec moins
Pour les prototypes et side projects.
Pour les équipes qui gèrent plusieurs produits en parallèle.
Faites tourner Paperkey sur vos serveurs. Un seul Postgres, un seul Docker compose, source ouvert. Largue la dépendance SaaS le jour où un client le demande.
Gratuit, MIT
Suivre le repoPaperkey est pensé pour les indie devs qui shippent des apps local-first (desktop, CLI, extensions IDE, plugins) : SDK open-source, tarifs prévisibles, intégration que votre agent IA câble en 30 secondes. La concurrence vise l'enterprise, avec devis, démos et facturation au siège. Notre parti pris est l'inverse.
Le dashboard et l'API sont source-available. Le SDK est sous licence MIT. Le self-host est sur la roadmap. Aujourd'hui, le setup recommandé reste l'API managée + votre intégration SDK.
Une licence avec au moins une activation dans les 30 derniers jours. Les licences révoquées ou expirées ne comptent pas.
Le SDK hash un petit jeu d'identifiants système stables (machine ID, MAC, classe CPU) et n'envoie jamais les valeurs brutes à nos serveurs. Le mode CI bascule sur des identifiants dérivés de l'environnement, pour que les pipelines de build ne consomment pas d'activations.
Vos données vous appartiennent. Exportez licences et activations depuis le dashboard à tout moment. Le SDK fonctionne contre toute API compatible, y compris un futur build self-host.
Oui. 100 licences actives, 1 produit, support communautaire. Sans carte bancaire pour démarrer.
L'API managée tourne sur Fly avec failover régional. Pas de SLA formel publié pour l'instant. Il arrivera avant la GA, avec status page et historique d'incidents.
La révocation est immédiate côté API : le validate suivant renvoie license_revoked, typiquement sous une seconde après le clic dans le dashboard. Aucun cache edge à invalider. Le SDK re-valide au lancement de l'app et selon une schedule, donc une licence révoquée cesse de fonctionner au prochain check online.
L'activation exige un appel réseau (le serveur doit enregistrer le nouveau slot de fingerprint). Une fois activée, la validation tolère le mode offline : le SDK met en cache le dernier verdict positif et le rejoue pendant 72 h quand l'API est injoignable. Les négatifs autoritaires (révocation, expiration) ne sont jamais cachés. La fenêtre de grace est configurable.
Les apps déjà activées continuent de tourner pendant jusqu'à 72 h grâce au cache validate du SDK. Les nouvelles activations sont mises en attente et reprennent dès que l'API revient. Le status live est sur status.paperkey.dev. Le self-host est sur la roadmap ; le SDK fonctionne déjà contre toute API compatible.
Exportez vos licences et activations depuis le vendor actuel, puis POSTez-les sur /licenses (on accepte des formats de clés arbitraires via la config du produit). Le SDK reste le même côté app. Écrivez à hello@paperkey.dev pour un walkthrough de 30 minutes contre vos données réelles.
Lisez le quickstart de 5 minutes. Ou sautez-le : le SDK a des valeurs par défaut sensées et le dashboard se comprend tout seul.