{"name":"Accura Portfolio API","version":1,"auth":"Reads are public. Writes: Authorization: Bearer <PORTFOLIO_API_TOKEN>.","mcp":"https://portfolio.accura.dev/api/mcp","resources":{"GET /profile":"https://portfolio.accura.dev/api/v1/profile","GET /projects?category=&q=":"https://portfolio.accura.dev/api/v1/projects","GET /projects/:slug":"https://portfolio.accura.dev/api/v1/projects/{slug}","GET /categories":"https://portfolio.accura.dev/api/v1/categories","GET /now?days=7":"https://portfolio.accura.dev/api/v1/now","GET /stories":"https://portfolio.accura.dev/api/v1/stories","GET /stories/:slug":"https://portfolio.accura.dev/api/v1/stories/{slug}","POST /now/brief {text}":"https://portfolio.accura.dev/api/v1/now/brief","POST /now/posts {body, title?, url?, images?, date?, milestone?}":"https://portfolio.accura.dev/api/v1/now/posts","POST /threads {title, repos?, threadUrl?, project?}":"https://portfolio.accura.dev/api/v1/threads","POST /threads/:slug/archive {summary?}":"https://portfolio.accura.dev/api/v1/threads/{slug}/archive","POST /sync":"https://portfolio.accura.dev/api/v1/sync"},"tools":[{"name":"get_profile","write":false,"description":"Who the portfolio owner is: name, headline, bio, availability for freelance work and links.","endpoint":"https://portfolio.accura.dev/api/v1/tools/get_profile","input":{"type":"object","properties":{}}},{"name":"list_projects","write":false,"description":"Public projects in display order (pinned first), with tagline, URL, stack, categories and live Accura Watch stats (visitors, Search Console clicks, Sentry errors, uptime) when mapped. NDA projects only expose their name and context.","endpoint":"https://portfolio.accura.dev/api/v1/tools/list_projects","input":{"type":"object","properties":{"category":{"description":"Category slug (see list_categories)","type":"string"},"query":{"description":"Free-text filter on name/description/topics","type":"string"},"with_stats":{"description":"Include Accura Watch stats. Default true.","type":"boolean"}}}},{"name":"get_project","write":false,"description":"One project by slug: full description, screenshots, links, stack, categories and Watch stats.","endpoint":"https://portfolio.accura.dev/api/v1/tools/get_project","input":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"list_categories","write":false,"description":"Project categories (e.g. sérieux, fun, jeux, clients, perso) with project counts.","endpoint":"https://portfolio.accura.dev/api/v1/tools/list_categories","input":{"type":"object","properties":{}}},{"name":"get_now","write":false,"description":"The single active thread (/now): daily brief, timeline posts, and the GitHub commits of the last 7 days grouped by repo.","endpoint":"https://portfolio.accura.dev/api/v1/tools/get_now","input":{"type":"object","properties":{"days":{"description":"Commit window in days. Default 7.","type":"integer","minimum":1,"maximum":30}}}},{"name":"list_stories","write":false,"description":"Archived threads (finished build-in-public stories) with their timelines.","endpoint":"https://portfolio.accura.dev/api/v1/tools/list_stories","input":{"type":"object","properties":{}}},{"name":"get_story","write":false,"description":"One archived thread with its full narrative timeline.","endpoint":"https://portfolio.accura.dev/api/v1/tools/get_story","input":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"set_now_brief","write":true,"description":"Replace the daily brief (≈2 lines) of the active thread — what the Grok bots post every day.","endpoint":"https://portfolio.accura.dev/api/v1/tools/set_now_brief","input":{"type":"object","properties":{"text":{"type":"string","minLength":1,"maxLength":400,"description":"Daily brief, ~2 lines"},"thread":{"description":"Thread slug (default: the active thread)","type":"string"}},"required":["text"]}},{"name":"add_thread_post","write":true,"description":"Append a post (e.g. an X thread post, with optional screenshots) to the active thread's timeline.","endpoint":"https://portfolio.accura.dev/api/v1/tools/add_thread_post","input":{"type":"object","properties":{"body":{"type":"string","minLength":1,"maxLength":4000},"title":{"type":"string","maxLength":140},"url":{"type":"string","format":"uri"},"images":{"maxItems":8,"type":"array","items":{"type":"string","format":"uri"}},"date":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z|([+-](?:[01]\\d|2[0-3]):[0-5]\\d)))$"},"milestone":{"type":"boolean"},"thread":{"description":"Thread slug (default: the active thread)","type":"string"}},"required":["body"]}},{"name":"start_thread","write":true,"description":"Start a new active thread for /now. The current active thread is archived and becomes a story at /stories/<slug>.","endpoint":"https://portfolio.accura.dev/api/v1/tools/start_thread","input":{"type":"object","properties":{"title":{"type":"string","minLength":1,"maxLength":120},"slug":{"type":"string","maxLength":64},"brief":{"type":"string","maxLength":400},"threadUrl":{"type":"string","format":"uri"},"repos":{"maxItems":12,"type":"array","items":{"type":"string","pattern":"^[\\w.-]+\\/[\\w.-]+$"}},"project":{"description":"Project slug this thread is about","type":"string"}},"required":["title"]}},{"name":"archive_thread","write":true,"description":"Archive a thread (default: the active one) into a standalone story, with an optional summary.","endpoint":"https://portfolio.accura.dev/api/v1/tools/archive_thread","input":{"type":"object","properties":{"thread":{"description":"Thread slug (default: the active thread)","type":"string"},"summary":{"type":"string","maxLength":1200}}}},{"name":"sync_projects","write":true,"description":"Run the Vercel + GitHub sync now (normally weekly). Returns counts and errors.","endpoint":"https://portfolio.accura.dev/api/v1/tools/sync_projects","input":{"type":"object","properties":{}}}]}