This page ships a Markdown twin for AI tools.
# Developers Source: https://texuli.com/developers/ # 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`)](/openapi.json) Access Anonymous and read-only ([auth.md](/auth.md)) License [MIT](https://github.com/DailybotHQ/texuli/blob/main/LICENSE) ## 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/ | Endpoint | operationId | What it holds | Site file | | --- | --- | --- | --- | | `/api/v1/index.json` | `getApiIndexV1` | The version, the limits, the deprecation policy and every endpoint with its operationId. | `/api/index.json` | | `/api/v1/health.json` | `getHealthV1` | A 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.json` | `getCatalogV1` | The 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.json` | `listThemesV1` | Every library theme: id, name, description, category, collection, tags and its light swatches. | `/theme-catalog.json` | | `/api/v1/themes-dark.json` | `listThemeDarkSwatchesV1` | The dark-mode swatches of every theme that has a dark palette. | `/theme-catalog-dark.json` | | `/api/v1/theme-gallery.json` | `listThemeGalleryCardsV1` | Every theme with its WCAG AA contrast summary per mode and the key colors of each mode. | `/theme-gallery.json` | | `/api/v1/themes/{id}.json` | `getThemeV1` | One theme's color explorer payload: its metadata and every color of each mode. | `/theme-data/{id}.json` | | `/api/v1/twins.json` | `getTwinsManifestV1` | Every 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`](/.well-known/mcp/server-card.json). The tools, resources and prompts are documented in [mcp.md](https://github.com/DailybotHQ/texuli/blob/main/packages/tools/docs/mcp.md). - **Setup for every host**, every tool with its limits, and the site tools: [Texuli MCP](/mcp-server/). ## 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](https://github.com/DailybotHQ/texuli/blob/main/packages/tools/docs/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 - [OpenAPI 3.1 description](/openapi.json): every endpoint above and POST /mcp. - [API index](/api/index.json): the /api/v1/ endpoints with their operationIds, as JSON. - [llms.txt](/llms.txt): the site guide for language models. - [llms-full.txt](/llms-full.txt): every component doc in one file. - [Markdown twins manifest](/md-manifest.json): every page and its .md twin, versioned at /api/v1/twins.json (or send Accept: text/markdown to a page URL). - [The Texuli skill](/skill/): install it in a coding agent. - [API catalog](/.well-known/api-catalog): RFC 9727 linkset. - [AI catalog](/.well-known/ai-catalog.json): the ARD resource catalog, npm packages included. - [auth.md](/auth.md): how agents access the site: anonymously. ## Limits Rate limits per client | Surface | RateLimit-Policy | Limit | | --- | --- | --- | | `/api/` | `"api";q=300;w=60` | 300 requests per client per 60 seconds. GET, HEAD and OPTIONS only. | | `/mcp` | `"mcp";q=60;w=60` | 60 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](/auth.md)). Texuli is open source under the [MIT license](https://github.com/DailybotHQ/texuli/blob/main/LICENSE); the source is on [GitHub](https://github.com/DailybotHQ/texuli).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 asX-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.jsonThe 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.
| Endpoint | operationId | What it holds | Site file |
|---|---|---|---|
/api/v1/index.json | getApiIndexV1 | The version, the limits, the deprecation policy and every endpoint with its operationId. | /api/index.json |
/api/v1/health.json | getHealthV1 | A 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.json | getCatalogV1 | The 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.json | listThemesV1 | Every library theme: id, name, description, category, collection, tags and its light swatches. | /theme-catalog.json |
/api/v1/themes-dark.json | listThemeDarkSwatchesV1 | The dark-mode swatches of every theme that has a dark palette. | /theme-catalog-dark.json |
/api/v1/theme-gallery.json | listThemeGalleryCardsV1 | Every theme with its WCAG AA contrast summary per mode and the key colors of each mode. | /theme-gallery.json |
/api/v1/themes/{id}.json | getThemeV1 | One theme's color explorer payload: its metadata and every color of each mode. | /theme-data/{id}.json |
/api/v1/twins.json | getTwinsManifestV1 | Every 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 (protocol2025-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/mcppackage 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 searchThe <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 searchtexuli catalog validatetexuli component gettexuli example searchtexuli blueprint validatetexuli blueprint themetexuli block listtexuli block schematexuli theme searchtexuli theme gettexuli theme previewtexuli ds validatetexuli ds compiletexuli ds contrasttexuli ds suggesttexuli ds importtexuli ds generatetexuli ds allowtexuli ds bundletexuli ds difftexuli ds previewtexuli ds savetexuli deck runtexuli document runtexuli document exporttexuli md converttexuli md rendertexuli emoji searchtexuli emoji gettexuli emoji converttexuli emoji categoriestexuli emoji variantstexuli site pagestexuli site readtexuli site search
Files for agents
- OpenAPI 3.1 description: every endpoint above and POST /mcp.
- API index: the /api/v1/ endpoints with their operationIds, as JSON.
- llms.txt: the site guide for language models.
- llms-full.txt: every component doc in one file.
- Markdown twins manifest: every page and its .md twin, versioned at /api/v1/twins.json (or send Accept: text/markdown to a page URL).
- The Texuli skill: install it in a coding agent.
- API catalog: RFC 9727 linkset.
- AI catalog: the ARD resource catalog, npm packages included.
- auth.md: how agents access the site: anonymously.
Limits
| Surface | RateLimit-Policy | Limit |
|---|---|---|
/api/ | "api";q=300;w=60 | 300 requests per client per 60 seconds. GET, HEAD and OPTIONS only. |
/mcp | "mcp";q=60;w=60 | 60 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.

