Diffinery
Agents and AI: Docs for AI agents
Docs / Agents and AI

Docs for AI agents

How AI agents and tools can fetch these docs as Markdown, llms.txt, llms-full.txt, llms-small.txt, per-section files, OpenAPI and over MCP.

These docs are written to be read by AI agents as well as people. Every page is available as plain Markdown, the whole set is available as one file, the REST API is described in OpenAPI, and agents connected over MCP can search and read the docs with tools. The URLs below need no account; the MCP tools need a Diffinery token, like every MCP call.

Formats

WhatURLContent type
Index of every page, the site's and the docs' (the llms.txt convention)https://diffinery.com/llms.txttext/plain
Every page, the site's and the docs', in one Markdown filehttps://diffinery.com/llms-full.txttext/plain
The site's pages (what Diffinery is, comparisons, performance, FAQ) and the essential docs pages (overview, quickstart, concepts, the guides, compatibility with GitHub Actions and connecting AI apps) in one smaller filehttps://diffinery.com/llms-small.txttext/plain
One docs section: its index, and all its pages in one filehttps://diffinery.com/docs/<section>/llms.txt and /docs/<section>/llms-full.txt, for example /docs/actions/llms-full.txttext/plain
One page as Markdownhttps://diffinery.com/docs/<page>.md, for example /docs/actions/workflow-syntax.mdtext/markdown
The overview as Markdownhttps://diffinery.com/docs/index.mdtext/markdown
The site's other pages as Markdown: the home page, product pages and comparisons with other productshttps://diffinery.com/index.md, and .md added to any page, for example /compare/github.mdtext/markdown
REST API as OpenAPI 3.1https://diffinery.com/docs/api/openapi.jsonapplication/json
Search index used by the docs search boxhttps://diffinery.com/docs/search.jsonapplication/json

The section names are the docs sections in lowercase with hyphens: get-started, guides, connect-ai-apps, accounts, repositories, collaboration, actions, packages, agents-and-ai, security, administration and reference. llms.txt links each section's file under its heading.

/docs/llms.txt and /docs/llms-full.txt redirect to the root files. These responses send Access-Control-Allow-Origin: *, so browser-based tools can fetch them too.

A .md URL for a page that doesn't exist returns 404 with a short Markdown body that points to llms.txt.

Markdown pages

Each Markdown page starts with the page title as a level-1 heading, its one-line description as a blockquote and its source URL, followed by the page body:

# Merge queue

> Merge pull requests in order, each tested on top of the base branch and the pull requests ahead of it, with merge_group workflows and required checks.

Source: https://diffinery.com/docs/collaboration/merge-queue

...

Links inside Markdown pages are absolute (https://diffinery.com/docs/...), so they work outside the site. Add .md to any of them to fetch that page as Markdown too.

Content negotiation

A request for an HTML docs URL with Accept: text/markdown gets the Markdown version instead, so an agent can fetch the URL it was given:

curl -H "Accept: text/markdown" https://diffinery.com/docs/collaboration/pull-requests

HTML pages also point at their Markdown version with <link rel="alternate" type="text/markdown"> in the page head and a Link response header.

Copy page

Every page in the browser has View as Markdown and Copy page buttons. Copy page puts the page's Markdown on your clipboard, ready to paste into a chat with an AI assistant.

Which format to use

  • Answering one question: fetch llms.txt, pick the page from its one-line descriptions, then fetch that page's .md URL. This keeps the context small.
  • Explaining or comparing Diffinery: load llms-small.txt. It holds the product, comparison, FAQ and company pages with their dates and sources, plus the essential docs, in a fraction of the size of llms-full.txt.
  • Working on one area for a while (for example, porting CI): load that section's file, such as the Actions section.
  • Working on Diffinery broadly: load llms-full.txt once. It holds every page in reading order, separated by ---, including the generated REST API reference, so it's large.
  • Calling the REST API: read the OpenAPI document or the REST API reference. Both are generated from the server's router, so every endpoint that exists is listed. Use the REST API guide for authentication, errors and pagination.
  • Using MCP: the MCP tool reference is generated from the server's tool list and matches tools/list exactly.

Searching and reading docs over MCP

An agent connected to the Diffinery MCP server (https://diffinery.com/mcp, with Authorization: Bearer dfy_...) has two read-only tools for the docs. They work with a token of any scope:

ToolArgumentsReturns
search_docsqueryUp to 8 matching pages, docs and site pages (comparisons, performance, FAQ) alike, each with page, title, section, the matching heading, url, markdown_url and a snippet.
read_docspage: a slug like actions/workflow-syntax, index, a docs URL (a .md suffix or #anchor is ignored), or a site page's path or URL like /compare/githubpage, title and markdown: the page in the same format as its .md URL. An unknown page returns an error that lists every slug and site page.
{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"search_docs","arguments":{"query":"workflow_dispatch inputs"}}}

Every term in the query must appear in a page for it to match. Title matches rank highest, then section headings, then body text. See MCP for connecting a client.

Pointing a coding agent at the docs

Add a line like this to your agent's instructions (CLAUDE.md, AGENTS.md, .cursorrules or similar) in repositories hosted on Diffinery:

This repository is hosted on Diffinery (https://diffinery.com), a GitHub-compatible forge.
Docs index: https://diffinery.com/llms.txt (append .md to any docs URL for Markdown).
CI uses GitHub Actions syntax; check https://diffinery.com/docs/actions/compatibility.md
before using a GitHub-only feature. gh works after `diffinery auth setup-gh`; the
diffinery CLI and the MCP server at https://diffinery.com/mcp work too.

Staying current

The docs ship with the server: each deploy of Diffinery serves the docs for exactly that version, and the API, CLI and MCP references are generated from the code (the API and MCP references at runtime, the CLI reference when the server is built), so they can't fall behind it. The Markdown, llms.txt, llms-full.txt, llms-small.txt, per-section, OpenAPI and search index responses are cached for at most five minutes. CI checks on every change that each page builds, that every link and anchor resolves, and that every endpoint and tool appears in the references.