AMCP Public Draft
Agent Memory Continuity Protocol
AMCP is a minimal interoperability protocol for portable, long-term agent memory. This page is the public protocol-shaped summary: canonical record shape, current HTTP surface, auth scopes, delete semantics, portability model, and reference implementation status.
On this page
Status
Canonical public draft
Server
Nexus reference server
Client
@nunchiai/reference-agent
Surface
/v1/amcp/*
1) What AMCP is
AMCP stands for Agent Memory Continuity Protocol. Its purpose is narrow: save memory in a shared record shape, recall it later, preserve scope and provenance, and move memory between systems through export/import.
In practical terms, AMCP exists so agent memory can outlive a single session. It is meant for long-lived working memory, reusable project memory, and, where retention policy allows, memory that can remain available without a fixed expiration.
AMCP is
- 1. a protocol for portable agent memory
- 2. a protocol for long-term agent memory
- 3. a canonical record shape
- 4. a public HTTP surface for memory lifecycle operations
- 5. a portability contract for export/import
AMCP is not
- 1. a model protocol
- 2. a prompt format
- 3. a reasoning standard
- 4. a general-purpose coding-agent product
Current public position: Nexus is the AMCP reference server implementation, and @nunchiai/reference-agent is the AMCP reference client implementation.
2) Core concepts
Memory record
The atomic memory unit stored and recalled through the protocol.
Session
A work context in which records are created, recalled, or linked. In v0.1, session is represented through origin.session_id, not scope.kind.
Scope
The ownership and visibility boundary of a record. Current values are user, project, team, and org.
Origin and policy
Origin explains where a record came from. Policy covers visibility, retention, and delete behavior.
Current standard record types are task, decision, context, artifact, convention, and error.
3) Canonical record shape
The canonical public shape is a portable JSON record. Current reference implementations shape records like this:
{
"id": "mem_123",
"content": "GraphQL schema changed: User.email is now nullable.",
"type": "decision",
"scope": {
"kind": "project",
"id": "proj_abc"
},
"origin": {
"user_id": "usr_1",
"agent_id": "cursor",
"app_id": "cursor-ide",
"session_id": "ses_9"
},
"visibility": "project",
"retention": {
"mode": "persistent"
},
"tags": ["graphql", "schema"],
"energy": 0.84,
"source_refs": [
{
"kind": "file",
"uri": "repo://schema.graphql"
}
],
"metadata": {},
"created_at": "2026-03-18T10:00:00Z",
"updated_at": "2026-03-18T10:00:00Z"
}Current visibility values are private, project, team, and org. Current retention values are ephemeral, persistent, and ttl.
persistent is the long-term memory mode. When an implementation does not attach an expiration policy, that can function as effectively indefinite memory.
4) Public HTTP surface
The canonical public surface currently implemented in Nexus is:
- 1.
POST /v1/amcp/remember - 2.
POST /v1/amcp/recall - 3.
GET /v1/amcp/sessions - 4.
GET /v1/amcp/sessions/:id - 5.
POST /v1/amcp/export - 6.
POST /v1/amcp/import - 7.
DELETE /v1/amcp/memories/:id
Native Nexus routes still exist underneath as /v1/memory/*. Legacy /v1/amp/* routes remain only as compatibility aliases. The canonical public protocol surface is /v1/amcp/*.
curl -X POST https://nexus-api-production-4177.up.railway.app/v1/amcp/remember \
-H "Authorization: Bearer sk_write_your_key" \
-H "Content-Type: application/json" \
-d '{
"items": [
{
"content": "Stripe webhook bug fixed by separating nexus billing fields.",
"type": "error",
"scope": { "kind": "project", "id": "p-19" },
"visibility": "project",
"retention": { "mode": "persistent" },
"tags": ["billing", "stripe"]
}
]
}'curl -X POST https://nexus-api-production-4177.up.railway.app/v1/amcp/recall \
-H "Authorization: Bearer sk_write_your_key" \
-H "Content-Type: application/json" \
-d '{
"query": "recent billing fixes",
"scope": { "kind": "project", "id": "p-19" },
"types": ["decision", "error"],
"limit": 10
}'5) Auth and policy
Current API key scopes in the reference implementation are:
- 1.
memory.read - 2.
memory.write - 3.
memory.export - 4.
memory.delete - 5.
memory.admin
Current enforcement
- 1.
memory.readgates recall, sessions, and stats - 2.
memory.writegates remember and import - 3.
memory.exportgates export - 4.
memory.deletegates soft delete - 5.
memory.adminallows explicit scope override
Current support boundary
Official baseline is CLI-first. Desktop and IDE variants may be config-compatible, but they are not presented as equally verified unless runtime checks were completed.
6) Delete and portability
Current delete behavior is soft delete. Deleted records are excluded from normal recall, but deletion state is retained throughdeleted_at and deletion_source.
{
"id": "mem_abc",
"status": "deleted",
"deleted_at": "2026-03-18T10:00:00Z",
"deletion_source": "user"
}Current portability model treats export/import as first-class protocol behavior. The reference implementation supports:
- 1.
jsonexport - 2.
jsonlexport - 3. import with
preserve_ids,preserve_timestamps,preserve_origin, anddedupe
Hard delete or purge is not yet part of the canonical public baseline.
7) Reference implementation status
Current public baseline in Nexus includes:
- 1. canonical AMCP HTTP surface
- 2. export/import portability
- 3. scope, origin, visibility, retention, and soft delete semantics
- 4. compliance-tested server and reference client surfaces
RAILS_ENV=test bin/rake amcp:compliance
RAILS_ENV=test bin/rake amp:compliance
npx -y -p @nunchiai/reference-agent@latest amcp-agent complianceCurrent success tokens are AMCP_COMPLIANCE_OK and AMP_COMPLIANCE_OK. The public reference client is published as @nunchiai/reference-agent.
The reference client baseline is intentionally narrow: TypeScript, Node.js, OpenAI-compatible BYOK providers, AMCP trace output, and lifecycle verification. It exists to demonstrate the protocol, not to compete as a general-purpose coding agent.