Skip to main content
Mnemom’s two cards — alignment and protection — are first-class API resources. Every card, at every scope, has the same URL shape:
where <resource> is one of alignment or protection, <scope> is one of platform, org, team, agent, and <scope_id> is a stable identifier (the literal string default for platform scope). This page is the customer-facing orientation to the canonical URL surface, the four scopes, and the migration from the earlier scope-specific paths.

Resources × Scope × Verb

Mnemom uses the Resources × Scope × Verb idiom — the same one Stripe uses for its Resource nouns, Kubernetes uses for spec/status, AWS IAM uses for Policy/Effective, and Linear uses for Settings. There are two resources, four scopes, and a small fixed set of verbs.
The same shape works for protection:
A single mental model covers the entire surface. Authoring tools, CI Actions, and SDKs build one routing table and address every scope through it.

The four scopes

Cards compose across scopes in this order — every later layer can tighten what earlier layers declared, never loosen. Composition runs platform → org → team → agent. The composed result is the agent’s effective card, surfaced (in Wave 2 of cards-as-primitive) at /v1/<resource>/<scope>/<scope_id>/effective.

Naming retirement — card leaves the API surface

Before this canonicalization, the same concept lived under four different nouns: alignment-card, alignment-template, platform-card/alignment, and bare card. That was unteachable. The reshape: The word card survives in conversation and in the docs you’re reading — it’s a useful piece of shorthand. It just doesn’t appear in URLs any more. The API spec uses alignment and protection as the resource nouns.

Legacy URL migration

Every legacy URL returns HTTP 308 Permanent Redirect (RFC 7538) to its canonical equivalent. RFC 7538 §3 guarantees that compliant clients preserve the original method and body across the redirect — so a PUT against a legacy URL becomes a PUT against the canonical URL with the same body, automatically. Every 308 carries three migration headers:
  • Location: the canonical URL (with the original query string preserved).
  • Deprecation: true (RFC 8594) — flags the resource as deprecated for intermediaries and observability tooling.
  • Sunset: Fri, 15 Jan 2027 00:00:00 GMT — the date after which the legacy URL stops redirecting and returns 410 Gone. Roughly aligned with Mnemom Phase 5 GA.
  • Link: <https://docs.mnemom.ai/concepts/cards-as-resources>; rel="deprecation"; type="text/html" (RFC 5988) — points you here.

Migration table

Client compatibility

Modern HTTP clients follow 308 with method and body preservation by default:
  • curl 7.46 and later — preserves method on 308. Pass -L to follow redirects.
  • fetch / node-fetch / undici — preserve method on 308 by default.
  • Python requests 2.7 and later — preserves method on 308.
  • Python httpx — preserves method on 308.
  • Go net/http since 1.8 — preserves method on 308.
  • axios — preserves method on 308.
Older clients (curl ≤ 7.45, Python requests ≤ 2.6) may downgrade POST to GET on 308 — those vintages predate RFC 7538 strict-308 compliance. Upgrade the client or call the canonical URL directly.

Worked example

A common client-side flow before canonicalization:
The same call works against the legacy URL today — it returns a 308 to the canonical URL and the client re-issues the PUT. The client doesn’t need to change to keep working. To stop the round-trip, point the call at the canonical URL directly:
That’s the only change — one URL, one method, same body.

What this unlocks

This canonicalization is the foundation for the rest of the cards-as-primitive surface:
  • GET /v1/<resource>/<scope>/<scope_id>/effective — the composed view, with per-key provenance back to whichever scope authored each field.
  • GET /v1/agents/{id}/state — the runtime composite: one call returns alignment + protection + capabilities with full tool definitions.
  • Sub-resource verbsPUT /v1/alignment/<scope>/<scope_id>/<primitive> to set just one primitive (values, conscience, capabilities, etc.) without replacing the whole spec.
  • AI-forward verbsscaffold, explain, simulate, import — natural-language and probing UX that all bind on the same root namespace.
Each builds on the same Resources × Scope × Verb shape this page describes.

See also