Skip to main content

API keys and scopes

API keys and scopes

Mint keys at Dashboard → Settings → API keys & MCP (/dashboard/settings/developer). The plaintext is shown once; Blueprintr stores only a hash of it.

Two kinds of key

The prefix tells you which. They are separate credentials: they reach different servers and are offered different scopes.

blueprint:josh/two-keys-two-servers

Personal key scopes

Ten, and every one of them is optional.

ScopeUnlocksTools
read:blueprintsBlueprints, portfolios, strata, diagram tabs, templates, tags, analytics, change requests20
read:vellumsStandalone vellum diagrams, including docYaml2
read:foliumsFoliums, their pages and their strata4
read:organizationThe orgs and teams you belong to, so an agent can file work in the right workspace4
searchSearch across everything the key can already see1
write:blueprintsCreate and update your own drafts, publish them, build strata and diagram tabs, manage portfolios22
write:vellumsCreate and update vellums you can edit6
write:foliumsCreate and update foliums, pages and folium strata7
write:sharingNarrow a blueprint's audience2
write:reviewSubmit your own work into a governance workflow3

write:sharing is monotonic. Its two tools, restrict_blueprint_audience and raise_blueprint_classification, can only ever make content more private. No tool widens an audience, so a leaked key cannot publish your private work.

There is no write:organization. Membership and roles stay out of scope permanently, and tenant cosmetics are excluded because a mistake there reaches every user in the organisation.

Organisation key scopes

Five. Names shared with the personal list mean different things here.

ScopeUnlocks
read:blueprintsPublic blueprints belonging to the organisation
read:docsPublic folium pages
read:private-docsPrivate folium pages as well, gated to owners and admins at mint time
searchSearch within that scope
mcpThe host-scoped documentation MCP server, on an org or team subdomain

Grant read:private-docs only where the key needs private pages. It turns a key that reads your published documentation into one that reads all of it.

Choosing scopes

New keys default to read-only, and scopes cannot be edited after creation. Minting a new key is the only way to change them.

A personal key with a write scope acts as you, with your access. Store it in a secret manager, never in source control, and never in a command-line flag: argv is visible in ps and lands in shell history. Pass it through an environment variable or a file instead.

Limits

Active personal keys per user10
Key creations per hour10
Requests per key, per 5 minutes600
Requests per IP, per 5 minutes60
Write tool calls per key, per 5 minutes40

Checking a key

whoami needs no scope. It reports whether the key is live and what it can do, in one call:

curl -fsS https://blueprintr.io/api/mcp \
  -H "Authorization: Bearer $BLUEPRINTR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"whoami","arguments":{}}}' \
  | jq -r '.result.content[0].text | fromjson | {username, plan, scopes}'

A live personal key returns your handle, plan and its scopes. If it returns the public documentation tool set instead, the key was not accepted: it is missing, malformed or revoked.

Rotating

Use one key per client, so a single connection can be revoked without breaking the others. Revocation takes effect on the next request.

Rotate in this order: mint the replacement, deploy it, confirm with whoami, then revoke the old one.