Skip to content
Strata/Docs

Strata Documentation

Strata is an AI-empowered document editing platform. Upload Markdown or HTML documents for viewing, commenting, and editing with a section-based document model designed for granular AI editing via MCP (Model Context Protocol).

Setup

Quick Start

Connect your AI client to Strata's MCP server to read, edit, search, and manage documents. Most clients handle OAuth automatically — just provide the server URL.

Connection Details

MCP Server URL
https://api.prod.us-east-2.strata.space/mcp
Authentication
OAuth 2.1 with Dynamic Client Registration
Available Tools
app_get_section_content, browse_connector_resources, edit_document, find, get_agent_status, get_document_graph, get_image, get_presence, get_publish_status, invoke_agent, invoke_connector_action, list_connected_tools, manage_comments, manage_suggestions, publish_document, read_document, unpublish_document
Integration

Client Setup

Using Claude Code? The Strata plugin is the fastest path: it registers the MCP server and adds the Spaces skills in one command.

Claude Desktop

Add to your claude_desktop_config.json:

json
{
  "mcpServers": {
    "strata": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.prod.us-east-2.strata.space/mcp"
      ]
    }
  }
}

OAuth authentication is handled automatically — you'll be prompted to sign in on first use.

Claude Code

Add the Strata MCP server via the CLI:

bash
claude mcp add strata https://api.prod.us-east-2.strata.space/mcp

OAuth authentication is handled automatically via your browser.

Cursor

Add to ~/.cursor/mcp.json or .cursor/mcp.json:

json
{
  "mcpServers": {
    "strata": {
      "url": "https://api.prod.us-east-2.strata.space/mcp"
    }
  }
}

Cursor handles OAuth automatically when the server returns 401.

VS Code (Copilot)

Add to .vscode/mcp.json in your project:

json
{
  "servers": {
    "strata": {
      "type": "http",
      "url": "https://api.prod.us-east-2.strata.space/mcp"
    }
  }
}

Requires VS Code 1.101+. Uses "servers" (not "mcpServers") and type "http". OAuth with PKCE and Dynamic Client Registration is handled automatically.

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

json
{
  "mcpServers": {
    "strata": {
      "serverUrl": "https://api.prod.us-east-2.strata.space/mcp"
    }
  }
}

Windsurf uses serverUrl instead of url. OAuth is handled automatically.

Cline

Open the MCP Servers panel in Cline and add to the config:

json
{
  "mcpServers": {
    "strata": {
      "url": "https://api.prod.us-east-2.strata.space/mcp",
      "type": "streamableHttp"
    }
  }
}

Uses "streamableHttp" (camelCase). When OAuth is required, Cline shows an Authenticate button.

Continue

Add to ~/.continue/config.yaml:

yaml
mcpServers:
  - name: strata
    command: npx
    args:
      - "-y"
      - "mcp-remote"
      - "https://api.prod.us-east-2.strata.space/mcp"

Continue does not support OAuth natively yet. Use the mcp-remote bridge instead (see below).

Zed

Add to your Zed settings.json:

json
{
  "context_servers": {
    "strata": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.prod.us-east-2.strata.space/mcp"
      ]
    }
  }
}

Zed does not support OAuth natively. Uses mcp-remote as a stdio bridge that handles the OAuth flow in your browser.

Integration

Claude.ai and ChatGPT

These chat products render Strata's editor inline as a custom connector. Add the MCP server URL above in the host's connector settings.

Claude.ai

Settings → Connectors → Add custom connector

Available on paid plans. Organization connectors are added by an Owner.

ChatGPT

Settings → Connectors → Create

Requires Developer Mode (Settings → Apps & Connectors → Advanced). Plus, Pro, or Enterprise.

Fallback

Universal Fallback (mcp-remote)

For any client without native OAuth support, use mcp-remote as a stdio bridge. It handles the full OAuth flow and works with any MCP client:

json
{
  "mcpServers": {
    "strata": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.prod.us-east-2.strata.space/mcp"
      ]
    }
  }
}

Auth state is persisted in ~/.mcp-auth/ so you only authenticate once per server.

Reference

Next Steps

See the MCP Tools Reference for complete documentation of all available tools and their parameters.

Reference

Agent frontmatter

An agent definition is a Markdown document under your /Agents folder. The YAML frontmatter declares the agent's identity, tool allowlist, and orchestrator visibility; the body below the frontmatter is the system prompt the orchestrator hands the user's request to verbatim. Every field is validated server-side on save.

Agent frontmatter fields
FieldTypeRequiredDefaultDescription
autoInvokablebooleanOptionalfalseWhen true, the chat orchestrator may pick this agent on its own if its description matches the user's request. When false (default), the agent runs only on explicit invocation (@mention, MCP invoke_agent, or a connected source).
descriptionstringRequiredOne-sentence summary of when to use this agent. Surfaces in the orchestrator's auto-invoke catalog and the @mention picker — be specific about the agent's job.
enabledbooleanOptionaltrueMaster switch. When false, the agent is hidden from every invocation surface even when its frontmatter is otherwise valid.
modelstringOptionalOptional override for the model the agent runs on. Falls back to the platform default when omitted. Must resolve against the platform model registry.
namestringRequiredKebab-case identifier ([a-z0-9-]), unique within your agents and not colliding with a reserved platform agent name. Drives the @mention token in chat and the agentName argument to MCP invoke_agent.
toolsstring[]Optional[]Allowlist of platform tools the agent may call (e.g. read_document, search_space). The Available Tools panel inside the agent banner lists every valid name. Omit or leave empty to grant no tools.

Example

