# Docs - [Welcome](/docs): RyTask is an open-source, self-hostable project tracker with native time tracking, Slack capture, and a full-control MCP server — what it is and how these docs are organized. - Tutorials - [Tutorials](/docs/tutorials): Step-by-step RyTask tutorials that take you from a Docker self-host to capturing tasks, tracking time, and connecting an AI agent over MCP in your first week. - [Quickstart](/docs/tutorials/quickstart): Run RyTask with Docker Compose, sign in, create a project, capture a task, and log time — in about 15 minutes. - [Your first week with RyTask](/docs/tutorials/first-week): The everyday rhythm — capture from Slack, track time against estimates, keep your inbox clean, find anything, and connect an AI agent. - How-to guides - [How-to guides](/docs/guides): Task-focused RyTask guides for self-hosting and administration, everyday use, the Slack integration, and connecting AI agents over MCP. - Self-hosting & administration - [Self-hosting & administration](/docs/guides/self-hosting): Run RyTask on your own server with Docker Compose — what one command gives you, and where to go from there. - [Requirements](/docs/guides/self-hosting/requirements): Requirements for self-hosting RyTask — Docker and the Compose plugin for the recommended route, or Node 22, pnpm 9, Postgres, and Redis to run it from source. - [Production setup](/docs/guides/self-hosting/production): Run RyTask in production with Docker Compose — set the JWT secret the API won't boot without, add an override file, bring the stack up, and verify it's healthy. - [Reverse proxy & TLS](/docs/guides/self-hosting/reverse-proxy): Put HTTPS in front of the web app and the API, with Caddy and nginx examples — and the two URLs that must point at the public API origin. - [Backups & restore](/docs/guides/self-hosting/backups-and-restore): Back up RyTask with one command — a Postgres dump is the whole backup — then the exact steps to restore it and to test that your backups actually work. - [Upgrades & migrations](/docs/guides/self-hosting/upgrades-and-migrations): Upgrade RyTask with a pull and rebuild — the migrate service re-runs migrations automatically, they are forward-only, and rollback means restoring a backup. - [Scaling](/docs/guides/self-hosting/scaling): Scale RyTask by role — the API and the background worker run the same image and scale independently, but Postgres is usually the first real bottleneck. - [Storage & email](/docs/guides/self-hosting/storage-and-email): MinIO and Mailhog sit in the stack for features still to come — neither is used yet, and invites work today via shareable links while email delivery is unwired. - Using RyTask - [Using RyTask](/docs/guides/users): The end-user guide to RyTask — everything a teammate needs to track work, log time, and stay on top of their week. - [Organizations and members](/docs/guides/users/organizations-and-members): Your organization holds the whole team — first-run setup, inviting members by email or shareable link, the five roles, and ownership transfer. - [Workspaces](/docs/guides/users/workspaces): Workspaces are the container that holds your projects and workspace-wide shared labels — and what you'll actually see of one in the app today. - [Projects](/docs/guides/users/projects): Projects hold your work items — creating one, how item numbering like OPS-1 works, project members and roles, settings, and archiving versus deleting. - [Work items](/docs/guides/users/work-items): Work items in full — every field, per-project statuses and categories, sub-tasks, activity history, the trash, and what happens when two people edit at once. - [Views and boards](/docs/guides/users/views-and-boards): Views and boards — the board and list layouts, grouping and sorting, personal and shared saved views, built-in smart views, and the My Work page. - [Fast capture](/docs/guides/users/fast-capture): The one-line quick-add grammar that turns a sentence into a fully filled-in task — from the web, Slack, or an AI agent. - [Time tracking](/docs/guides/users/time-tracking): The flagship — the one-click timer, manual entries, planned-versus-interruption classification, and the plan-vs-actual meter in every row. - [Reporting](/docs/guides/users/reporting): Reporting on where your time went — the planned-versus-interruption time report, the interruption ledger, and the My week summary, all exportable to CSV. - [Inbox and notifications](/docs/guides/users/inbox-and-notifications): Your in-app inbox and notifications — what lands in it, how duplicate alerts collapse into one, and how marking read, snoozing, and archiving work. - [Search](/docs/guides/users/search): Global search across work items, comments, projects, labels, and people — relevance-ranked, permission-scoped, plus the Cmd+K command palette. - [Permissions and roles](/docs/guides/users/permissions-and-roles): Permissions in plain words — the five organization roles, the three project roles, how they combine, invites, and personal access tokens. - [Exporting your data](/docs/guides/users/export): Export your whole organization as a JSON archive or per-entity CSV — work items, comments, time logs, and people, owner-triggered and read-only. - Slack integration - [Slack integration](/docs/guides/slack): Capture a task in seconds without leaving Slack — type /task, get a confirmation with a link, and the work lands in RyTask attributed to the right person. - [Install and connect](/docs/guides/slack/install): Create the Slack app, point it at your RyTask server, set five environment variables, and connect from Settings → Integrations. - [Capturing tasks](/docs/guides/slack/capture): Type /task and a sentence to capture instantly, or /task on its own for a guided form — either way RyTask confirms with a link in seconds. - [User mapping](/docs/guides/slack/user-mapping): Slack user mapping — how RyTask links Slack people to accounts by email at connect time or by hand, and how that drives capture attribution and reminders. - [Troubleshooting](/docs/guides/slack/troubleshooting): Slack capture troubleshooting — the real failure modes, from an unconnected workspace to rejected webhooks and a missing default project, with the fix for each. - MCP & AI agents - [MCP & AI agents](/docs/guides/mcp): RyTask's first-party MCP server gives AI agents full parity with the UI — anything a person can do, an agent can do through 54 tools under the same permissions. - [Connecting a client](/docs/guides/mcp/connect): Point any MCP client at RyTask over HTTP with a bearer token, or run the local stdio transport — with copy-paste setup for Claude Code and Claude Desktop. - [Agent access & tokens](/docs/guides/mcp/agent-access): Mint a personal access token, scope it down to what the agent needs, and revoke it the moment you change your mind. - [Security model](/docs/guides/mcp/security): The MCP security model — the token is the agent's identity, tenancy is fixed server-side, and every tool runs the exact code path the UI runs. - Other integrations - [Other integrations](/docs/guides/integrations): Integrations for RyTask — Slack capture is live today; GitHub linking, email, outbound webhooks, and two-way Slack sync are documented here as planned roadmap. - [GitHub](/docs/guides/integrations/github): Link commits and pull requests to work items with a key or a magic word — free from day one. Auto-close and status sync are still on the way. - [Email notifications](/docs/guides/integrations/email-notifications): Email notifications in RyTask are planned, not wired up yet — the in-app inbox works today and invites go out as shareable links while outgoing email is coming. - [Outbound webhooks](/docs/guides/integrations/outbound-webhooks): Outbound webhooks for RyTask are planned — subscribe a URL to item, comment, and time events for signed, retried payloads, with a delivery log you can replay. - [Slack two-way sync](/docs/guides/integrations/slack-two-way-sync): Slack two-way sync for RyTask is planned — /task capture is live today; mention capture, status and comment sync to threads, and low-noise alerts come next. - Roadmap (coming soon) - [Roadmap (coming soon)](/docs/guides/roadmap): One page per planned capability cluster — what RyTask intends to build, with tiers, and nothing pretending to be shipped. - [Automations](/docs/guides/roadmap/automations): Automations, planned for RyTask — trigger, condition, action rules that auto-assign, move, label, or call a webhook, with unlimited runs because you self-host. - [Custom fields](/docs/guides/roadmap/custom-fields): Custom fields, planned for RyTask — text, number, select, date, and user fields on work items first, with validation and computed fields later. No usage caps. - [Cycles and sprints](/docs/guides/roadmap/cycles-and-sprints): Cycles and sprints, planned for RyTask — time-boxed batches of work with start and end dates and automatic rollover of unfinished items into the next cycle. - [Milestones and roadmap](/docs/guides/roadmap/milestones-and-roadmap): Milestones, planned for RyTask — named delivery targets with fixed dates per project, plus a quarter-level roadmap view and OKR-style goals in a later wave. - [Dependencies and relations](/docs/guides/roadmap/dependencies-and-relations): Dependencies and relations, planned for RyTask — blocks and blocked-by links between work items, with softer relates-to links and dependency-aware scheduling. - [Timeline and calendar](/docs/guides/roadmap/timeline-and-calendar): Timeline and calendar, planned for RyTask — Gantt-style timeline bars over dates and a calendar view, with an editable spreadsheet view and board swimlanes. - [Richer work items](/docs/guides/roadmap/richer-work-items): Richer work items, planned for RyTask — multiple assignees, watchers, per-item attachments, and bulk edit, with issue templates, types, and recurring tasks. - [Reporting and dashboards](/docs/guides/roadmap/reporting-and-dashboards): Reporting and dashboards, planned for RyTask — sprint and flow charts like burndown, velocity, and cumulative flow, plus custom dashboards, free not paywalled. - [Import and export](/docs/guides/roadmap/import-and-export): Full data export ships today; CSV import, competitor importers, and scheduled backups are on the way — your data stays yours. - [Realtime and mobile](/docs/guides/roadmap/realtime-and-mobile): Realtime and mobile, planned for RyTask — live updates over WebSockets so views refresh without reloading, a responsive PWA, and native mobile apps later. - [Collaboration extras](/docs/guides/roadmap/collaboration-extras): Collaboration extras planned beyond comments — emoji reactions, rich docs, automatic check-ins that double as time capture, and guest sharing links. - [Advanced permissions](/docs/guides/roadmap/advanced-permissions): Advanced permissions, planned for RyTask — custom roles with granular grants, an organization audit log, and eventually field- and record-level security. - [Enterprise and identity](/docs/guides/roadmap/enterprise-and-identity): Enterprise and identity, planned for RyTask — SSO, SAML, and SCIM plus observability hooks and a Helm chart, free in self-host, not behind an enterprise tier. - [Search extras](/docs/guides/roadmap/search-extras): Search extras, planned for RyTask — natural-language finding through the MCP server and a JQL-style query language, beyond today's full-text search. - [AI features](/docs/guides/roadmap/ai-features): RyTask's AI approach — the full-control MCP server works today; native AI like summarize, draft, and triage is planned carefully and later, once trust forms. - [Time tracking extras](/docs/guides/roadmap/time-tracking-extras): Time tracking extras, planned for RyTask — billable rates and invoicing on the existing billable flag, idle-timer reminders, and approval timesheets. - [Notification preferences](/docs/guides/roadmap/notification-preferences): Notification preferences, planned for RyTask — granular control over what reaches you per project and per event, with digest scheduling and global mute rules. - Reference - [Reference](/docs/reference): RyTask reference — the REST API, all 54 MCP tools, environment variables, permissions, capture syntax, rate limits, and idempotency, generated from the code. - [Feature status](/docs/reference/feature-status): RyTask feature status — every capability and the nine differentiators with their MVP, v2, or v3 tier and an honest, code-verified available or coming-soon badge. - REST API - [REST API](/docs/reference/rest-api): The RyTask REST API — base URL, bearer auth, keyset pagination, error codes, and idempotency, generated from the committed OpenAPI contracts and browsable by tag. - Api tokens - [Mint a PAT — secret returned ONCE (FR-AUTH-007, SC-012)](/docs/reference/rest-api/api-tokens/createApiToken) - [List the caller's Personal Access Tokens (FR-AUTH-007)](/docs/reference/rest-api/api-tokens/listApiTokens) - [Revoke a PAT (FR-AUTH-007)](/docs/reference/rest-api/api-tokens/revokeApiToken) - Auth - [Consume a PASSWORD_RESET token and set a new password (FR-AUTH-003)](/docs/reference/rest-api/auth/confirmPasswordReset) - [Email + password sign-in → access + rotating refresh (FR-AUTH-001/002)](/docs/reference/rest-api/auth/login) - [Revoke the current session/family (FR-AUTH-002)](/docs/reference/rest-api/auth/logout) - [Rotate the refresh token → new access + refresh; reuse revokes the family (FR-AUTH-002)](/docs/reference/rest-api/auth/refresh) - [Register (only when org allowPublicSignup=true; otherwise invite-only) (FR-AUTH-001)](/docs/reference/rest-api/auth/register) - [Request a password reset (uniform response — no enumeration, SC-010) (FR-AUTH-003)](/docs/reference/rest-api/auth/requestPasswordReset) - [Resend an email-verification link (uniform response — no enumeration, SC-010) (FR-AUTH-003)](/docs/reference/rest-api/auth/requestVerification) - [Consume an EMAIL_VERIFY one-time token (FR-AUTH-003)](/docs/reference/rest-api/auth/verifyEmail) - [Current principal — user, org, role, scopes, accessible workspaces (FR-INT-MCP-001)](/docs/reference/rest-api/auth/whoami) - Comments - Work items - Itemid - Comments - [List threaded comments](/docs/reference/rest-api/comments/work-items/itemid/comments/get) - [Post a comment (markdown; @mentions notify + grant context access)](/docs/reference/rest-api/comments/work-items/itemid/comments/post) - Health - [Liveness probe](/docs/reference/rest-api/health/healthz): Served at the server root (not under `/api/v1`). No dependencies, no auth. - [Readiness probe](/docs/reference/rest-api/health/readyz): Served at the server root. Checks PostgreSQL and Redis reachability. - Invites - [Accept an invitation → membership at the pre-assigned role (public, token-bearing) (FR-AUTH-011)](/docs/reference/rest-api/invites/acceptInvite) - [Invite by email or create a shareable link, with a pre-assigned role (Admin+) (FR-AUTH-011)](/docs/reference/rest-api/invites/createInvite) - [List pending invitations (FR-AUTH-011)](/docs/reference/rest-api/invites/listInvites) - [Preview an invitation (org name, role) before accepting (public)](/docs/reference/rest-api/invites/previewInvite) - [Revoke a pending invitation (Admin+) (FR-AUTH-011)](/docs/reference/rest-api/invites/revokeInvite) - Labels - Labels - [List workspace labels](/docs/reference/rest-api/labels/labels/get) - [Create a label](/docs/reference/rest-api/labels/labels/post) - Mcp - [Get MCP connection info](/docs/reference/rest-api/mcp/getMcpConfig): Public connection details for the Agent access page — the HTTP endpoint URL (when `MCP_PUBLIC_URL` is configured) and a copy-pasteable stdio hint. Never contains a token. Requires `org:read`. - [MCP streamable-HTTP endpoint](/docs/reference/rest-api/mcp/mcpHttp): The MCP server over streamable HTTP. Authenticate with a personal access token in the `Authorization: Bearer` header; the body is a JSON-RPC 2.0 message. Each request is authenticated and tenant-scoped independently — there is no server-side session. Invalid or revoked tokens get a JSON-RPC error with code -32001. - [MCP SSE handshake](/docs/reference/rest-api/mcp/mcpSse): Opens a server-sent-events stream for MCP clients that prefer SSE. Same bearer authentication as POST. - Memberships - [List members and their roles (FR-RBAC-001)](/docs/reference/rest-api/memberships/listMemberships) - [Remove a member; revokes their sessions & tokens (Admin+) (FR-RBAC-001)](/docs/reference/rest-api/memberships/removeMember) - [Change a member's role (Admin+; last-owner protected) (FR-RBAC-001)](/docs/reference/rest-api/memberships/setMemberRole) - Notifications - Notifications - [Inbox (filter by state)](/docs/reference/rest-api/notifications/notifications/get) - Notificationid - [Mark read/unread, snooze, or archive](/docs/reference/rest-api/notifications/notifications/notificationid/patch) - Unread count - [Unread count (badge)](/docs/reference/rest-api/notifications/notifications/unread-count/get) - Orgs - [Soft-delete the organization (Owner only) (FR-RBAC-003, FR-TEN-006)](/docs/reference/rest-api/orgs/deleteOrg) - [Current organization + settings (FR-TEN-004)](/docs/reference/rest-api/orgs/getCurrentOrg) - [Transfer ownership to another member (Owner only) (FR-RBAC-003)](/docs/reference/rest-api/orgs/transferOwnership) - [Update organization settings (Admin+) (FR-TEN-004)](/docs/reference/rest-api/orgs/updateOrgSettings) - Projects - Projects - [List accessible projects](/docs/reference/rest-api/projects/projects/get) - [Create a project (seeds default statuses + counter)](/docs/reference/rest-api/projects/projects/post) - Projectid - [Delete a project (cascade)](/docs/reference/rest-api/projects/projects/projectid/delete) - [Get a project](/docs/reference/rest-api/projects/projects/projectid/get) - [Update / archive / restore a project](/docs/reference/rest-api/projects/projects/projectid/patch) - Members - [List project members](/docs/reference/rest-api/projects/projects/projectid/members/get) - [Add a member](/docs/reference/rest-api/projects/projects/projectid/members/post) - Search - Search - [Full-text search (items, comments, projects, labels, users), tenant + permission scoped](/docs/reference/rest-api/search/search/get) - Setup - [Bootstrap the initial org + owner + workspace + starter project (FR-AUTH-010)](/docs/reference/rest-api/setup/bootstrap) - [First-run availability (true only while 0 organizations exist)](/docs/reference/rest-api/setup/getSetupState) - Slack - [Begin the Slack install](/docs/reference/rest-api/slack/beginSlackInstall): Returns the Slack consent URL. The `state` inside it is a signed, short-lived nonce bound to the org, workspace, and admin — the callback rejects anything else. Requires `org:settings:write`. - [Disconnect Slack](/docs/reference/rest-api/slack/disconnectSlack): Revokes the bot token and stops capture immediately. Queued jobs for the team become no-ops. Requires `org:settings:write`. - [Get the Slack connection status](/docs/reference/rest-api/slack/getSlackConnection): Visible to any member (`org:read`). Never contains a token or secret. - [List Slack user mappings](/docs/reference/rest-api/slack/listSlackUsers): Slack identities and the RyTask users they map to (capture attribution). Requires `org:settings:write`. - [Map a Slack user to a RyTask user](/docs/reference/rest-api/slack/mapSlackUser): Requires `org:settings:write`. - [Slack slash-command webhook](/docs/reference/rest-api/slack/slackCommands): Called by Slack, not by you. Verified by HMAC signature over the raw body — forged requests get 401. `/task` with text enqueues a capture and answers with an ephemeral acknowledgement inside Slack's 3-second window; `/task` with no text opens the guided capture modal. - [Slack interactivity webhook](/docs/reference/rest-api/slack/slackInteractivity): Called by Slack when the capture modal is submitted. Signature-verified like the command webhook. Unknown payload types are acknowledged and ignored. - [Remove a Slack user mapping](/docs/reference/rest-api/slack/unmapSlackUser): Future captures from this Slack user are attributed to nobody until re-mapped. Requires `org:settings:write`. - [Update the Slack connection](/docs/reference/rest-api/slack/updateSlackConnection): Sets or clears the default project that `/task` captures route to. Requires `org:settings:write`. - Statuses - Projects - Projectid - Statuses - [List statuses (board columns, ordered)](/docs/reference/rest-api/statuses/projects/projectid/statuses/get) - [Add a status (mapped to a category)](/docs/reference/rest-api/statuses/projects/projectid/statuses/post) - Reorder - [Reorder statuses](/docs/reference/rest-api/statuses/projects/projectid/statuses/reorder/post) - Statuses - Statusid - [Delete a status (requires reassignTo if it has items)](/docs/reference/rest-api/statuses/statuses/statusid/delete) - [Rename / recolor / recategorize a status](/docs/reference/rest-api/statuses/statuses/statusid/patch) - Time aggregates - [Per-item logged totals for a project](/docs/reference/rest-api/time-aggregates/getTimeRollup): Feeds the plan-vs-actual meter in Board and List rows. Requires `work:read`. - [Grouped time totals](/docs/reference/rest-api/time-aggregates/getTimeSummary): Aggregates logged time by item, user, project, or period, with the planned-vs-interruption split. Every row reconciles: `plannedSeconds + interruptionSeconds = loggedSeconds`. Visibility never exceeds the caller's readable projects. Requires `work:read`. - Time logs - [Log time manually](/docs/reference/rest-api/time-logs/createTimeLog): Creates a manual time entry. Give either `durationSeconds` or both `startedAt` and `endedAt` (never both forms). Classification defaults from the item's priority — `URGENT` items log as `INTERRUPTION`, everything else as `PLANNED` — and can be overridden per entry. Requires `work:write`. - [Delete a time log](/docs/reference/rest-api/time-logs/deleteTimeLog): Soft delete — the entry disappears from every total. Owner or org admin only. Requires `work:write`. - [List time logs on a work item](/docs/reference/rest-api/time-logs/listTimeLogs): Newest first, keyset-paginated. Soft-deleted entries are excluded. Requires `work:read`. - [Edit a time log](/docs/reference/rest-api/time-logs/updateTimeLog): Owners can edit their own entries; org admins can edit anyone's. Setting `classification` marks the entry as overridden. Every edit is recorded in the item's activity feed. Requires `work:write`. - Time reports - [Report: interruption ledger (in progress)](/docs/reference/rest-api/time-reports/getInterruptionLedger): **Status: in progress — ships in the next release.** Every interruption-classified item that consumed time in the range, with capture source, who raised it, entry count, and hours — sorted biggest first. The ledger total always equals the overview's interruption figure for the same range. - [Report: where did the time go? (in progress)](/docs/reference/rest-api/time-reports/getReportOverview): **Status: in progress — ships in the next release.** The flagship report: totals, weekly planned-vs-interruption breakdown, and the top items by logged time for an inclusive date range (366 days max). Requires `work:read`; with `projectId` the caller must be able to view that project. - [Report: my week (in progress)](/docs/reference/rest-api/time-reports/getWeeklySummary): **Status: in progress — ships in the next release.** One person's Monday-to-Sunday week: total tracked, the split, tracked-beside-estimate per item, and what was completed. `weekStart` must be a Monday (UTC) or the API answers 400. - Timers - [Get the caller's active timer](/docs/reference/rest-api/timers/getActiveTimer): Returns the running timer, or `null` when nothing is running. Requires `work:read`. - [Start a timer on a work item](/docs/reference/rest-api/timers/startTimer): Starts the caller's timer on this item. If another timer is already running for the caller, it is stopped first (its elapsed time becomes a time log) — there is never more than one active timer per person. Requires `work:write`. - [Stop a running timer](/docs/reference/rest-api/timers/stopTimer): Stops the caller's active timer and writes a time log with `source: TIMER`. Only the timer's owner can stop it. Requires `work:write`. - Views - Views - [List saved views (personal + shared) for a project or cross-project](/docs/reference/rest-api/views/views/get) - [Save a view (personal by default; shared if scope=SHARED)](/docs/reference/rest-api/views/views/post) - Viewid - [Delete a saved view](/docs/reference/rest-api/views/views/viewid/delete) - [Update a saved view](/docs/reference/rest-api/views/views/viewid/patch) - Work items - Work items - [List / filter work items (powers List, Board, smart views)](/docs/reference/rest-api/work-items/work-items/get): Accepts the filter AST (see filter-dsl.md) as a base64-encoded `filter` param OR typed shorthand params. Cursor (keyset) pagination. `group` + `sort` per filter-dsl.md. - [Create a work item (title-only or quick-add inline syntax)](/docs/reference/rest-api/work-items/work-items/post): `title` alone creates with project defaults (FR-WI-001). If `quickAdd` is provided, the server parses `@assignee #label !priority ^date` into structured fields and returns any `unresolved` tokens (FR-WI-004). Mints a never-recycled per-project key (FR-WI-002). - Itemid - [Soft-delete (trash)](/docs/reference/rest-api/work-items/work-items/itemid/delete) - [Get a work item (full payload incl. labels, watchers, child count)](/docs/reference/rest-api/work-items/work-items/itemid/get) - [Update fields (logs activity per changed field)](/docs/reference/rest-api/work-items/work-items/itemid/patch): Optimistic concurrency via `version`; stale → 409 (FR-WI-009). - Activity - [Per-item activity / history feed](/docs/reference/rest-api/work-items/work-items/itemid/activity/get) - Assign - [Assign / unassign (single assignee in M1)](/docs/reference/rest-api/work-items/work-items/itemid/assign/post) - Labels - [Add a label (by id or name; create-on-capture per policy)](/docs/reference/rest-api/work-items/work-items/itemid/labels/post) - Labelid - [Remove a label](/docs/reference/rest-api/work-items/work-items/itemid/labels/labelid/delete) - Move - [Move on board (change status and/or position)](/docs/reference/rest-api/work-items/work-items/itemid/move/post): Single-row fractional reorder; logs a STATUS_CHANGED/MOVED activity entry (FR-VIEW-001). - Restore - [Restore from trash](/docs/reference/rest-api/work-items/work-items/itemid/restore/post) - Subtasks - [List child sub-tasks](/docs/reference/rest-api/work-items/work-items/itemid/subtasks/get) - [Create a sub-task under this item (cycle/depth checked)](/docs/reference/rest-api/work-items/work-items/itemid/subtasks/post) - Workspaces - [Get a workspace (FR-TEN-002)](/docs/reference/rest-api/workspaces/getWorkspace) - [List workspaces in the org (FR-TEN-002)](/docs/reference/rest-api/workspaces/listWorkspaces) - MCP tools - [MCP tools](/docs/reference/mcp-tools): Browse all 54 RyTask MCP tools — the actions an AI agent can take over the Model Context Protocol, each with its required permission and JSON input schema. - [add_comment](/docs/reference/mcp-tools/add_comment): Post a markdown comment (@mentions notify + grant context access) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [add_label_to_issue](/docs/reference/mcp-tools/add_label_to_issue): Attach a label to a work item (by id or name; create-on-capture) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [add_project_member](/docs/reference/mcp-tools/add_project_member): Add a member to a project at a role (ADMIN/MEMBER/VIEWER) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [add_subtask](/docs/reference/mcp-tools/add_subtask): Create a sub-task under a work item (inherits its project; cycle/depth checked) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [archive_project](/docs/reference/mcp-tools/archive_project): Archive or restore a project (hidden from default lists but retained) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [create_api_token](/docs/reference/mcp-tools/create_api_token): Mint a scoped personal access token (secret returned once) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the tokens:write permission). - [create_issue](/docs/reference/mcp-tools/create_issue): Create a work item (title-only or structured fields) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [create_label](/docs/reference/mcp-tools/create_label): Create a workspace label — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [create_project](/docs/reference/mcp-tools/create_project): Create a project (seeds default statuses + key counter + creator membership) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [create_status](/docs/reference/mcp-tools/create_status): Add a status to a project (mapped to a fixed category) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [delete_issue](/docs/reference/mcp-tools/delete_issue): Soft-delete (trash) a work item — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [delete_project](/docs/reference/mcp-tools/delete_project): Delete a project (cascade removes its items, statuses, members, counter) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [delete_status](/docs/reference/mcp-tools/delete_status): Delete a status (requires reassignTo when it still has items) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [delete_view](/docs/reference/mcp-tools/delete_view): Delete a saved view — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [get_active_timer](/docs/reference/mcp-tools/get_active_timer): Get the caller’s currently running timer, if any — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [get_issue](/docs/reference/mcp-tools/get_issue): Get a single work item (full payload incl. labels) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [get_org_settings](/docs/reference/mcp-tools/get_org_settings): Read the organization settings (timezone, locale, week start, working hours…) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the org:read permission). - [get_project](/docs/reference/mcp-tools/get_project): Get a single project (requires project:viewer) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [get_workspace](/docs/reference/mcp-tools/get_workspace): Get a single workspace by id — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the workspace:read permission). - [invite_member](/docs/reference/mcp-tools/invite_member): Invite a member by email or shareable link, with a pre-assigned role (Admin+) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the members:invite permission). - [list_api_tokens](/docs/reference/mcp-tools/list_api_tokens): List the holder’s own personal access tokens (never the secret) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the tokens:read permission). - [list_comments](/docs/reference/mcp-tools/list_comments): List threaded comments on a work item — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [list_issue_activity](/docs/reference/mcp-tools/list_issue_activity): List a work item's activity / history feed — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [list_issues](/docs/reference/mcp-tools/list_issues): List / filter work items (List, Board, smart views) with keyset pagination — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [list_labels](/docs/reference/mcp-tools/list_labels): List workspace labels — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [list_members](/docs/reference/mcp-tools/list_members): List members of the organization and their roles — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the members:read permission). - [list_notifications](/docs/reference/mcp-tools/list_notifications): List the inbox (unread / all / snoozed / archived), keyset paginated — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [list_projects](/docs/reference/mcp-tools/list_projects): List accessible projects in the workspace (keyset paginated) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [list_statuses](/docs/reference/mcp-tools/list_statuses): List a project’s statuses (board columns, ordered) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [list_views](/docs/reference/mcp-tools/list_views): List saved views visible to the principal (own personal + shared in projects) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [list_workspaces](/docs/reference/mcp-tools/list_workspaces): List workspaces in the current organization — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the workspace:read permission). - [log_time](/docs/reference/mcp-tools/log_time): Log time on a work item after the fact (duration or start/end; source=MCP) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [move_issue](/docs/reference/mcp-tools/move_issue): Move a work item on the board (change status and/or fractional position) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [quick_add_issue](/docs/reference/mcp-tools/quick_add_issue): Create a work item from a quick-add line (@assignee #label !priority ^date) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [remove_label_from_issue](/docs/reference/mcp-tools/remove_label_from_issue): Remove a label from a work item — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [remove_member](/docs/reference/mcp-tools/remove_member): Remove a member; revokes their sessions and tokens (Admin+; last-owner protected) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the members:write permission). - [reorder_statuses](/docs/reference/mcp-tools/reorder_statuses): Reorder a project’s statuses (board column order) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [restore_issue](/docs/reference/mcp-tools/restore_issue): Restore a work item from trash (comments + history intact) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [revoke_api_token](/docs/reference/mcp-tools/revoke_api_token): Revoke one of the holder’s own personal access tokens — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the tokens:write permission). - [save_view](/docs/reference/mcp-tools/save_view): Save a view (filter AST + sort + grouping + layout; personal or shared) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [search](/docs/reference/mcp-tools/search): Full-text search across work items, comments, projects, labels, and users (ranked, permission-scoped) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [set_active_workspace](/docs/reference/mcp-tools/set_active_workspace): Set the active workspace for the session/principal — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the workspace:read permission). - [set_member_role](/docs/reference/mcp-tools/set_member_role): Change a member's role (Admin+; last-owner protected) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the members:write permission). - [start_timer](/docs/reference/mcp-tools/start_timer): Start a timer on a work item (one active per user; server-persisted) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [stop_timer](/docs/reference/mcp-tools/stop_timer): Stop the caller’s running timer and write a finalized time log (source=MCP) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [time_report](/docs/reference/mcp-tools/time_report): Time report for a date range: planned-vs-interruption totals, weekly rows, and top items — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:read permission). - [transfer_ownership](/docs/reference/mcp-tools/transfer_ownership): Transfer organization ownership to another member (Owner only) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the org:transfer permission). - [update_issue](/docs/reference/mcp-tools/update_issue): Update a work item's fields (optimistic version; logs activity per field) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [update_notification](/docs/reference/mcp-tools/update_notification): Mark a notification read/unread, snooze it, or archive it — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [update_org_settings](/docs/reference/mcp-tools/update_org_settings): Update organization settings (Owner/Admin) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the org:settings:write permission). - [update_project](/docs/reference/mcp-tools/update_project): Update a project's name / description / icon / color / lead — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [update_status](/docs/reference/mcp-tools/update_status): Rename / recolor / recategorize a status — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [update_view](/docs/reference/mcp-tools/update_view): Update a saved view (name / scope / filters / sort / grouping / layout) — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the work:write permission). - [whoami](/docs/reference/mcp-tools/whoami): Resolve the current principal: user, org, role, scopes, accessible workspaces — a RyTask MCP tool for AI agents over the Model Context Protocol (requires the self permission). - [Environment variables](/docs/reference/environment-variables): Every configuration knob RyTask reads, with its default, whether you must set it, and what it does — verified against the code. - [Permissions and roles](/docs/reference/permissions): The exact permission catalog, the role-to-permission matrix, project roles, and how API token scopes compose with roles. - [Capture syntax](/docs/reference/capture-syntax): RyTask capture syntax — the quick-add grammar for @assignee, #label, !priority, and ^date markers, with escapes, date phrases, conflict rules, and unknown tokens. - [Rate limits](/docs/reference/rate-limits): Request budgets, the stricter auth bucket, the failed-login lockout, and how the limiter behaves when Redis is down. - [Webhooks and idempotency](/docs/reference/webhooks-idempotency): Retry-safety guarantees — the Idempotency-Key header, Slack webhook signature verification, and the status of outbound webhooks. - Explanation - [Explanation](/docs/explanation): How RyTask is built and why — the modular-monolith architecture, multi-tenant isolation, time-tracking model, MCP parity, testing gates, and contributing. - [Why RyTask](/docs/explanation/why-rytask): Why RyTask exists — the problem it solves for interrupt-driven teams, the nine differentiators, and the north-star metric (CTW) the team steers by. - [Architecture overview](/docs/explanation/architecture): RyTask's architecture — a NestJS modular monolith with hard, CI-enforced module boundaries, one image for API and worker, and events at the seams between modules. - [Multi-tenancy and data isolation](/docs/explanation/multi-tenancy): RyTask multi-tenancy fences every query to your organization — a mandatory organizationId, an ambient tenant context, and repositories proven by isolation tests. - [The time-tracking model](/docs/explanation/time-tracking-model): RyTask's time-tracking model — every minute is planned work or an interruption, one timer per person, and reports as read-models so the totals always reconcile. - [MCP parity](/docs/explanation/mcp-parity): MCP parity in RyTask — AI agents are first-class clients with a tool for every capability, wired to the same services, and a CI gate fails when one is missing. - [Testing and quality gates](/docs/explanation/testing-and-quality): RyTask's testing gates — CI fails when a required test is missing, integration tests run on real PostgreSQL, and coverage and boundary gates must pass. - [Contributing](/docs/explanation/contributing): Contributing to RyTask — spec-driven development with Spec Kit, the Node and Docker toolchain, the CI gates your change must pass, and what the AGPL license asks.