Seyhun Akyurek / Developer Resources
Developer resources — Seyhun Akyurek
Everything an agent or developer needs to integrate with Seyhun Akyurek's portfolio: public read APIs, machine-readable specs, and agent auth. All routes below are discoverable by searching “Seyhun Akyurek” + developer / API / MCP.
Seyhun Akyurek — API surface
REST — Projects (Seyhun Akyurek)
GET /api/webmcp/projects— list 38 Seyhun Akyurek AI projects (slim)GET /api/webmcp/projects/{slug}— get full project by slug (e.g. pact, corridor)
MCP Server — Seyhun Akyurek
Streamable-HTTP MCP at /api/mcp (POST JSON-RPC). Tools: list_projects, get_project, get_site_profile, list_offers, search_site, get_page_content.
Machine-readable specs — Seyhun Akyurek
- OpenAPI spec — Seyhun Akyurek portfolioat /openapi.json (also at /api/openapi.json) — authoritative Swagger/OpenAPI 3.1 document.
- API catalog (RFC 8288 linkset)— machine linkset at /.well-known/api-catalog, advertized via Link header on /.
- llms.txt — Seyhun Akyurek— LLM-facing profile + project inventory (also listed below).
- Agent auth skill (auth.md) — Seyhun Akyurek— WorkOS Agent Auth bootstrap; PRM at /.well-known/oauth-protected-resource.
Versioning & deprecation — Seyhun Akyurek
Canonical versioned root: /api/v1 (e.g. GET /api/v1/webmcp/projects and GET /api/v1/webmcp/projects/{slug}). Unversioned /api/webmcp/* aliases remain for backwards compat. Send API-Version: v1 or Accept: application/vnd.seyhun.v1+json — server echoes API-Version: v1 and Sunset when a version is deprecated (RFC 8594). Sunset is at least 180 days after Deprecation: true + Link: <url>; rel="sunset". No breaking change without a version bump. See openapi.json servers and header docs.
Rate limits — Seyhun Akyurek
100 requests / 60s per IP per endpoint family (portfolio read APIs & MCP). Every /api/* response includes RateLimit-Limit, RateLimit-Remaining, RateLimit-Reset (RFC draft-ietf-httpapi-ratelimit-header, plus legacy X-RateLimit-*). On 429, Retry-After is set — respect it and back off. Limits are documented in openapi.json response headers.
CLI — Seyhun Akyurek (npm)
Official CLI: npx seyhunakyurek or npm i -g seyhunakyurek (package seyhunakyurek on npm).
npx seyhunakyurek projects --json # list 39 projects (calls /api/v1/webmcp/projects) npx seyhunakyurek project pact --json # get one project npx seyhunakyurek mcp --json # MCP discovery npx seyhunakyurek openapi # show openapi.json info
Source at github.com/seyhunak/portfolio-website/cli — scriptable, no auth required for reads.
Auth & webhooks — Seyhun Akyurek
Read APIs above require no auth. For write/authenticated agent flows, follow the WorkOS Agent Auth skill at /auth.md (discovery via WWW-Authenticate: Bearer resource_metadata and /.well-known/oauth-protected-resource). No webhooks currently; events POST per auth.md events_endpoint.
Error handling
All /api/* routes return structured JSON errors on failure:
{
"error": {
"code": "NOT_FOUND",
"message": "Project 'unknown' not found",
"hint": "Call GET /api/webmcp/projects to list valid slugs.",
"docs": "https://seyhunakyurek.com/developers#error-handling",
"openapi": "https://seyhunakyurek.com/openapi.json"
}
}Agents should parse application/json errors — never HTML. See openapi.json components.schemas.Error for the schema.