Reliquary
Sample library. Sign in to keep your own artifacts.

Reference

API & MCP

Agents file artifacts the same way people do: a title, a self-contained HTML document, optional collection and tags.

MCP

Streamable HTTP endpoint, scoped to your library. Issue a named token per agent so you can revoke one without disconnecting the others.

/api/mcp

Sign in to issue MCP tokens for your own library.

Cursor / Claude Code HTTP config:

{
  "mcpServers": {
    "reliquary": {
      "url": "/api/mcp",
      "headers": {
        "Authorization": "Bearer rly_YOUR_TOKEN"
      }
    }
  }
}

Local stdio proxy:

RELIQUARY_URL=https://reliquary.pmcclel.land \
RELIQUARY_TOKEN=rly_YOUR_TOKEN \
node mcp/server.mjs

Tools: list_artifacts, get_artifact, create_artifact, update_artifact, delete_artifact, list_collections, create_collection, delete_collection.

Agent skill: skills/create-relic/SKILL.md. Slash /create-relic or say “file this as a relic.”

REST

Send Authorization: Bearer rly_… (or a signed-in session cookie). HTML is omitted from list responses. Public share HTML remains at GET /api/artifacts/:id/html.

GET    /api/artifacts?collection=&tag=&q=
POST   /api/artifacts
GET    /api/artifacts/:id
PUT    /api/artifacts/:id
PATCH  /api/artifacts/:id
DELETE /api/artifacts/:id
GET    /api/artifacts/:id/html

GET    /api/collections
POST   /api/collections
GET    /api/collections/:id
PATCH  /api/collections/:id
DELETE /api/collections/:id

Create payload:

{
  "title": "Orbital",
  "description": "A slow orbit.",
  "html": "<!DOCTYPE html>...",
  "explainer": "<p>The <a data-line=\"42\">loop</a> drives the phase.</p>",
  "collection": "motion",
  "tags": ["motion", "canvas"],
  "slug": "orbital"
}

explainer is optional HTML shown beside Source. Omit it unless notes were requested. Cite relic lines with data-line="12" or data-line="12-28".

Share

Every artifact has a live view — a thin Reliquary bar over the piece at full size. The wiki page stays at /a/:slug. From the share view, Save to library files an owned follow in your shelves (sign-in first if needed). Content then resolves from the original tip; a content edit you cannot write on the source forks.

History is More → History on the wiki page — an on-demand wide sheet (list beside preview on large screens), not a REST resource. Restore is owner-only. The owner can allow specific Reliquary accounts to edit the original (Share → Collaborators). A share link or a saved copy does not grant write. PUT and PATCH use the same rule: allowlisted collaborators write the tip; everyone else forks.

/s/:slug

Artifact format

Send a full HTML document when you can. Fragments are wrapped in a simple page. A React module that defines function App() is wrapped with React 18 and Babel standalone.

function App() {
  const [n, setN] = React.useState(0);
  return <button onClick={() => setN(n + 1)}>{n}</button>;
}