Connect over the MCP server with a user-scoped token,
then call the read tools. Every tool is:
Organisation-scoped to the connected user: results reflect that user’s
permissions. A forbidden or empty result is expected when the user lacks
access; it is not an error to retry.
Read-only and returns safe fields only: never passwords, tokens,
embeddings, or rate-card internals.
Authentication follows the two modes in MCP Tools:
bearer-header clients omit apiKey; payload-based workflows pass the
user-scoped token as apiKey on every call.
List projects in the organisation. Pass jobNumber to find one project by its exact job number (case-insensitive, includes archived projects), or search to match part of a project name or job number.
status, jobNumber, search, includeArchived, limit (default 100, max 500)
get_project
Get one project by id.
id
list_project_members
Members assigned to a project.
projectId, limit (default 200, max 500)
list_milestones
Project milestones.
projectId, limit (default 200, max 1000)
list_project_history
A project’s activity/changelog feed.
projectId, taskId, categories[], eventTypes[], limit (default 100, max 200)
list_project_comments
All discussion on a project, newest first: the project’s own chat thread plus the comments on its tasks. Each row has source (project or task), body, authorType, user, createdAt, and task details on task rows.
projectId, scope (all, project, tasks), limit (default 100, max 500)
Per-project task totals in one call (avoids per-project loops).
projectIds[]
list_task_comments
Comments for a task, or every comment across a project. Comments are the entries in each task’s chat thread. For a project’s whole discussion, including its own project-level chat, use list_project_comments.
one of taskId / projectId, limit (default 100, max 500)
list_table_columns
The custom task-table columns a project sees, including columns inherited from its client or the organisation. Task values for these columns sit in task metadata under tableValues, keyed by column key. Also reports defaultColumns and defaultColumnsSource: the default visible column set configured for the project’s table (from its kanban board, else the organisation setting), or null.
Client organisations you have a relationship with. With no status filter (or active), the first entry is the virtual internal client (id: "internal", isInternal: true): your own organisation, used for internal work.
relationshipStatus, limit (default 200, max 1000)
get_client
Get one client organisation. Your own organisation’s id resolves to the internal client (isInternal: true).
clientOrganizationId
list_client_team
The client’s default staffing pool for AI and initial planning. When hasRestrictions is true, start with the returned members. An existing project’s owner and active project members remain eligible for that project, including project-only additions.
Planned task time slots (calendar/Gantt/utilisation). Returns exact totalCount, totalMinutes, totalHours and a truncated flag for the whole filtered set, plus server-side groups when you pass groupBy.
Real free capacity for users over a date range, evaluated against their existing bookings across all projects (8 working hours per weekday). Organisation closure dates and fully blocked days are excluded from free capacity, partially blocked days subtract their blocked hours, and each user’s blocked dates in the window are reported: fully blocked days as blockedDates and partial days as partialBlockedDates ({date, hoursUnavailable, remainingHours}). Reports availability status, scheduled hours, free hours vs requiredHours, and conflicts per user.
startDate, endDate (both YYYY-MM-DD, required), requiredHours, userIds, projectId (evaluates that project’s team; omit both for the whole organisation)
get_blocked_dates
Date ranges users have blocked out as unavailable (leave, appointments). Each row carries hoursUnavailable: null means the whole day is blocked and the scheduler never books work on it; a number means only that many hours per day are unavailable. Defaults to the requesting user; reading other users’ blocks requires schedule view access. Free-text reasons are returned only for the requesting user’s own blocks unless the caller has schedule management access.
userIds[], startDate, endDate (window, both YYYY-MM-DD, optional)
list_time_entries
Logged time: the source for hours completed/timesheets. Returns exact totalCount, totalMinutes, totalHours and a truncated flag for the whole filtered set, plus server-side groups when you pass groupBy.
If you’d rather call HTTP endpoints directly, the public
REST API at /api/v1 covers projects, tasks,
master projects, organisations, clients, users, reports, schedules, closure
and blocked dates, collections, assets, permissions, and search,
authenticated with the same rnk_ API keys that work here.
A few specialised capabilities also have their own documented endpoints: