---
title: "For agents and developers"
description: "Where to find Pyn Help as markdown, JSON and structured data, how the URLs map to pages, and how to cite one."
tableOfContents:
  maxHeadingLevel: 3
---

Everything on Pyn Help is also published in forms a model or a script can read without parsing HTML. All of it is generated from the same source files as the pages, at the same build, so the forms never disagree.

## Indexes

| URL | What it is |
| --- | --- |
| [`/llms.txt`](https://support.pynhq.com/llms.txt) | One line per page with its URL, description and markdown URL, grouped by product area in sidebar order. Start here. |
| [`/llms-full.txt`](https://support.pynhq.com/llms-full.txt) | Every page as plain markdown in one file, in sidebar order. Each page opens with `# Title` and `Source: <url>`. |
| [`/api/stories.json`](https://support.pynhq.com/api/stories.json) | Every page's `slug`, `url`, `markdownUrl`, `title`, `description` and story frontmatter, plus `generatedAt` and `siteVersion`. |
| [`/api/intercom-map.json`](https://support.pynhq.com/api/intercom-map.json) | Every article of the previous help centre (intercom.help/pyn) that a page here replaces or draws on, with the pages that reference it. |
| [`/api/media.json`](https://support.pynhq.com/api/media.json) | The screenshot and video manifest with an absolute `url` per entry and whether it is `captured` yet. |
| [`/sitemap-index.xml`](https://support.pynhq.com/sitemap-index.xml) | The sitemap, also named in [`/robots.txt`](https://support.pynhq.com/robots.txt). |

## URL patterns

- A page lives at `/<area>/<feature>/` (or `/<area>/` for an area overview), always with a trailing slash. Example: `/flows/automations/`.
- Its markdown twin is the same path with `.md` instead of the trailing slash: `/flows/automations.md`. The root page is `/index.md`. Every HTML page declares it with `<link rel="alternate" type="text/markdown" href="...">`.
- The `slug` in `stories.json` is the path without slashes at either end: `flows/automations`. The root page's slug is empty.
- Screenshots and videos are served from `/media/<area>/<feature>/<id>.png` or `.mp4`. In markdown they appear as `![caption](url)` and `[Video: caption](url)`.

## The markdown

A twin starts with the page's frontmatter as a YAML block, exactly as written in the source, then the body as plain markdown: imports and MDX components are gone, asides are block quotes opening with **Note**, **Tip** or **Caution**, steps are an ordered list under `## Steps`, and links are absolute.

## Frontmatter contract

Beyond `title` and `description`, a story page may carry these fields; they are validated at build time and copied into `stories.json` and the page's JSON-LD.

| Field | Meaning |
| --- | --- |
| `area`, `feature` | The product area and feature the page belongs to, matching its directory. |
| `appPath` | The route in the Pyn app the task starts from, for example `/flows/home`. It never includes a workspace id. |
| `audience` | `admin`, `manager` or `employee`: who the page is written for. |
| `lastVerified` | The date (`YYYY-MM-DD`) someone last walked the steps against the live app. |
| `version` | The release-notes date or app version the page was verified against. |
| `screenshots`, `video` | Media ids, resolved through `/api/media.json`. |
| `related` | Slugs of related pages. |
| `intercom` | The articles of the previous help centre the page replaces or draws on: `id`, `title`, `url` and a short `note` such as `replaces` or `Pyn 1 article`. The page lists them under "Related Intercom articles"; the markdown twin ends with the same list. |

## Structured data

Each page's `<head>` holds one `application/ld+json` graph with a `WebSite`, a `TechArticle` (headline, description, audience, version, `dateModified` from `lastVerified`, media, and an `encoding` entry pointing at the markdown twin) and a `BreadcrumbList`. A page whose body has an ordered list under `## Steps` also carries a `HowTo` with one `HowToStep` per item, and a page in the FAQ area whose H2s end in a question mark carries a `FAQPage`.

## How to cite a page

Cite the HTML URL, which is the stable one, and name the page by its `title`:

```text
Automations (Pyn Help), https://support.pynhq.com/flows/automations/
```

When you need to say how current the guidance is, quote `lastVerified` and `version` from the frontmatter. If a page you need is missing, `/llms.txt` is the complete list; a URL that is not in it does not exist.
