{"openapi":"3.1.0","info":{"title":"Josué Guevara Portfolio Public Interfaces","version":"1.0.0","description":"Read-only machine-readable interfaces for the personal portfolio of Josué Guevara at jjjjguevara.vercel.app. This is not a commercial product API and has no public authentication or webhook surface.\n\n**Versioning policy.** The API is URL-versioned as `/v1` semantics with major version `1`; every operation also accepts an optional `X-API-Version: 1` header. The current major version is announced by the `API-Version` response header on every machine endpoint.\n\n**Deprecation policy.** When a future major version ships, superseded operations will return HTTP `Deprecation` and `Sunset` headers for at least 180 days before removal, and the retirement timeline will be published on /developers and in llms.txt. Until then no operation is deprecated.\n\n**Errors.** All 4xx and 5xx responses use RFC 9457 `application/problem+json` documents with a machine-readable `code`, human-readable `title`/`detail`, and actionable `resolutionHints`.\n\n**Rate limiting.** Machine endpoints publish `RateLimit-Policy` (600 requests per 60-second window) and draft-RFC-9451 `RateLimit` headers; a `429` response includes `Retry-After`. These are advisory self-throttling signals for agents.","contact":{"name":"Josué Guevara","email":"tv.e5150@gmail.com","url":"https://jjjjguevara.vercel.app/developers"}},"servers":[{"url":"https://jjjjguevara.vercel.app","description":"Production portfolio origin"}],"security":[],"tags":[{"name":"discovery","description":"Agent indexes, instructions, sitemaps, and interface descriptions."},{"name":"profile","description":"Canonical public résumé and profile facts."},{"name":"mcp","description":"Model Context Protocol server over Streamable HTTP."}],"paths":{"/llms.txt":{"get":{"operationId":"getLlmsTxt","summary":"Get the curated agent index","description":"Returns llms.txt: the curated index of canonical portfolio resources with when-to-use guidance for agents. Default representation is text/plain; request it with Accept: application/json for a structured llmsIndex document.","tags":["discovery"],"parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"Requested API major version. The only supported value is `1`. Responses echo the served version in the `API-Version` response header. Unsupported versions receive `406` with an RFC 9457 problem document.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"}],"responses":{"200":{"description":"llms.txt index document (plain text or structured JSON)","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"text/plain":{"schema":{"type":"string","example":"# Josué Guevara\n\n> Personal professional portfolio…"}},"application/json":{"schema":{"$ref":"#/components/schemas/LlmsIndex"}}}},"404":{"description":"No published resource at this path","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"406":{"description":"Accept header matches no available representation","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate-limit window exhausted; wait before retrying","headers":{"RetryAfter":{"description":"Seconds until the window resets","schema":{"type":"integer","example":42}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/agent-instructions.md":{"get":{"operationId":"getAgentInstructions","summary":"Get agent usage and source-precedence guidance","description":"Returns authored Markdown describing retrieval order, source precedence, and public-data boundaries for agents working with this portfolio.","tags":["discovery"],"parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"Requested API major version. The only supported value is `1`. Responses echo the served version in the `API-Version` response header. Unsupported versions receive `406` with an RFC 9457 problem document.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"}],"responses":{"200":{"description":"Markdown agent instructions","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"text/markdown":{"schema":{"type":"string"}}}},"404":{"description":"No published resource at this path","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"406":{"description":"Accept header matches no available representation","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate-limit window exhausted; wait before retrying","headers":{"RetryAfter":{"description":"Seconds until the window resets","schema":{"type":"integer","example":42}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/resume.json":{"get":{"operationId":"getResumeJson","summary":"Get the canonical machine-readable résumé","description":"Returns the canonical structured résumé record: person identity, employment chronology, education designations, skills, languages, and verification links.","tags":["profile"],"parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"Requested API major version. The only supported value is `1`. Responses echo the served version in the `API-Version` response header. Unsupported versions receive `406` with an RFC 9457 problem document.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"}],"responses":{"200":{"description":"Résumé JSON record","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResumeRecord"}}}},"404":{"description":"No published resource at this path","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"406":{"description":"Accept header matches no available representation","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate-limit window exhausted; wait before retrying","headers":{"RetryAfter":{"description":"Seconds until the window resets","schema":{"type":"integer","example":42}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/sitemap.xml":{"get":{"operationId":"getSitemapXml","summary":"Get canonical indexable URLs","description":"Returns the XML sitemap enumerating every canonical, indexable portfolio page with lastmod dates.","tags":["discovery"],"parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"Requested API major version. The only supported value is `1`. Responses echo the served version in the `API-Version` response header. Unsupported versions receive `406` with an RFC 9457 problem document.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"}],"responses":{"200":{"description":"XML sitemap","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/xml":{"schema":{"type":"string","example":"<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">…</urlset>"}}}},"404":{"description":"No published resource at this path","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"406":{"description":"Accept header matches no available representation","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate-limit window exhausted; wait before retrying","headers":{"RetryAfter":{"description":"Seconds until the window resets","schema":{"type":"integer","example":42}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/openapi.json":{"get":{"operationId":"getOpenApiDocument","summary":"Get this OpenAPI description","description":"Returns this OpenAPI 3.1 document describing all public portfolio interfaces, including the error model, versioning policy, and rate-limit conventions.","tags":["discovery"],"parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"Requested API major version. The only supported value is `1`. Responses echo the served version in the `API-Version` response header. Unsupported versions receive `406` with an RFC 9457 problem document.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"}],"responses":{"200":{"description":"OpenAPI 3.1 document","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"type":"object","description":"OpenAPI 3.1 root document","properties":{"openapi":{"type":"string"},"info":{"type":"object"},"paths":{"type":"object"}}}}}},"404":{"description":"No published resource at this path","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"406":{"description":"Accept header matches no available representation","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate-limit window exhausted; wait before retrying","headers":{"RetryAfter":{"description":"Seconds until the window resets","schema":{"type":"integer","example":42}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/release.json":{"get":{"operationId":"getReleaseJson","summary":"Get the deployed release descriptor","description":"Returns build metadata for the deployed site: release identifier, commit SHA, and build timestamp, useful for cache validation and provenance checks.","tags":["discovery"],"parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"Requested API major version. The only supported value is `1`. Responses echo the served version in the `API-Version` response header. Unsupported versions receive `406` with an RFC 9457 problem document.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"}],"responses":{"200":{"description":"Release metadata JSON","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"release":{"type":"string"},"sha":{"type":"string"},"builtAt":{"type":"string","format":"date-time"}}}}}},"404":{"description":"No published resource at this path","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"406":{"description":"Accept header matches no available representation","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate-limit window exhausted; wait before retrying","headers":{"RetryAfter":{"description":"Seconds until the window resets","schema":{"type":"integer","example":42}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/.well-known/mcp":{"post":{"operationId":"postMcpMessage","summary":"Call the read-only portfolio MCP server over Streamable HTTP","description":"Single-message MCP transport endpoint. Send JSON-RPC 2.0 MCP messages (initialize, tools/list, tools/call, resources/list, resources/read). Include Accept: application/json, text/event-stream. Read-only: exposes profile, résumé, project, and developer-resource tools; no mutation.","tags":["mcp"],"parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"Requested API major version. The only supported value is `1`. Responses echo the served version in the `API-Version` response header. Unsupported versions receive `406` with an RFC 9457 problem document.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpRequest"}}}},"responses":{"200":{"description":"JSON-RPC result or error for the submitted MCP message","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpResponse"}},"text/event-stream":{"schema":{"type":"string","description":"Server-sent events framing one or more JSON-RPC messages."}}}},"202":{"description":"Accepted JSON-RPC notification (no response body expected)","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"400":{"description":"Malformed request","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"404":{"description":"No published resource at this path","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"405":{"description":"HTTP method not supported on this endpoint","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"Allow":{"schema":{"type":"string","example":"GET, HEAD"}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"406":{"description":"Accept header matches no available representation","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate-limit window exhausted; wait before retrying","headers":{"RetryAfter":{"description":"Seconds until the window resets","schema":{"type":"integer","example":42}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}},"get":{"operationId":"getMcpStream","summary":"Open the MCP Streamable HTTP GET channel","description":"Opens the standalone server-initiated SSE channel for this stateless MCP server. The stream carries keep-alive comments only; use POST for all request/response exchanges. Clients that do not send Accept: text/event-stream receive 405 with an application/json JSON-RPC error document.","tags":["mcp"],"parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"Requested API major version. The only supported value is `1`. Responses echo the served version in the `API-Version` response header. Unsupported versions receive `406` with an RFC 9457 problem document.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"}],"responses":{"200":{"description":"Server-initiated SSE channel (keep-alive comments; no standalone data is pushed by this read-only server)","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"text/event-stream":{"schema":{"type":"string","example":":stream-open\\n\\n"}}}},"405":{"description":"No SSE channel is offered to clients that did not request text/event-stream; use POST","content":{"application/json":{"schema":{"$ref":"#/components/schemas/McpErrorResponse"}}},"headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"429":{"description":"Rate-limit window exhausted; wait before retrying","headers":{"RetryAfter":{"description":"Seconds until the window resets","schema":{"type":"integer","example":42}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}},"/problems/{slug}":{"get":{"operationId":"getProblemType","summary":"Describe a problem type","description":"Machine- and human-readable documentation for one RFC 9457 problem type published by this API. The `type` URI of every problem+json error response resolves here.","tags":["discovery"],"parameters":[{"name":"X-API-Version","in":"header","required":false,"description":"Requested API major version. The only supported value is `1`. Responses echo the served version in the `API-Version` response header. Unsupported versions receive `406` with an RFC 9457 problem document.","schema":{"type":"string","enum":["1"],"default":"1"},"example":"1"},{"name":"slug","in":"path","required":true,"description":"Problem-type slug taken from a problem document's type URI.","schema":{"type":"string","enum":["not-found","method-not-allowed","not-acceptable"]}}],"responses":{"200":{"description":"Problem-type descriptor","headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProblemTypeDescriptor"}}}},"404":{"description":"No published resource at this path","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}},"headers":{"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}}},"406":{"description":"Accept header matches no available representation","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"429":{"description":"Rate-limit window exhausted; wait before retrying","headers":{"RetryAfter":{"description":"Seconds until the window resets","schema":{"type":"integer","example":42}},"RateLimit":{"description":"Current request-window state (RFC 9457-style draft convention): limit, remaining, and reset seconds.","schema":{"type":"string","example":"limit=600, remaining=599, reset=60"}},"RateLimit-Policy":{"description":"Published quota policy: 600 requests per 60-second window.","schema":{"type":"string","example":"limit=600;window=60;shared=false"}},"API-Version":{"description":"Served API major version.","schema":{"type":"string","example":"1"}}},"content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}},"500":{"description":"Unexpected server failure","content":{"application/problem+json":{"schema":{"$ref":"#/components/schemas/Problem"}}}}}}}},"components":{"schemas":{"Problem":{"type":"object","description":"RFC 9457 problem detail extended with a machine-readable code and resolution hints.","required":["type","title","status","code"],"properties":{"type":{"type":"string","format":"uri-reference","description":"Problem-type URI under https://jjjjguevara.vercel.app/problems/","example":"https://jjjjguevara.vercel.app/problems/not-found"},"title":{"type":"string","example":"Resource not found"},"status":{"type":"integer","minimum":400,"maximum":599,"example":404},"code":{"type":"string","description":"Stable machine-readable error code.","example":"PORTFOLIO-404-NOT_FOUND"},"detail":{"type":"string","example":"No published portfolio page exists at /definitely-not-a-page."},"instance":{"type":"string","format":"uri-reference","example":"/api/markdown?path=%2Fdefinitely-not-a-page"},"resolutionHints":{"type":"array","items":{"type":"string"},"description":"Actionable steps an agent can take to resolve the failure.","example":["Fetch /llms.txt for the curated index of published paths."]}}},"LlmsIndex":{"type":"object","description":"Structured representation of llms.txt returned with Accept: application/json.","required":["title","canonicalOrigin"],"properties":{"title":{"type":"string","example":"Josué Guevara"},"alternateName":{"type":"string"},"description":{"type":"string"},"canonicalOrigin":{"type":"string","format":"uri"},"guidance":{"type":"string","description":"Source-precedence and inference boundaries."},"whenToUse":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"use":{"type":"string"}}}},"machineReadableResources":{"type":"array","items":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"description":{"type":"string"}}}},"flagshipWork":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"url":{"type":"string","format":"uri"},"note":{"type":"string"}}}}}},"ProblemTypeDescriptor":{"type":"object","description":"Documentation for one RFC 9457 problem type.","required":["type","slug","title","appliesToStatus"],"properties":{"type":{"type":"string","format":"uri"},"slug":{"type":"string"},"title":{"type":"string"},"appliesToStatus":{"type":"integer"},"description":{"type":"string"},"resolutionHints":{"type":"array","items":{"type":"string"}}}},"ResumeRecord":{"type":"object","description":"Canonical public résumé record.","properties":{"person":{"$ref":"#/components/schemas/Profile"},"experience":{"type":"array","items":{"type":"object","properties":{"organization":{"type":"string"},"title":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}}}},"education":{"type":"array","items":{"type":"object","properties":{"institution":{"type":"string"},"program":{"type":"string"},"start":{"type":"string"},"end":{"type":"string"}}}},"skills":{"type":"array","items":{"type":"string"}},"links":{"type":"object","additionalProperties":{"type":"string","format":"uri"}}}},"Profile":{"type":"object","description":"Public professional identity facts for Josué Guevara.","properties":{"name":{"type":"string","example":"Josué Guevara"},"alternateName":{"type":"string","example":"jjjjguevara"},"url":{"type":"string","format":"uri"},"email":{"type":"string","format":"email"},"location":{"type":"string"},"jobTitle":{"type":"string"},"languages":{"type":"array","items":{"type":"string"}},"profiles":{"type":"array","items":{"type":"string","format":"uri"}},"focus":{"type":"array","items":{"type":"string"}}}},"ProjectRecord":{"type":"object","description":"One public project with status, summary, and evidence links. This is the shape returned by the MCP list_projects and get_project tools exposed at /.well-known/mcp.","properties":{"slug":{"type":"string","example":"amnesia-reader"},"name":{"type":"string","example":"Amnesia Reader"},"status":{"type":"string","example":"active development"},"url":{"type":"string","format":"uri"},"documentation":{"type":"string","format":"uri"},"repository":{"type":"string","format":"uri"},"demo":{"type":"string","format":"uri"},"summary":{"type":"string"}}},"McpRequest":{"type":"object","description":"JSON-RPC 2.0 request or notification carrying an MCP message.","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"description":"Request identifier; omit for notifications.","oneOf":[{"type":"string"},{"type":"integer"}]},"method":{"type":"string","example":"tools/call"},"params":{"type":"object","additionalProperties":true}}},"McpResponse":{"type":"object","description":"JSON-RPC 2.0 response with either a result or an error member.","required":["jsonrpc","id"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"result":{"type":"object","additionalProperties":true},"error":{"$ref":"#/components/schemas/McpErrorObject"}}},"McpErrorObject":{"type":"object","required":["code","message"],"properties":{"code":{"type":"integer","example":-32000},"message":{"type":"string"},"data":{"description":"Optional structured error data."}}},"McpErrorResponse":{"type":"object","description":"JSON-RPC 2.0 error-only response.","required":["jsonrpc","error"],"properties":{"jsonrpc":{"type":"string","const":"2.0"},"id":{"oneOf":[{"type":"string"},{"type":"integer"},{"type":"null"}]},"error":{"$ref":"#/components/schemas/McpErrorObject"}}}}}}