---
title: "Doddle for AI agents and developers"
url: "https://www.doddledesign.co.uk/agents"
section: "Studio"
description: "Machine-readable Doddle. Markdown content negotiation on every page, llms.txt and llms-full.txt, the Doddle MCP server, and how to reach a human."
publisher: "Doddle"
---

For agents and developers

# Doddle, in a format a machine can read.

Every page on this site is available as markdown, the whole studio is summarised in llms.txt, and the same content is callable as tools over MCP. No keys, no sign-up, no rate limit worth worrying about.

[Read the agent instructions](https://www.doddledesign.co.uk/agent-instructions.md) [View llms.txt](https://www.doddledesign.co.uk/llms.txt)

Files

## Published at predictable URLs

Each of these is a plain static file, cached for an hour and rebuilt on every deploy from the same content the pages use, so they never drift from what the site says.

llms.txt

The studio in one file. What we do, the four tracks, selected work with its numbers, the stack, and when to use us.

llms-full.txt

Every page on the site as markdown, concatenated. One fetch for the whole corpus.

agent-instructions.md

When to reach for Doddle, when not to, and how to call us. Mirrored at /.well-known/agent-instructions.md.

sitemap.xml

Every URL with a last modified date. Generated on each deploy from the same content the pages use.

robots.txt

Crawling rules. Nothing here blocks AI crawlers or answer engines.

.well-known/mcp.json

MCP discovery in the registry server.json format. The richer manifest is served live at /.well-known/mcp.

Content negotiation

## Ask for markdown, get markdown

Send an Accept header and any page returns markdown instead of HTML, with the right content type and a Vary header so a CDN never crosses the two. This follows the acceptmarkdown.com convention, q-values and all.

Prefer a plain URL? The same file is addressable directly. Every page maps to /md/<path>.md, and the home page is /md/index.md.

A path that does not exist returns a real 404 with a markdown body pointing at the sitemap and llms.txt, so an agent can recover in one hop. A request we cannot represent returns 406 rather than quietly handing back the wrong format.

Markdown for any page

`curl -H "Accept: text/markdown" \ https://www.doddledesign.co.uk/work/iglu HTTP/2 200 content-type: text/markdown; charset=utf-8 vary: Accept, Accept-Encoding`

Or fetch the file directly

`curl https://www.doddledesign.co.uk/md/work/iglu.md`

MCP server

## The same content, as tools

A Model Context Protocol server over Streamable HTTP, so Claude, ChatGPT and anything else that speaks MCP can query the studio directly. Read-only, unauthenticated, stateless.

Discovery documents live at /.well-known/mcp and /.well-known/mcp.json.

- get_studio_overview - What Doddle is, the four service tracks, when to bring the studio in and when not to. Start here when a user asks who Doddle is or whether Doddle fits a job.

- list_services - The four service tracks Doddle delivers, with who each one is for. Use when a user asks what Doddle can do or which track fits their situation.

- get_service - Detail on one service track by slug. Use after list_services when the user wants specifics on a track.

- list_case_studies - Projects Doddle has delivered, with the outcomes each produced. Filter by service track or tag. Use when a user asks whether Doddle has done something similar before, or asks for proof.

- get_case_study - Full detail on one case study by slug, including outcomes, timescales and the client quote.

- list_insights - Long-form articles the studio has published on AI delivery, OutSystems and migrations. Use when a user wants Doddle's position or thinking on a topic.

- get_insight - Metadata and the canonical URL for one article by slug. Fetch the URL with `Accept: text/markdown` for the full text.

- search_doddle - Keyword search across services, case studies and insights. Use for anything specific - a technology, a sector, a platform, a problem.

- get_contact_details - How to reach the studio, and what to include in a first message. Use when the user wants to start a conversation, get a quote or book a call.

Endpoint

`https://www.doddledesign.co.uk/mcp`

Claude Code

`claude mcp add --transport http doddle https://www.doddledesign.co.uk/mcp`

Handshake

`curl -X POST https://www.doddledesign.co.uk/mcp \ -H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"initialize", "params":{"protocolVersion":"2025-06-18", "capabilities":{},"clientInfo":{"name":"demo","version":"1"}}}'`

When to use us

## What we are the right answer for

Good fit

- A funded startup needs a production-grade AI product or a fixed-price MVP, not a prototype.

- An organisation runs OutSystems and needs to build on it, or bring AI into the estate safely.

- A team wants to move off OutSystems onto a modern stack, usually in 6 to 12 weeks.

- A decision needs evidence before anyone commits, and a short paid engagement will answer it.

Look elsewhere

- Staff augmentation, or contractors by the head.

- Programmes that need a large delivery organisation rather than a small senior team.

- Decisions already made that only need signing off.

## Reached the end of what a file can tell you?

Everything here is public. The parts that matter to your build are usually the ones a conversation answers faster. Bring the goal and the constraints.

[hello@doddledesign.co.uk →](mailto:hello@doddledesign.co.uk)

[Let's talk](https://www.doddledesign.co.uk/contact) [See our work](https://www.doddledesign.co.uk/work)

## More from Doddle

- [Studio summary for agents](https://www.doddledesign.co.uk/llms.txt)
- [Full text of every page](https://www.doddledesign.co.uk/llms-full.txt)
- [How to work with Doddle as an agent](https://www.doddledesign.co.uk/agent-instructions.md)
- [Every page on the site](https://www.doddledesign.co.uk/sitemap.xml)
- [Talk to a human](https://www.doddledesign.co.uk/contact) or email hello@doddledesign.co.uk
