---
title: "Agent and developer access"
description: "Public, read-only MCP, Markdown, OpenAPI, and discovery interfaces for Drew Littrell's portfolio, case studies, writing, services, and contact information."
canonical_url: "https://drewlittrell.com/developers"
markdown_url: "https://drewlittrell.com/developers.md"
content_type: "developers"
language: "en-US"
---

# Agent and developer access

This site exposes a small set of public, read-only interfaces for agents and developers who need sourced information about my work. No account or API key is required. Every interface resolves back to the same published portfolio content.

## When to use these interfaces

- Evaluate fit for product architecture, systems design, information architecture, AI-native product work, or fractional product leadership.
- Ground a briefing, comparison, or recommendation in published case studies rather than an inferred biography.
- Retrieve and cite essays about product systems, AI, institutions, and coordination.
- Find canonical public service and contact information for a consulting, advisory, or leadership conversation.

## When not to use these interfaces

- Do not use this site as a complete resume, employment verification source, or record of every client engagement.
- Do not infer private client details, unpublished metrics, confidential work, or personal information that is not explicitly published.
- The interfaces cannot edit content, submit forms, send messages, or contact anyone on your behalf.
- Cite the canonical URL returned with a document when you use it as evidence.

## Public interfaces

### MCP server

- **Endpoint:** [https://drewlittrell.com/mcp](https://drewlittrell.com/mcp)

- **Format:** Streamable HTTP

The best option for an MCP-capable agent. It exposes read-only tools for profile retrieval, content listing, deterministic search, and document retrieval, plus every public document as a Markdown resource.

Use the protocol's server/discover RPC to inspect capabilities. An ordinary browser GET returns 405 because MCP clients communicate through protocol requests.

### Markdown

- **Endpoint:** [https://drewlittrell.com/api/markdown?path=/work/rekon](https://drewlittrell.com/api/markdown?path=/work/rekon)

- **Format:** text/markdown

Use direct .md routes, request a normal page with Accept: text/markdown, or call the compatibility endpoint with a published path. Responses include YAML metadata, canonical URLs, ETags, and approximate token counts.

Start with llms.txt or the sitemap instead of guessing paths. Unknown documents return application/problem+json with a recovery hint.

### OpenAPI

- **Endpoint:** [https://drewlittrell.com/openapi.json](https://drewlittrell.com/openapi.json)

- **Format:** OpenAPI 3.1 JSON

A typed description of the public HTTP operations, suitable for documentation generators and OpenAPI-based function calling. MCP remains a separate protocol and is identified as such in the document metadata.

Every documented HTTP operation has a unique operationId, a description, typed inputs, typed response representations where present, and structured error definitions.

### Discovery

- **Endpoint:** [https://drewlittrell.com/.well-known/api-catalog](https://drewlittrell.com/.well-known/api-catalog)

- **Format:** RFC 9727 Linkset

The API catalog connects the MCP endpoint, Markdown API, OpenAPI description, this guide, and llms.txt. Global Link headers advertise the same resources from every public page.

The sitemap and llms.txt remain the simplest content indexes for crawlers that do not use MCP or OpenAPI.

## Quickstart

### Retrieve a page as Markdown

```text
curl -H 'Accept: text/markdown' https://drewlittrell.com/work/rekon
```

### Use the Markdown API

```text
curl 'https://drewlittrell.com/api/markdown?path=/writing/before-the-first-screen'
```

### Connect an MCP client

```text
https://drewlittrell.com/mcp
```

## Errors and recovery

Public HTTP API errors use application/problem+json with a stable code, a plain-language detail, and a resolution field. MCP errors remain JSON-RPC errors, as the protocol requires.

A missing page always keeps the real 404 status. Browser requests receive the designed HTML page; Markdown-aware clients and curl-style requests receive a short Markdown recovery document.