markdown
---
name: meeting-notes-summarizer
description: Summarizes meeting notes into a TL;DR with action items.
tools:
  - read_document
  - search_space
model: claude-sonnet-4-6
color: emerald
enabled: true
autoInvokable: false
---

You are a meeting-notes summarizer. Given the document body the
orchestrator hands you verbatim, produce a one-paragraph TL;DR and a
bulleted action-item list…
Reference

Prompt frontmatter

A prompt template is a Markdown document under your /Prompts folder. The YAML frontmatter declares the prompt's name, description, arguments, and orchestrator visibility; the body below the frontmatter is the prompt template — {{argument}} placeholders are substituted at render time. Argument values are collected by the chat composer's slash sheet or the MCP prompts/get request.

Prompt frontmatter fields
FieldTypeRequiredDefaultDescription
argumentsPromptArgument[]Optional[]Ordered list of `PromptArgument` entries the prompt body references via `{{name}}` placeholders. Order is preserved across the wire so the slash-picker renders fields in the author's chosen order. Maximum 16 entries.
autoInvokablebooleanOptionalfalseWhen true, the chat orchestrator may pick this prompt on its own when the description matches the user's intent. When false (default), the prompt runs only when the user types its slash token or a client invokes MCP prompts/get.
descriptionstringRequiredOne-sentence summary of what the prompt does. Surfaces in the slash menu, MCP prompts/list, and (when autoInvokable: true) the orchestrator's tool catalog.
namestringRequiredHuman-readable prompt title. The slugified form becomes the /prompt:<slug> token shown in the chat composer's slash menu.

PromptArgument

Each entry in the `arguments` array above takes the following shape:

PromptArgument fields
FieldTypeRequiredDefaultDescription
descriptionstringRequiredShort human-readable description shown in the slash-picker argument sheet, the MCP `prompts/list` payload, and the `loadUserPrompt` catalog so the user (or the model) knows what to fill in. 1-200 chars.
namestringRequiredIdentifier matched verbatim against the body's `{{name}}` placeholders. Matching is case-sensitive — `{{Focus}}` and `{{focus}}` are distinct placeholders. Restricted to ASCII letters, digits, and underscores (1-48 chars) so the same identifier is valid in YAML and the placeholder grammar.
requiredbooleanOptionalfalseWhen true, the slash-picker argument sheet blocks submit until a value is supplied; the `loadUserPrompt` catalog also flags it so the model knows it must ask the user to clarify. When false (default), an omitted argument substitutes the empty string into its placeholders at render time.

Example

markdown
---
name: Summarize document
description: Summarize the active document for a chosen audience.
autoInvokable: false
arguments:
  - name: focus
    description: What the assistant should focus on.
    required: true
  - name: audience
    description: Target audience for the summary.
    required: false
---

Summarize this document for {{audience}}, focusing on {{focus}}. Keep
the summary under 200 words and finish with a short action-items list.
Reference

Template frontmatter

A document template is a Markdown document inside a templates folder. The YAML frontmatter declares the template's name, typed variables, and section contract; the body below the frontmatter is the reusable content — {{key}} placeholders are substituted when a document is created from the template, via the gallery, the MCP createFromTemplate action, or an agent's create_document_from_template tool.

Template frontmatter fields
FieldTypeRequiredDefaultDescription
descriptionstringRequiredSentence describing when to use this template. Surfaces in the gallery and in tool catalogs, so be specific about the document shape it produces.
namestringRequiredKebab-case identifier, unique among the templates in the same folder. Shown in the gallery alongside the document title.
sectionsTemplateSection[]Optional[]Section contract: what a conforming instance must contain. Maximum 64 entries. Empty when the template declares no section structure.
variablesTemplateVariable[]Optional[]Typed placeholders substituted at instantiation. Order is preserved across the wire so fill-in forms render fields in the author's chosen order. Maximum 16 entries. Empty when the template takes no variables.

TemplateVariable

Each entry in the `variables` array above takes the following shape:

TemplateVariable fields
FieldTypeRequiredDefaultDescription
keystringRequiredIdentifier matched verbatim against the body's `{{key}}` placeholders. Matching is case-sensitive. Restricted to ASCII letters, digits, and underscores (1-64 chars) so the same identifier is valid in YAML and the placeholder grammar.
kindunknownOptional"text"Input kind. Defaults to free text.
labelstringRequiredHuman-readable label shown on the fill-in form. 1-80 chars.
requiredbooleanOptionalfalseWhen true, instantiation fails unless a value is supplied. When false (default), an omitted variable substitutes the empty string into its placeholders.

TemplateSection

Each entry in the `sections` array above takes the following shape:

TemplateSection fields
FieldTypeRequiredDefaultDescription
fillunknownOptional"required"Fill discipline for the section. Defaults to required.
guidancestringOptional""Instructions for whoever (or whatever) fills the section in. Optional; shown alongside the section in fill-in surfaces.
titlestringRequiredSection title. Matches a heading in the template body verbatim.

Example

markdown
---
name: incident-postmortem
description: Standard postmortem with a verbatim escalation matrix.
variables:
  - key: incident_id
    label: Incident ID
    kind: text
    required: true
  - key: occurred_on
    label: Date of incident
    kind: date
    required: true
sections:
  - title: Timeline
    guidance: Chronological events from first alert to resolution.
    fill: required
  - title: Lessons learned
    guidance: What we change going forward.
    fill: optional
  - title: Escalation matrix
    fill: verbatim
---

## Timeline

Incident {{incident_id}} on {{occurred_on}}.

## Lessons learned

## Escalation matrix

Page the on-call lead, then the service owner…