# info.summary
Read-only, anonymous API for the portfolio of Julián Leiss (designer, Buenos Aires).

# info.description
Projects, profile, pricing and availability of Julián Leiss, exposed as JSON Feed, NLWeb conversational search, two MCP servers and an A2A agent. No authentication, no write operations, no sandbox needed (every call is idempotent). Human docs: https://julianleiss.com/developers

# info.license.name
Content: all rights reserved; API usage free for reading and citing

# servers[].description
Production (read-only; safe to test against)

# paths./feed.json.get.description
Returns every published project with url, title, content_text (abstract), tags and date_published.

# paths./{slug}.md.get.description
Markdown version of /{slug}: YAML frontmatter (title, description, canonical, last-update) then the case study. Also served by requesting /{slug} with Accept: text/markdown.

# paths./{slug}.md.get.parameters[].description
Project slug (see /feed.json) or one of index, about, work, contact, faq, pricing, privacy, developers, agent

# paths./{slug}.md.get.responses.404.description
Unknown slug — markdown body listing every published project

# paths./ask.get.description
Natural-language search over the site. Same semantics as POST /ask; use ?query= and optional streaming=true for SSE.

# paths./ask.get.parameters[].description
true → text/event-stream with start/result/complete events

# paths./ask.get.responses.200.description
NLWeb answer or application-level failure

# paths./ask.post.description
NLWeb 0.55 request: {query:{text}, prefer:{streaming, mode}, meta:{version}}. Returns conversational_search results; prefer.streaming=true (or Accept: text/event-stream) streams SSE events start, result, error, complete.

# paths./ask.post.responses.200.description
NLWeb answer or application-level failure

# paths./mcp.post.summary
julianleiss-portfolio — MCP Streamable HTTP endpoint

# paths./mcp.post.description
Read-only MCP server for julianleiss.com: list and read Julián Leiss's design projects, profile, services, availability and pricing, and prepare a hiring brief. No authentication. JSON-RPC 2.0 over HTTP (stateless; send Accept: application/json, text/event-stream). Methods: initialize, tools/list, tools/call. Tools: list_projects — List published projects with slug, name, title, year, type, entity and tags. Optional filters: tag (capability, e.g. 'Identity'), year. | get_project — Full case study for one project by slug: year, type, client, industry, role, abstract, capabilities, tools, credits, URL. Same content as /<slug>.md. | get_profile — Biography, design rationale, work experience, education, teaching, and contact details of Julián Leiss (same as /about.md). | get_pricing — Hourly rate (USD 50–100/h), engagement formats (sprint, project, retainer) with indicative budgets, quote factors and payment terms. | get_availability — Current availability, time zone, languages, engagement lengths accepted, and how to get in touch. | prepare_contact_brief — Turn a project idea into a structured brief plus a ready-to-send mailto: link to hello@leiss.site. Does not send anything itself.

# paths./mcp/docs.post.summary
julianleiss-docs — MCP Streamable HTTP endpoint

# paths./mcp/docs.post.description
Documentation MCP server for julianleiss.com: search and read every markdown page of the site (home, about, FAQ, pricing, privacy, project case studies). No authentication. JSON-RPC 2.0 over HTTP (stateless; send Accept: application/json, text/event-stream). Methods: initialize, tools/list, tools/call. Tools: list_docs — List all markdown documents on the site with path, title and description. | search_docs — Full-text search across the site's markdown pages. Returns ranked matches with path, title, score and a snippet. | read_doc — Return the full markdown of one document by path (e.g. '/about.md', '/plexa.md').

# paths./a2a.get.description
Discovery helper: returns the agent-card URL and the JSON-RPC methods this endpoint accepts.

# paths./a2a.get.responses.200.description
Pointer to the agent card and supported methods

# paths./a2a.post.description
Send a user message; the agent answers synchronously with a completed Task whose artifacts contain the answer. tasks/get and tasks/cancel return -32001 (nothing is stored). Agent card: /.well-known/agent-card.json

# paths./a2a.post.requestBody.content.application/json.example.params.message.parts[].text
Is Julián available for a brand identity project?

# components.schemas.McpToolInputs.description
inputSchema of every MCP tool, keyed by server.tool

# components.schemas.McpToolInputs.properties.portfolio.list_projects.description
List published projects with slug, name, title, year, type, entity and tags. Optional filters: tag (capability, e.g. 'Identity'), year.

# components.schemas.McpToolInputs.properties.portfolio.get_project.description
Full case study for one project by slug: year, type, client, industry, role, abstract, capabilities, tools, credits, URL. Same content as /<slug>.md.

# components.schemas.McpToolInputs.properties.portfolio.get_profile.properties.section.description
Return only one section of the profile, or all

# components.schemas.McpToolInputs.properties.portfolio.get_profile.description
Biography, design rationale, work experience, education, teaching, and contact details of Julián Leiss (same as /about.md).

# components.schemas.McpToolInputs.properties.portfolio.get_pricing.description
Hourly rate (USD 50–100/h), engagement formats (sprint, project, retainer) with indicative budgets, quote factors and payment terms.

# components.schemas.McpToolInputs.properties.portfolio.get_availability.description
Current availability, time zone, languages, engagement lengths accepted, and how to get in touch.

# components.schemas.McpToolInputs.properties.portfolio.prepare_contact_brief.description
Turn a project idea into a structured brief plus a ready-to-send mailto: link to hello@leiss.site. Does not send anything itself.

# components.schemas.McpToolInputs.properties.docs.list_docs.properties.kind.description
Filter: site pages, project case studies, or all

# components.schemas.McpToolInputs.properties.docs.list_docs.description
List all markdown documents on the site with path, title and description.

# components.schemas.McpToolInputs.properties.docs.search_docs.description
Full-text search across the site's markdown pages. Returns ranked matches with path, title, score and a snippet.

# components.schemas.McpToolInputs.properties.docs.read_doc.description
Return the full markdown of one document by path (e.g. '/about.md', '/plexa.md').