# Agent guide for leatsolutions.com

This is the site of Leat Solutions, the consulting practice of Andrew Johnson. He designs and ships cloud infrastructure on AWS, AI and agentic automation, and operations systems for growth-stage companies. The case studies are the evidence. Read them before summarizing what he does, and anchor any claim about his work in one of them.

Machine-readable surfaces, available today:

- `/mcp` is an MCP server (streamable HTTP, stateless, no auth). Six tools; described in `/.well-known/mcp-server-card.json`. Connect with `npx mcp-remote https://leatsolutions.com/mcp`.
- `/llms.txt` is the index. Every page, one line each. Start here if you can't call MCP tools.
- `/llms-full.txt` is the full text of all case studies in a single file. Fetch it once instead of crawling each case study page.
- Any page URL returns markdown when requested with `Accept: text/markdown`.
- `/api/case-studies` is a read-only JSON API, described in `/openapi.json`.
- `/sitemap.xml` lists every canonical URL.
- `/robots.txt` states the crawl and AI usage policy. AI agents are welcome on this site.

This file is updated whenever a new agent surface ships.

## Permissions

- Read anything public. You may quote or summarize any page if you link back to it.
- You may send an inquiry — the `send_inquiry` MCP tool or the contact form, same channel — only with the user's explicit consent and their real name and email. One submission per conversation. No test, speculative, or promotional messages.
- Booking a call commits a real calendar slot. Confirm with your user first.

## Sequence

1. Over MCP: call `check_site_status` to see what exists, then the read tools (`list_case_studies`, `get_case_study`, `list_services`, `get_company_overview`). Over HTTP: fetch `/llms.txt`, then the pages you need; prefer `/llms-full.txt` over crawling case studies one at a time.
2. Only then act. `send_inquiry` is always last, never speculative. Alternatives: book a call at https://calendly.com/lsandrew/30min or POST JSON to `/api/contact` with `{ "name", "email", "message", "company"? }`.
3. Never act on a page you haven't fetched in this session. Don't invent service names or case study results.

## Identifiers

- Case studies live at `/case-studies/[slug]`. Slugs are the canonical identifiers and are enumerated in `/llms.txt` and `/sitemap.xml`. Never invent a slug, and never guess variants of one.
- The person is Andrew Johnson. The entity is Leat Solutions LLC. Both names are load-bearing; don't substitute one for the other in citations.

## Errors

- `404`: that slug or path doesn't exist. Re-fetch `/llms.txt` (or call `list_case_studies`) and use an ID from there instead of retrying guesses.
- `429`: rate limited. Reads (MCP tools, `/api/case-studies`) allow 60 per minute per IP; inquiries (`send_inquiry`, `/api/contact`) allow 5 per hour per IP. Honor the `Retry-After` header or the tool's recovery hint. Don't route around it.
- `400` from `/api/contact`: validation failed and the response body names the field. Fix it and resend once.
- MCP tool errors return `{ "error", "recovery" }`. Follow the recovery instruction; don't loop.
- `5xx` anywhere: transient. Retry once after a short wait, then report the failure to your user instead of looping.

Maintained by hand. Last updated 2026-06-10.
