---
audience: developers
summary: "ScaiScribe \u2014 generate, edit, and ingest DOCX, PPTX, XLSX, and PDF from\
  \ a single declarative JSON specification, callable from MCP, REST, and three official\
  \ SDKs."
title: Overview
path: overview
status: published
---


# Overview

ScaiScribe is the ScaiLabs document service. You hand it a JSON document specification — headings, paragraphs, tables, charts, slides, sheets — and get back DOCX, PPTX, XLSX, or PDF artefacts. You can also go the other way: hand it a DOCX and get back a specification you can edit, then re-render.

The same backend powers all three workflows: **author from scratch**, **template-fill** with placeholders, and **ingest-and-edit** existing documents.

## What it's good for

- **Programmatic document generation** — invoice runs, monthly reports, personalised PDFs. A spec is structured data, so you can author it from any source (database row, LLM call, form submission).
- **AI agents** — the MCP surface is the primary interface. An agent calls `scribe_create_document`, `scribe_add_element`, `scribe_finalize` and gets a download URL back.
- **Template instantiation** — register a `.docx` with `{{placeholder}}` markers, fill it with structured data per request.
- **Ingest + edit** — round-trip an existing DOCX through the spec format. Useful for "extract content from this contract, modify clause 3, re-emit" pipelines.

## What you talk to

Three peer surfaces, all backed by the same service layer:

| Surface | Best for |
|---|---|
| **MCP** (46 tools) | AI agents. `scribe_*` tools cover the full lifecycle. |
| **REST** (`/v1/*`) | Application code in any language. Bearer auth, JSON in/out. |
| **JSON spec format** | Power-user escape hatch — `POST /v1/documents/from_spec` with a hand-written spec. |

The published spec at [`schema/scaiscribe.schema.json`](https://github.com/scailabs/scaiscribe/blob/main/schema/scaiscribe.schema.json) is the canonical contract; both Python and TypeScript SDKs ship types generated from it.

## What it can't do today (alpha caveats)

We're transparent about what's deferred to v1.x so you don't trip over it:

- **DOCX/XLSX native charts for kinds outside `bar`/`column`/`line`/`pie`** — those four ship as hand-emitted OOXML chart parts (editable in Word/Excel). Other kinds (area, scatter, sankey, treemap, gauge, etc.) render as ECharts SVG images — visually correct but not editable as native charts. PPTX native is broader (covers `pptxgenjs`'s full surface).
- **OCR ingestion** — text-only ingest for now.
- **ScaiSign / ScaiCMS bridge** — coming with their respective integrations.

Every deferral lands in the response as a structured warning, never silently dropped.

## How auth works

ScaiScribe authenticates users and services through [ScaiKey](https://scailabs.ai/docs/scaikey). For SDK usage:

```python
auth = ScaiKeyAuth(client_id="...", client_secret="...")
client = Client("https://scaiscribe.scailabs.ai", auth=auth)
```

The SDK handles token fetch + refresh transparently. See [Quickstart](/docs/scaiscribe/quickstart) for the full flow.

## Where to next

- **Just want to render a document?** Go to [Quickstart](/docs/scaiscribe/quickstart) — sub-five-minute path from zero to a downloaded DOCX.
- **Building an AI agent?** The [MCP reference](/docs/scaiscribe/reference) lists every `scribe_*` tool.
- **Integrating from code?** The [SDK reference](/docs/scaiscribe/reference/sdks) covers Python, .NET, and TypeScript.

## Status

ScaiScribe is in **alpha** at <https://scaiscribe.scailabs.ai>. Pin SDK versions and expect minor breaking changes through v1.0 GA. Production-shaped surface is stable; deferrals are documented per page.
