---
title: Why Scripto
description: The case for an agent-first writing tool — one backend for human and agent, cheap section-at-a-time editing, and a publish step that imports into Medium intact.
---

Most writing tools are built for a human at a keyboard, then bolted onto an API as an afterthought. Scripto is built the other way around: the agent is a first-class author, and the human canvas and the terminal drive the **same backend**.

## One backend, two authors

A piece of writing in Scripto has exactly one source of truth — the article stored as ordered sections in the database. The human edits it in a Medium-style canvas; an agent edits it from the terminal. Neither is a copy or an export of the other. A draft can move between them mid-sentence: the agent roughs out the structure, the human polishes a paragraph in the canvas, the agent rewrites the conclusion — all on the same rows.

<Info>

This is why Scripto isn't "an API for a writing app". The API **is** the app. The web canvas is just another client of the same `/api/*` routes the CLI uses.

</Info>

## Editing stays cheap

A long article is expensive for an agent to handle if every edit means pushing or pulling the whole document — the context cost grows with the piece. Scripto's [ordered-sections model](/concepts/sections) makes editing cheap: the agent reads a tiny **outline** (anchors + titles, no bodies), then `get` / `set` a single section. A 4,000-word essay edits one 200-word section at a time, so the agent never holds the whole thing in context just to fix a paragraph.

## What you write is what imports

The hardest part of "write somewhere, publish to Medium" is that formatting breaks in translation. Scripto removes the translation: the **server is the only thing that renders Markdown to HTML**, and a published story is a server-rendered `/story/<slug>` page. Medium's import bot fetches that exact page, so the story it rebuilds matches what you wrote — headings, code blocks, lists, dividers, and figures intact. You publish a URL; you never paste rendered HTML and pray.

See [Import, don't paste](/concepts/import-model) for the full reasoning.

## The install is the pitch

Because the docs are written for an agent and the CLI self-provisions over an email code with no browser, the way Scripto reaches a new user is a single instruction: *"Here are the Scripto docs — install it and show me what it does."* A capable agent reads these pages, installs the CLI, provisions itself, drafts a story, and publishes it — explaining the product by using it. That motion is the whole point, and every page here is built to make it work.

## Next steps

- **[The ordered-sections model](/concepts/sections)** — the concept that makes agent editing cheap.
- **[Import, don't paste](/concepts/import-model)** — why publishing yields a faithful Medium import.
- **[Quickstart](/quickstart)** — run the loop yourself.
