Public information · open access
For people.
And their agents.
The same curated facts, without the interface. No account, credentials or private data.
Start with a document
Portfolio Markdown and versioned JSON are the simplest ways to read everything. Each project also has a Markdown URL. llms.txt is a proposed discovery convention, not a promise that agents find this site automatically.
Connect over MCP
Use a Streamable HTTP client with this endpoint:
https://owencdev.info/mcpThe official TypeScript SDK server 2.2.0 provides stateless legacy initialization and modern per-request metadata. POST is supported; GET and DELETE return 405. JSON or server-sent event responses are negotiated by the SDK. This endpoint is not a browser chat interface.
For a client with MCP settings, add a remote Streamable HTTP server using the URL above. Client-specific configuration varies; the repository’s npm run test:mcp -- http://localhost:3000/mcp command uses the official SDK client as a reproducible local check.
What can be read
search_projects(query, limit?): deterministic project search; up to 200 characters and 1–5 results.get_project(slug): one of the five published case studies, including status, limitations and source URL.- Resources:
portfolio://profile,portfolio://experience,portfolio://projectsandportfolio://projects/{slug}.
Public, not unrestricted
Only manually curated portfolio content is available. There are no write tools, arbitrary URL fetches, filesystem access, credentials or employer-private materials. Descriptions are owner-supplied, not independent verification. Confidential work and projects in development are labelled as such.
Requests are limited to 16 KiB. Send one MCP message per HTTP request; JSON arrays and batches receive HTTP 400 before execution. Current single-message responses are tested below 64 KiB. A single process-wide bucket allows 120 requests per minute, returning 429 with Retry-After when exhausted. It is neither per-client nor distributed protection; a production deployment needs platform-level rate-limit review.
Host and Origin hostnames must match the configured site or localhost, 127.0.0.1 or [::1]. Ports are ignored by the SDK guards. Non-browser clients may omit Origin but must supply a valid Host. No wildcard CORS is used. MCP responses are not cached; request content, IPs and headers are not logged by this application.