The catalogue/Runn

Runn

app.runn

Manage projects, people, assignments, timesheets, and capacity in Runn

API keyproductivityRead the source
Version2.0.0
Categoryproductivity
AuthAPI key
Tools20
Transportstdio
LicenceMIT
01

What it does

The app, in its own words.

Runn resource management — projects, people, assignments, timesheets and capacity planning through the Runn API.

runnresource-managementcapacity-planningproject-managementtimesheets
02

Tools

20 tools the agent can call.

Every one is declared with typed parameters and returns structured results, so the host can render them instead of narrating them.

  • runn-create-actualLog a Runn actual (real hours worked on a day). The minutes overwrite any existing actual for the same day/person/project/role/workstream. Returns the curated actual. Params: date (YYYY-MM-DD), billableMinutes, nonbillableMinutes, personId, projectId, roleId (all required), billableNote?, nonbillableNote?, phaseId?, workstreamId?, fields?, includeRaw.
  • runn-create-assignmentAllocate a person (or placeholder) to a project at a role over a date range. Returns the curated created assignment. Not retryable (no idempotency key). Params: personId, projectId, roleId, startDate, endDate (YYYY-MM-DD), minutesPerDay (all required), isBillable?, note?, phaseId?, workstreamId?, isNonWorkingDay?, fields?, includeRaw.
  • runn-create-clientCreate a Runn client. Returns the curated created client. Not retryable (no idempotency key). Params: name (required), website?, fields?, includeRaw.
  • runn-create-personCreate a Runn person. A first contract (role) is created with them. Returns the curated created person. Not retryable (no idempotency key). Params: firstName, lastName, roleId (all required), email?, teamId?, startDate? (YYYY-MM-DD), employmentType? (employee|contractor), costPerHour?, fields?, includeRaw.
  • runn-create-placeholderCreate a Runn placeholder (an unnamed role slot for planning before a real person is hired/assigned). Returns the curated created placeholder. Not retryable (no idempotency key). Params: roleId (required), teamId?, costPerHour?, fields?, includeRaw.
  • runn-create-projectCreate a Runn project from scratch. Returns the curated created project. Not retryable (no idempotency key). Params: name, clientId (both required), isConfirmed?, teamId?, budget?, expensesBudget?, pricingModel? (fp|tm|nb), rateType? (hours|days), rateCardId?, fields?, includeRaw.
  • runn-delete-assignmentDelete a Runn assignment by id. Irreversible. Returns { success, assignmentId }. Params: assignmentId (required).
  • runn-get-personGet a single Runn person by id. Returns curated detail { id, firstName, lastName, email, isArchived, teamId, tags, references, holidaysGroupId, managers, ... }. Params: personId (required), fields?, includeRaw.
  • runn-get-projectGet a single Runn project by id. Returns curated detail { id, name, clientId, teamId, isArchived, isConfirmed, pricingModel, rateType, budget, expensesBudget, tags, references, ... }. Params: projectId (required), fields?, includeRaw.
  • runn-list-actualsList Runn actuals (logged timesheet hours by day). Returns { items: [{ id, date, personId, projectId, roleId, billableMinutes, nonbillableMinutes, ... }], total, hasMore, nextCursor }. Filter by personId OR projectId (not both). Params: personId?, projectId?, limit (1-200, def 50), cursor?, fields?, includeRaw.
  • runn-list-assignmentsList Runn assignments (a person/placeholder allocated to a project at a role over a date range). Returns { items: [{ id, personId, projectId, roleId, startDate, endDate, minutesPerDay, isBillable, isPlaceholder, ... }], total, hasMore, nextCursor }. Filter by personId OR projectId (not both). Params: personId?, projectId?, limit (1-200, def 50), cursor?, fields?, includeRaw.
  • runn-list-clientsList Runn clients. Returns { items: [{ id, name, website, isArchived, references, createdAt, updatedAt }], total, hasMore, nextCursor }. Params: limit (1-200, def 50), cursor?, fields?, includeRaw.
  • runn-list-peopleList Runn people. Returns { items: [{ id, firstName, lastName, email, isArchived, teamId, createdAt, updatedAt }], total, hasMore, nextCursor }. Note: a person's role lives in their contract, not on the person. Params: limit (1-200, def 50), cursor?, fields?, includeRaw.
  • runn-list-placeholdersList Runn placeholders (unnamed role slots used for planning before a real person is assigned). Returns { items: [{ id, firstName, lastName, isArchived, tags, references, createdAt, updatedAt }], total, hasMore, nextCursor }. Params: limit (1-200, def 50), cursor?, fields?, includeRaw.
  • runn-list-projectsList Runn projects. Returns { items: [{ id, name, clientId, isArchived, isConfirmed, createdAt, updatedAt }], total, hasMore, nextCursor }. Params: clientId?, isArchived?, limit (1-200, def 50), cursor?, fields?, includeRaw.
  • runn-list-rolesList Runn roles (job roles people and placeholders are assigned as). Returns { items: [{ id, name, isArchived, defaultHourCost, standardRate, references, createdAt, updatedAt }], total, hasMore, nextCursor }. Params: limit (1-200, def 50), cursor?, fields?, includeRaw.
  • runn-list-skillsList Runn skills. Returns { items: [{ id, name, createdAt, updatedAt }], total, hasMore, nextCursor }. Params: limit (1-200, def 50), cursor?, fields?, includeRaw.
  • runn-list-teamsList Runn teams. Returns { items: [{ id, name, createdAt, updatedAt }], total, hasMore, nextCursor }. Params: limit (1-200, def 50), cursor?, fields?, includeRaw.
  • runn-project-totalsGet aggregated minute totals per project (billable, non-billable, total — from actuals when available, falling back to assignments). Returns { items: [{ id, billableMinutes, nonBillableMinutes, totalMinutes, assignments, actuals }], total, hasMore, nextCursor }. Params: includeArchived (default false), limit (1-10, def 10), cursor?, fields?, includeRaw.
  • runn-update-projectUpdate a Runn project. Only the fields you pass are changed (PATCH semantics). Idempotent — safe to retry. Returns the curated updated project. Params: projectId (required), name?, clientId?, isConfirmed?, teamId?, budget?, expensesBudget?, pricingModel?, rateType?, rateCardId?, fields?, includeRaw.
03

Auth and permissions

What it asks for.

Declared in the manifest, in advance. The app cannot reach anything it did not ask for here.

User secrets

API_KEY

Reading further

The manifest and the source for Runn live in the monorepo, alongside the other apps.

Read the sourceBack to the catalogue

Runn · Agent Apps