---
title: "Developers — julianleiss.com API"
description: "julianleiss.com exposes a small, read-only, anonymous API so agents and scripts can read the portfolio without scraping. No API keys, no rate plans, no sandbox needed: nothing here writes data or spends money."
canonical: https://julianleiss.com/developers
last-update: 2026-08-25
---

# Developers — julianleiss.com API

> julianleiss.com exposes a small, read-only, anonymous API so agents and scripts can read the portfolio without scraping. No API keys, no rate plans, no sandbox needed: nothing here writes data or spends money.

OpenAPI 3.1: https://julianleiss.com/openapi.json · MCP cards: https://julianleiss.com/.well-known/mcp/server-card.json, https://julianleiss.com/.well-known/mcp/docs/server-card.json · auth: https://julianleiss.com/auth.md

## Quickstart (30 seconds)

Fetch the OpenAPI spec at /openapi.json, or just call the endpoints below. Every response is JSON (or text/markdown for page twins); every error is JSON with code, message and hint. CORS is * and GET/POST are open.

```
curl -s 'https://julianleiss.com/ask?query=brand%20identity'
curl -s -X POST https://julianleiss.com/mcp \
  -H 'Content-Type: application/json' -H 'Accept: application/json, text/event-stream' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'
```

## Authentication

None. There is no authorization server, no API key and no OAuth flow; Authorization headers are ignored. The RFC 9728 metadata at /.well-known/oauth-protected-resource and the walkthrough at /auth.md say exactly that, so agents can stop looking.

## Endpoints

GET /feed.json — every published project (JSON Feed 1.1). GET /<slug>.md — markdown twin of a project page. GET|POST /ask — NLWeb 0.55 conversational search (JSON, or SSE with prefer.streaming). POST /mcp — MCP Streamable HTTP, portfolio tools (list_projects, get_project, get_profile, get_pricing, get_availability, prepare_contact_brief). POST /mcp/docs — MCP Streamable HTTP, documentation tools (list_docs, search_docs, read_doc). POST /a2a — A2A 0.3 JSON-RPC (message/send). Full schemas: /openapi.json.

## MCP

Two stateless Streamable-HTTP servers. Product: https://julianleiss.com/mcp (also at /.well-known/mcp) — card at /.well-known/mcp/server-card.json. Documentation: https://julianleiss.com/mcp/docs — card at /.well-known/mcp/docs/server-card.json. Both list at /.well-known/mcp.json. Add either to Claude, Cursor or any MCP client as a remote HTTP server with no auth.

```
{
  "mcpServers": {
    "julianleiss-portfolio": { "url": "https://julianleiss.com/mcp" },
    "julianleiss-docs": { "url": "https://julianleiss.com/mcp/docs" }
  }
}
```

## Errors

Application errors are JSON: NLWeb failures use {_meta:{response_type:'failure'}, error:{code,message}}; MCP and A2A use JSON-RPC 2.0 error objects (code, message, data.hint); unknown /api/* paths return HTTP 404 with a JSON body. HTTP 429 from the CDN carries Retry-After.

## Sandbox / test mode

There is no separate sandbox because there is nothing to break: every endpoint is read-only and idempotent, and prepare_contact_brief only returns text plus a mailto: link — it never sends anything. Point your tests at production. If you need a throwaway host, every Vercel preview deployment of the site exposes the same endpoints.

## Rate limits and etiquette

No application-level limits; the CDN applies generic abuse protection. Cache markdown twins (Vary: Accept, User-Agent) and prefer /llms-full.txt over crawling. Please don't use the content for model training (robots.txt Content-Signal: ai-train=no).

## Agent skill and source

A ready-made Agent Skill, plugin.json and this documentation's source live at https://github.com/julianleiss/agent-skills — install with npx skills add julianleiss/agent-skills. Discovery files: /.well-known/ai-catalog.json, /.well-known/agent-skills/index.json, /.well-known/api-catalog, /.well-known/agent-card.json.

---

Machine-readable index: [llms.txt](https://julianleiss.com/llms.txt) · [sitemap.xml](https://julianleiss.com/sitemap.xml) · [feed.json](https://julianleiss.com/feed.json)
Pages: [Home](https://julianleiss.com/) · [Work](https://julianleiss.com/work) · [About](https://julianleiss.com/about) · [Contact](https://julianleiss.com/contact) · [FAQ](https://julianleiss.com/faq) · [Pricing](https://julianleiss.com/pricing) · [Privacy](https://julianleiss.com/privacy) · [Developers](https://julianleiss.com/developers)