Stevens Keys is the license-key and metering layer for MCP server creators. Issue keys, validate them at the edge, count usage, and revoke access in seconds. Sell from your own site, README, or listing. It's billing, not a storefront.
Issue keys from the dashboard or API. We store only a SHA-256 hash. You see the key once, at creation.
One call validates a key and records usage. You get allow/deny, plan, and remaining quota back.
Revoke or suspend a key and the next validation is denied. There's no 24-hour cache window.
Set monthly limits per product or per key. Over-quota calls are denied and counted.
Keys, usage by day, top keys, and a revenue ledger with your split already worked out.
Your server runs wherever it runs now. Add one SDK call in front of your tools.
You keep 85% of sales processed through Stevens Keys. The platform fee is 15%. There's no compute deduction and no monthly fee.
Free to sign up. Unlimited keys. Up to 50,000 validations per month per creator. Free key-gated plans for your users (default 3,000 calls per key per month). You only pay the 15% when you make a sale.
Payouts via Stripe Connect are in development and not live yet. Until they launch, revenue figures in the dashboard are simulated.
product_id.POST /v1/keys from your own checkout.import { StevensKeys, withLicense } from "@marcstevens/stevens-keys";
const keys = new StevensKeys({ baseUrl: "https://stevens-keys.pages.dev", productId: "prod_..." });
export default { fetch: withLicense(keys, (req) => handleMcp(req)) };
curl -X POST https://stevens-keys.pages.dev/v1/validate \
-H "Authorization: Bearer sk_mcp_test_..." \
-H "Content-Type: application/json" \
-d '{"product_id":"prod_...","units":1}'
# 200 {"allow":true,"status":"active","quota":{"limit":3000,"used":1,...}}
# 403 {"allow":false,"status":"revoked"}
The SDK package isn't on npm yet. It's coming with the public launch.
We run Surface, a free MCP server with per-request metering. Surface is our first internal customer on Stevens Keys.