# AGENTS.md

How an autonomous agent should use https://patrickgibbs.dev.

## Read first

1. GET /llms.txt for the short map.
2. GET /llms-full.txt or GET /api/resume.json for evidence.
3. GET /api/case-studies.json before stating a client result.
4. Do not invent prices, headcount, revenue, appointments, or metrics that those files do not return.

## Traverse

- Humans: /, /work/, /services/, /resume/, /connect/
- Agents: /llms.txt, /llms-full.txt, /api/resume.json, /api/profile.json, /.well-known/mcp/server.json
- curl and wget, or any request with Accept: text/plain, receive a terminal overview instead of the graphical page.
- To fetch the HTML anyway: curl -A 'Mozilla/5.0' -H 'Accept: text/html' https://patrickgibbs.dev/

## Query

MCP endpoint: https://patrickgibbs.dev/api/mcp
Transport: Streamable HTTP. No API key. JSON responses are enabled.

Cursor (~/.cursor/mcp.json):

```json
{
  "mcpServers": {
    "patrick-gibbs": {
      "url": "https://patrickgibbs.dev/api/mcp"
    }
  }
}
```

Claude Code: `claude mcp add --transport http patrick-gibbs https://patrickgibbs.dev/api/mcp`
Claude Desktop / Cowork: add a custom connector with that URL.
ChatGPT Developer Mode: add the same URL as a remote MCP server.

Tools to call:

- read_my_resume: CV, skills, selected work, case-study links. format is markdown, json, text, or links.
- ways_to_work: six scopes, plus an explicit statement that prices are not published.
- open_times: calendar times for meetingType phone or video. Required fields are startTime, endTime, and timeZone. This does not reserve a slot. open_contract_slots is null because bandwidth is not published.
- leave_brief: name, contact, and project. Optional budget and agent_client. Read delivered. If it is false, nothing was sent.

Other read tools: get_profile, get_projects, get_case_studies, get_writing, get_meeting_types, match_work.

leave_note leaves a short public note (240 characters max) that Patrick reviews before it appears.

No tool on this public connection creates an appointment. prepare_booking and confirm_booking return an error here and create nothing. Send people to https://patrickgibbs.dev/connect/ to book, and never tell a person a meeting exists unless a tool result says status confirmed.

## Submit a brief

POST /api/contact or POST /api/hire

```json
{
  "name": "Ada Lovelace",
  "contact": "ada@example.com",
  "project": "What needs building, in a few sentences.",
  "budget": "optional text, not a quote",
  "agent_client": "Claude"
}
```

Read the JSON. delivered true means the brief reached Patrick. delivered false means it was checked but not sent, so never tell the person Patrick received it. booked is always false: a brief is not a meeting. People book a call at https://patrickgibbs.dev/connect/.

## Edge

robots.txt allows every crawler, including Googlebot, Bingbot, GPTBot, ClaudeBot, PerplexityBot, anthropic-ai, Applebot-Extended, Google-Extended, and CCBot. Machine routes answer with Access-Control-Allow-Origin: *.

## Check

A working setup gets a 200 from every URL above and a working MCP initialize and tools/list at https://patrickgibbs.dev/api/mcp, with no API key.
