MCP server built in — your agents read the same docs you do

One versioned home for every product’s docs

Publish an OpenAPI spec, a PRD or a runbook once. Every repo, app and AI coding agent reads the current version from one place — scoped per project, versioned with semver, and never copied again.

Free for one product. Teams from $8 per member a month. Self-hosting is free forever.

backend publishes

openapi.yaml
2.4.0
bump
minor
changelog
Add GET /transactions

flutter app consumes

range
^2.0.0
status
ok
agent
check_updates → nothing breaking

Why not a wiki

Five things a wiki does not give you

A wiki stores pages. Docxoft stores contracts — and knows who depends on them.

Versioned contracts

Every document is semver-versioned and immutable per version. “Which version did we build against?” finally has an answer, with a changelog on every one.

Dependency edges

A project declares what it consumes and at what range. The graph knows the Flutter app reads the API spec — and tells you when that breaks.

Breaking-change signals

OpenAPI documents are diffed structurally. Removing an endpoint implies a major bump, and a lower one is refused with the change named.

Search by section

Full-text search returns the section — the operation, the heading — with a snippet and an anchor, not a 200 KB file to scroll.

Private by default

Workspace → Project → Document, with roles at every level. Out of scope is indistinguishable from nonexistent. Restricted documents go further, to named readers only.

Stored as authored

Markdown, YAML, JSON, text — exactly the bytes you wrote, rendered at read time. Agents get the source; people get a clean reader.

See every feature in detail

For coding agents

The door your agents actually use

An MCP server over streamable HTTP, authenticated with a scoped service token. Point Claude Code, Codex or Gemini CLI at it and they search, read, diff and draft — with exactly the reach the token’s owner has, re-checked on every call.

  • search_docs returns ranked sections with anchors, so an agent reads one endpoint instead of the whole spec.
  • get_changelog since: answers “is it safe to upgrade” in one call.
  • write_doc creates a draft nobody else sees. Publishing needs a token minted with publish.
  • Every call is audited with the token and the person who minted it.

.mcp.json in any consumer repository

{
  "mcpServers": {
    "docxoft": {
      "type": "http",
      "url": "https://docxoft.playxoft.com/mcp",
      "headers": {
        "Authorization": "Bearer ${DOCXOFT_TOKEN}"
      }
    }
  }
}

Open source

Run it yourself, on your own infrastructure

The same code Playxoft runs deploys to your own Cloudflare Workers, Neon Postgres and R2 bucket, with your own WorkOS environment for sign-in. No service of ours in the loop: secrets are plain bindings, billing has a no-op provider, and search is Postgres rather than a hosted cluster.

Cloudflare Workers

One deploy, global.

Neon + R2

Metadata and search in Postgres; bodies in object storage.

WorkOS AuthKit

Email, social and enterprise SSO, verified with public keys only.

Apache-2.0

Patent grant included. Fork it, run it, keep it.

FAQ

Questions people ask first

What is Docxoft?

Docxoft is a private, versioned document system for product teams. You publish OpenAPI specs, product requirements, runbooks and engineering standards once, and every repository, app and coding agent reads the current version from one place, scoped to the projects it is allowed to see.

How do coding agents read the docs?

Through an MCP server over streamable HTTP and a REST API, both authenticated with a scoped service token. An agent searches for a section, reads just that section, checks what changed since the version it holds, and writes back a draft if its token allows writing.

What does versioning mean here?

Every document is versioned with semver. A version is immutable, carries a required changelog entry, and for an OpenAPI document the bump is inferred from a structural diff — removing an endpoint cannot be published as a patch.

Is anything public?

No. Every read is authenticated and scoped to a workspace and project. A document outside your scope is indistinguishable from one that does not exist.

Can I self-host it?

Yes. The same code Playxoft runs deploys to your own Cloudflare Workers, Neon Postgres and R2 bucket with your own WorkOS environment, with every plan limit unbounded.

Ready to stop copying specs between repos?

Create a workspace in under a minute. No card needed.

Start freeCompare plansRead the blog