For coding agents: the Studio guide
Synced from bicycle-studio-api
This index and the chapters below are generated by yarn sync:studio from local directory context-collection, synced 2026-09-26. Do not edit them here; change the source and run the sync again.
These pages are the exact texts Bicycle Studio serves to coding agents: the studio_guide MCP tool returns them as the landing guide, and GET /api/studio/v1/guide returns the same text over HTTP. They are synced from the Studio repository, not edited here, so what you read on this site is what an agent connected to the Studio MCP reads.
Read Working with the person first, then the chapters in order. The generated reference pages (manifest fields, function schema, workflow kinds) are produced from the code and are linked from the chapters that use them.
| Chapter | What it covers |
|---|---|
| Working with the person | The person you are building for is usually not an engineer. Hold their hand: they decide, you do the work, and nothing reaches other people until they have… |
| Start here: building on Bicycle Studio | You are a coding agent with two things: the public template (github.com/BicycleAI/data-app-template) and the Bicycle Studio MCP. With them you can build data… |
| Connecting to the Studio MCP | Prod is https://app.bicycle.ai/.... Build and test on preview. |
| Data apps: the kit, the template and the manifest | A data app is a small web bundle (app.js, app.css, bda.manifest.json) that Studio hosts in a sandboxed frame, bound to one semantic model. It reads data only… |
| Functions | A function is a named, versioned, declared unit of work that Studio runs for any caller (an app, a workflow, an agent, MCP, chat, REST) as one invocation with… |
| Agents | An agent is a function of kind: agent: it takes several model steps and read-only tool calls to reach a structured answer, under budgets. Use one only where… |
| Bicycle workflows: a guide for coding agents | A workflow is a small graph of steps (nodes) that Studio runs in the background: on a schedule, when a person presses Run, or when an app, agent or MCP client… |
| Invocations and traces | Every run of a function (code, llm, classify, agent) or a workflow, from any surface (UI, app, API, MCP, chat, workflow), is one invocation: an inv_... record… |
| Detect and Explain | Detect and Explain answers "what changed, and why?" on one metric of an app's semantic model, ad hoc and as the person asking. Detect finds the segments… |
| Limits and safety | Never try to get around these. Give the link, say what it will change, wait. |
| bda.manifest.json fields (AppManifest, extra=forbid) | Limits: MAX_AGENTS 8, MAX_AGENT_DRIVERS 4, MAX_AGENT_INPUT_BYTES 8 * 1024, MAX_ANALYSES 16, MAX_CUSTOM_AGENT_BYTES 64 * 1024, MAX_CUSTOM_INSTRUCTIONS 12_000… |
| App SDK: bda.fn | bda.fn: call a published function or workflow from a template-built app. |
| function.json (bicycle.function/v1 — function.json) | Required: schema, name, input_schema, output_schema, capabilities. |
| "Use it in an app" for a function: what Studio generates | Studio's function page generates this text per function. Two examples follow (tenant acme is a placeholder), a code function and an agent. Today it is… |
| Workflow node kinds (registry) | status: draft with runs = yes (classify) means it runs but its spec may still change. There is no agent kind: call an agent-kind function from a function node.… |