This page ships a Markdown twin for AI tools.

Developers

Everything on texuli.com an agent or a program can call: read-only JSON files with an OpenAPI description, an MCP server, and a CLI. No account and no key.

Base URL
https://texuli.com/api/v1/
Version
0.18.0, sent as X-API-Version
Description
OpenAPI 3.1 (/openapi.json)
Access
Anonymous and read-only (auth.md)
License
MIT

Quick start

curl -s https://texuli.com/api/v1/index.json
curl -s https://texuli.com/api/v1/themes.json
curl -sI https://texuli.com/api/health.json

The index lists every endpoint with its operationId. Every answer under /api/ is JSON, with CORS open to any origin.

Endpoints

Each endpoint reads a file the build writes: the edge serves a /api/v1/ path from the file the site itself fetches, byte for byte. Pin the versioned path, because the site file follows the site.

GET endpoints under /api/v1/
EndpointoperationIdWhat it holdsSite file
/api/v1/index.jsongetApiIndexV1The version, the limits, the deprecation policy and every endpoint with its operationId./api/index.json
/api/v1/health.jsongetHealthV1A static file written by the build: status, release line and build time. It proves the build is served, not that a Function runs./api/health.json
/api/v1/catalog.jsongetCatalogV1The agent catalog snapshot: every component manifest with props, examples, accessibility notes and the emit tiers that may place it./catalog/catalog.json
/api/v1/themes.jsonlistThemesV1Every library theme: id, name, description, category, collection, tags and its light swatches./theme-catalog.json
/api/v1/themes-dark.jsonlistThemeDarkSwatchesV1The dark-mode swatches of every theme that has a dark palette./theme-catalog-dark.json
/api/v1/theme-gallery.jsonlistThemeGalleryCardsV1Every theme with its WCAG AA contrast summary per mode and the key colors of each mode./theme-gallery.json
/api/v1/themes/{id}.jsongetThemeV1One theme's color explorer payload: its metadata and every color of each mode./theme-data/{id}.json
/api/v1/twins.jsongetTwinsManifestV1Every page route mapped to its Markdown twin (the page URL plus .md)./md-manifest.json

{id} is a theme id from /api/v1/themes.json. The OpenAPI document also describes POST /mcp as JSON-RPC.

MCP server

  • Remote: https://texuli.com/mcp, stateless Streamable HTTP (protocol 2025-11-25). POST JSON-RPC; no session, no sign-in. It serves 29 read-only tools.
  • Local: npx -y @texuli/mcp, over stdio, in any MCP host. It serves every tool, including the ones that need Node (ds.save, document.export, emoji.search, emoji.get, emoji.categories, emoji.variants). The @texuli/mcp package is on npm since 0.9.0.
  • Server card: /.well-known/mcp/server-card.json. The tools, resources and prompts are documented in mcp.md.
  • Setup for every host, every tool with its limits, and the site tools: Texuli MCP.

Command line

The texuli command of @texuli/tools runs the same operations as the MCP server: texuli <group> <verb>, with JSON input from stdin, --json or --file. In a project that has @texuli/tools installed, run npx texuli <group> <verb>; without installing it:

npx -p @texuli/tools texuli help
echo '{"query":"date"}' | npx -p @texuli/tools texuli catalog search

The <group> <verb> commands date from 0.9.0; the deck and document commands date from the 0.8 line. Every command: ops.md.

  • texuli catalog search
  • texuli catalog validate
  • texuli component get
  • texuli example search
  • texuli blueprint validate
  • texuli blueprint theme
  • texuli block list
  • texuli block schema
  • texuli theme search
  • texuli theme get
  • texuli theme preview
  • texuli ds validate
  • texuli ds compile
  • texuli ds contrast
  • texuli ds suggest
  • texuli ds import
  • texuli ds generate
  • texuli ds allow
  • texuli ds bundle
  • texuli ds diff
  • texuli ds preview
  • texuli ds save
  • texuli deck run
  • texuli document run
  • texuli document export
  • texuli md convert
  • texuli md render
  • texuli emoji search
  • texuli emoji get
  • texuli emoji convert
  • texuli emoji categories
  • texuli emoji variants
  • texuli site pages
  • texuli site read
  • texuli site search

Files for agents

Limits

Rate limits per client
SurfaceRateLimit-PolicyLimit
/api/"api";q=300;w=60300 requests per client per 60 seconds. GET, HEAD and OPTIONS only.
/mcp"mcp";q=60;w=6060 messages per client per 60 seconds (each message of a batch counts), batches of at most 10, bodies of at most 256 KB.

Answers carry RateLimit-Policy and RateLimit. Past a limit the answer is 429 with Retry-After: wait that many seconds. The limits are best-effort: each edge isolate counts on its own. They come from the Pages middleware; if a file is ever served without it, it still carries X-API-Version and CORS, but no rate-limit fields.

Errors

Every failed request under /api/ is RFC 9457 application/problem+json, never an HTML page. The error object adds a stable code (resource_not_found, method_not_allowed, rate_limited, internal_error), a message, a recovery hint and this page's URL.

{
  "type": "https://texuli.com/developers/#errors",
  "title": "Not Found",
  "status": 404,
  "detail": "No API resource exists at /api/v1/no-such-file.json.",
  "instance": "/api/v1/no-such-file.json",
  "error": {
    "code": "resource_not_found",
    "message": "No API resource exists at /api/v1/no-such-file.json.",
    "hint": "Fetch https://texuli.com/api/v1/index.json for every endpoint, or https://texuli.com/openapi.json for the OpenAPI description. Endpoint paths end in \".json\".",
    "documentation_url": "https://texuli.com/developers/"
  }
}

Versioning and deprecation

X-API-Version is the release line that built the files (0.18.0). Paths under /api/v1/ only change additively: new endpoints and new optional fields. A breaking change ships under /api/v2/, and /api/v1/ keeps serving for at least one release line (0.x minor) after that, with Deprecation (RFC 9745) and Sunset (RFC 8594) headers on every affected response. The unversioned paths are the files the site itself fetches: they follow the site and may change in any release, so pin /api/v1/.

Access and license

Every endpoint is anonymous and read-only: there is no account, key or token, and the OAuth documents under /.well-known/ are discovery stubs that say so (see auth.md). Texuli is open source under the MIT license; the source is on GitHub.