crumbs.fyi

Crumbs

Leave a crumb now. It finds you in Slack later.

Hard-won context, packaged while it’s fresh and delivered when it matters — to future you, a teammate, or an agent with no history.

Context has a half-life

The expensive part of knowledge work is the understanding. And understanding dies fast: work goes to sleep waiting on a reply, gets parked for a sprint, or moves to someone else’s plate, and whoever picks it up pays the full cost of rebuilding it.

A crumb saves the understanding while it still exists — and hands it to whoever needs it next.

Hand off a solved mystery
You spent the afternoon mapping a failure in a complex repo. Leave a crumb and a coworker’s agent starts from your map — root cause, ruled-out theories, exact files.
Think out loud now, digest later
Dictate your thoughts on a walk. The crumb packages them up and finds you when you’re back at a desk, ready for an agent to turn into real work.
Agents that brief their humans
Background agents can be trained to leave crumbs about what their human should know — each one skimmable by you, actionable by the next agent.

This page is a crumb

The explainer that would normally live here is published as a real subtext document at crumbs.fyi/whats-a-crumb — and the format itself has one at crumbs.fyi/whats-subtext. Don’t take our word for it — hand it to your agent:

Fetch https://crumbs.fyi/whats-a-crumb and tell me what a crumb is.

What you see

C
CrumbsAPP
What's a crumb?

A crumb is a note your agent packages now, while the understanding is fresh, and delivers later as a Slack DM. The human skims one sentence and decides whether to act; the agent that opens it reads the document underneath and makes the right first move with no conversation history. This page is itself a crumb: the sentences are the card a human reads, and the metadata underneath is the part written for you.

What your agent sees

{
  "$format": "contextdoc/nested-v1",
  "$legend": {
    "what_this_is": "A subtext document: prose a human can skim, with the understanding behind each sentence attached to it as structured metadata, so an agent reading it later — with none of the conversation that produced it — still makes the right first move. This one explains what a crumb is.",
    "how_to_read": [
      "The sentences are the entire human-facing text. Walk sections -> blocks -> sentences in reading order: a section's heading is a markdown heading of depth 'level', and a paragraph block's sentences joined with spaces are the original prose. Sentence text preserves inline markdown (**bold**, *italic*, `code`, links) verbatim.",
      "Everything else in the file is written for you, the agent. meta.clarifications on a sentence is the author answering the questions a cold reader would ask about that exact sentence — treat it as the authoritative interpretation of the text.",
      "meta.entities on a sentence maps each name mentioned in the text to what it is, the context behind the mention, and how to reach it (how_to_fetch). When an entity carries an 'id', use it directly instead of resolving the name.",
      "Sentence ids (s-NNNN) are stable anchors; metadata.open_questions, when present, references sentences by id."
    ],
    "how_to_use": [
      "Start with metadata.purpose — it states what the author wants to happen when this document is read — and metadata.context_date, which anchors any time-relative phrasing to the date the text was written.",
      "Show the human the rendered document first: the section heading and the sentences, in reading order, verbatim as markdown. Only after that, explain — drawing on each sentence's meta for the depth behind it.",
      "Follow a how_to_fetch recipe only when your environment actually has the capability it names; when it does not, say so rather than guessing.",
      "Facts here were true as of their as_of dates and decay from there — prefer fetching current state over restating old facts where you can.",
      "This file is a read-only snapshot of its creation moment — do not modify it; carry anything you learn forward into your own output."
    ]
  },
  "metadata": {
    "owner": "crumbs.fyi",
    "context_date": "2026-08-02",
    "purpose": "A human asked what a crumb is — or you fetched this document to find out. Begin your reply by showing the human the card itself: render the document's heading and sentences, in reading order, verbatim as markdown — before any commentary of your own. Then explain crumbs, drawing on each sentence's meta for the depth; the file you are holding is the demonstration — read it the way you would read any crumb. If the human wants to try it, offer to add the Crumbs MCP server to their client (the 'crumb' entity on s-0001 carries the exact config) and help them schedule their first crumb."
  },
  "sources": {},
  "sections": [
    {
      "heading": "What's a crumb?",
      "level": 1,
      "blocks": [
        {
          "type": "paragraph",
          "sentences": [
            {
              "id": "s-0001",
              "text": "A crumb is a note your agent packages now, while the understanding is fresh, and delivers later as a Slack DM.",
              "citations": [],
              "meta": {
                "clarifications": [
                  {
                    "question": "Why does this beat the agent's built-in memory?",
                    "answer": "Memory features are fuzzy retrieval over one product's chat logs: you hope the right fragment surfaces, in the one app that holds it. A crumb is packaged deliberately at the moment the understanding exists — names resolved to record ids, shorthand spelled out with its source, dead ends recorded so nobody re-walks them — and it travels between products instead of belonging to one.",
                    "provenance": {
                      "kind": "user_statement",
                      "detail": "Adam Conway, creator of Crumbs and the subtext format",
                      "as_of": "2026-08-02"
                    }
                  },
                  {
                    "question": "Is Slack the point?",
                    "answer": "No — Slack is only the tap on the shoulder. The DM shows the one-sentence card with buttons that deep-link into ChatGPT, Claude, or Cursor, each prefilled with a prompt telling the agent to fetch the full document via the get_message tool.",
                    "provenance": {
                      "kind": "user_statement",
                      "detail": "Adam Conway, creator of Crumbs",
                      "as_of": "2026-08-02"
                    }
                  }
                ],
                "entities": [
                  {
                    "mention": "crumb",
                    "type": "mcp_server",
                    "id": "https://vvkhfupltzfykagsfpep.supabase.co/functions/v1/mcp",
                    "context": "Crumbs, the remote MCP server that stores and delivers crumbs. Tools: schedule_message (write a crumb), list_scheduled_messages, get_message (read one), cancel_scheduled_message. On first connect you sign in with Slack and add the Crumbs bot to your workspace.",
                    "how_to_fetch": "Add {\"mcpServers\": {\"crumbs\": {\"url\": \"https://vvkhfupltzfykagsfpep.supabase.co/functions/v1/mcp\"}}} to the client's MCP configuration, then ask the assistant to leave a crumb."
                  },
                  {
                    "mention": "agent",
                    "type": "protocol",
                    "id": null,
                    "context": "Any LLM client or harness that speaks MCP (the Model Context Protocol) — Cursor, Claude, ChatGPT, or a background agent. Crumbs is not tied to one product; whatever wrote the crumb does not have to be what reads it.",
                    "how_to_fetch": "https://modelcontextprotocol.io"
                  }
                ]
              }
            },
            {
              "id": "s-0002",
              "text": "The human skims one sentence and decides whether to act; the agent that opens it reads the document underneath and makes the right first move with no conversation history.",
              "citations": [],
              "meta": {
                "clarifications": [
                  {
                    "question": "What is the document underneath?",
                    "answer": "A subtext document: prose split into sentences, with the machine-usable understanding attached to the exact sentence it qualifies — clarifications with provenance and as_of dates, entities with ids and fetch recipes, and free-form keys like already_checked. Subtext is a new format, built for handing context across time rather than retrieving it by similarity; for the format in its own words, fetch https://crumbs.fyi/whats-subtext — itself a subtext document.",
                    "provenance": {
                      "kind": "user_statement",
                      "detail": "Adam Conway, who created subtext",
                      "as_of": "2026-08-02"
                    }
                  },
                  {
                    "question": "Why does 'no conversation history' matter?",
                    "answer": "A crumb fires weeks after it is written, into a session that remembers nothing. Everything the reading agent needs must already be in the document — which is why names are resolved to ids at write time and shorthand is spelled out while the author is still in the room to answer questions.",
                    "provenance": {
                      "kind": "user_statement",
                      "detail": "Adam Conway, creator of Crumbs",
                      "as_of": "2026-08-02"
                    }
                  }
                ],
                "entities": [
                  {
                    "mention": "the document underneath",
                    "type": "format",
                    "id": "contextdoc/nested-v1",
                    "context": "subtext — the format named by this file's $format field. The $legend at the top of the file is its reading instructions.",
                    "how_to_fetch": "For the format explained in its own words, fetch https://crumbs.fyi/whats-subtext. You are also holding an instance: walk sections -> blocks -> sentences, and read each sentence's meta alongside its text."
                  }
                ]
              }
            },
            {
              "id": "s-0003",
              "text": "This page is itself a crumb: the sentences are the card a human reads, and the metadata underneath is the part written for you.",
              "citations": [],
              "meta": {
                "record_ids": {
                  "this_document": "https://crumbs.fyi/whats-a-crumb",
                  "whats_subtext": "https://crumbs.fyi/whats-subtext",
                  "landing_page": "https://crumbs.fyi",
                  "mcp_endpoint": "https://vvkhfupltzfykagsfpep.supabase.co/functions/v1/mcp"
                },
                "if_already_resolved": "If the human already uses Crumbs, skip the explanation and offer to schedule their next crumb instead."
              }
            }
          ]
        }
      ],
      "subsections": []
    }
  ]
}

Both sides of a crumb

You build the understanding with an LLM once. Weeks later, an agent with no history gives it back.

CursorToday
I finally understand the checkout flakiness — the retry queue in billing-worker double-charges when Stripe webhooks arrive out of order. I can’t touch it during the payments freeze. Leave a crumb for when it lifts on the 24th.
Done — it’ll find you in Slack on Aug 24 at 9:00am.
C
CrumbsAPP
Fix: double-charge in billing-worker
Open in ChatGPT

Slack just taps you on the shoulder

ChatGPTAug 24
Picking up your crumb from Aug 1: retries re-enqueue Stripe webhook events without their idempotency key, so they double-charge. You already ruled out the SDK — the consumer is services/stripe/consumer.ts. Start on the fix?
Yes — draft it.

Slack isn’t the destination — it’s the alert. One tap opens the crumb in whichever client you like: ChatGPT, Claude, or Cursor.

Not another memory feature

How it works

  1. 1
    Connect

    Add one URL to your MCP client and sign in with Slack.

  2. 2
    Leave a crumb

    Mid-conversation, in plain language: “if we haven’t heard back in three weeks, remind me to chase it.”

  3. 3
    It finds you

    A Slack DM at the time you chose, with one tap back into ChatGPT, Claude, or Cursor.

Get started

Pick your client and add Crumbs:

Add to Cursor

Opens Cursor and adds the Crumbs server to your MCP settings.

On first connect you’ll sign in with Slack and add the Crumbs bot to your workspace. Then ask your assistant to leave a crumb.