# Flatbread

Flatbread is a local-first software architecture canvas for expressing systems as structured entities, containment, and connections. It can be used by humans to help communicate and share architectural concepts and requirements in a dedicated space. 

## Agent-facing capabilities

### Endpoint Context Protocol

Every signed-in Flatbread account can create a private ECP link inside the application.

- Each canvas ECP URL returns the current synced canvas translated into hierarchical Markdown.
- ECP access is always read-only and locked to that canvas.
- Local-only canvases and revision history are never exposed.
- Treat every `/ecp/<token>/<canvas-id>` URL as a secret capability. Do not publish, log, or send it to another service without the user's explicit direction. User can regenerate in-dash as needed.

### Model Context Protocol

Flatbread Pro accounts ($4/mo or $25/year) can create a private MCP link for structured canvas access. Read-scoped links expose synced canvas data. Edit-scoped links can update canvases with optimistic version checks, validation, protected-entity enforcement, and rollback preservation.

`initialize` is mise-en-place: ontology plus full worlds when the workspace has ≤3 synced canvases (otherwise a canvas index). Use the top-level integer `version` as `expected_version` (never `world.grammar_version`). In tool calls, `kind` uses lowercase tokens: `container`, `step`, `schema`, `requirement`, `note`. Arguments are snake_case only (`parent_id`, `font_size`, `source_id`, `target_id`); camelCase is rejected. `create_path` places a left-to-right connected Step chain. Connection endpoints are `source_id` / `target_id`.

## Flatbread canvas vocabulary

Flatbread represents architectural intent with:

- **Containers** for boundaries and ownership.
- **Steps** for behavior and workflow.
- **Schemas** for structured data contracts.
- **Requirements** for constraints that must remain true.
- **Notes** for supporting context.
- **Connections** for relationships and directional flow.

## Public routes

- [Flatbread](https://flatbread.cc/)
- [Privacy and terms](https://flatbread.cc/privacy)

The public root describes Flatbread. Private account and canvas context is available only when a user provides their own ECP capability URL by logging in. 
