> ## Documentation Index
> Fetch the complete documentation index at: https://editor.pascal.app/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Agent discovery

> The machine-readable documents and conventions that let an AI agent find, read and call Pascal without a person pointing it there: Markdown pages, llms.txt, catalogs, MCP discovery, skills and WebMCP.

An agent that lands on `editor.pascal.app` from a search result, a link or a person's
request can find everything it needs from the site itself. This page lists what Pascal
publishes and how to check each piece with `curl`.

## Read pages as Markdown

The homepage and the contact page have Markdown twins. Pascal serves them when the request
asks for Markdown, when a user-initiated assistant fetches the page (`ChatGPT-User`,
`Claude-User`, `Perplexity-User`), or on `/?mode=agent`. Browsers keep getting HTML, and
both answers carry `Vary: Accept, User-Agent`.

```bash theme={null}
curl -sS -i -H 'Accept: text/markdown' https://editor.pascal.app/
curl -sS https://editor.pascal.app/index.md
curl -sS https://editor.pascal.app/contact.md
```

Each HTML page advertises its twin with `<link rel="alternate" type="text/markdown">` and the
same `Link` response header. A Markdown request for a path that doesn't exist answers `404`
with a Markdown body that links the docs, `/llms.txt` and the sitemap.

| Document | What it holds |
| - | - |
| [`/llms.txt`](https://editor.pascal.app/llms.txt) | Routing index: when to use Pascal, instructions for agents, every guide and interface |
| [`/agents.md`](https://editor.pascal.app/agents.md) | When to use Pascal and how an agent should call it |
| [`/auth.md`](https://editor.pascal.app/auth.md) | How an agent authenticates: OAuth, API keys, agent accounts and claims |
| [`/pricing.md`](https://editor.pascal.app/pricing.md) | Plans, credit packs and what each hosted service costs |
| [`/docs/llms.txt`](https://editor.pascal.app/docs/llms.txt) | The documentation index |
| [`/changelog/llms.txt`](https://editor.pascal.app/changelog/llms.txt) | Every changelog entry, newest first |

## Catalogs and well-known documents

| Path | Standard | What it lists |
| - | - | - |
| [`/.well-known/api-catalog`](https://editor.pascal.app/.well-known/api-catalog) | RFC 9727 linkset | Every interface with its description and documentation |
| [`/.well-known/ard.json`](https://editor.pascal.app/.well-known/ard.json) | [Agentic Resource Discovery](https://agenticresourcediscovery.org/) | The MCP server, the Scene API, the public skills and the API catalog, with sample queries. The same document is served at `/.well-known/ai-catalog.json` and linked from every page with `rel="ai-catalog"`. |
| [`/.well-known/mcp`](https://editor.pascal.app/.well-known/mcp) | MCP discovery | The hosted server, its transport, how to authorize, and every tool it lists with the scope that tool needs |
| [`/.well-known/mcp/server-card.json`](https://editor.pascal.app/.well-known/mcp/server-card.json) | MCP server card | The server's identity, transport, authentication, tools, resources and prompts |
| [`/.well-known/agent-skills/index.json`](https://editor.pascal.app/.well-known/agent-skills/index.json) | [Agent Skills Discovery](https://github.com/cloudflare/agent-skills-discovery-rfc) 0.2.0 | The public `pascal-3d` and `furniture-fit` skills, each with the SHA-256 digest of the `SKILL.md` it serves |
| [`/.well-known/oauth-protected-resource`](https://editor.pascal.app/.well-known/oauth-protected-resource) | RFC 9728 | The MCP resource, its authorization server and scopes |
| [`/api/openapi.json`](https://editor.pascal.app/api/openapi.json) | OpenAPI 3.1 | The Scene API and the Pascal API |

None of these needs a credential. Listing the MCP server's tools, scopes and annotations is
public; calling a tool is not. Discovery describes what Pascal offers, never an account's
entitlements.

```bash theme={null}
curl -sS https://editor.pascal.app/.well-known/mcp | jq '.servers[0].authorization'
curl -sS https://editor.pascal.app/.well-known/agent-skills/index.json | jq '.skills[].name'
```

## Structured data

Every page carries schema.org JSON-LD for Pascal (the `Organization`, with its contact
points and address), the site and the application. The homepage adds its FAQ (`FAQPage`)
and the open-source editor (`SoftwareSourceCode`); [`/contact`](https://editor.pascal.app/contact)
is a `ContactPage`.

## WebMCP in the browser

Pascal's pages register [WebMCP](https://github.com/webmachinelearning/webmcp) tools on
`document.modelContext` (falling back to `navigator.modelContext`) for agents that work in the
person's browser:

* **Homepage**: `get_pascal_agent_access` (the MCP URL and how to authorize),
  `search_community_projects` and `open_pascal_page`.
* **Editor**: the shared scene tools `list_levels`, `get_level_summary`, `get_walls`,
  `get_zones`, `get_node`, `find_by_type`, `create_room`, `add_wall`, `add_door`, `add_window`
  and `delete_node`. They run in the open project through the same executor as Pascal's
  assistant, so every edit lands in the person's undo history and is attributed to the agent.

A browser without WebMCP registers nothing.

## Errors and limits

API errors are JSON with a machine-readable code, every counted response carries
`RateLimit` headers, and deprecated endpoints announce themselves with `Deprecation` and
`Sunset`. See [Errors, rate limits and versioning](/docs/developers/errors).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.