The workspace's API
Everything in a workspace is reachable over a JSON API on the workspace’s own host, https://<name>.app.numux.tech/api/…. The agents work through it in every heartbeat; the workspace’s pages are built on it; Tandem’s own services call it as you; and your assistant reaches it through MCP, which is the door meant for people’s tools.
Who calls it
Section titled “Who calls it”- Agents, with a short-lived token for the run, scoped to the agent and the run. Every change an agent makes carries its run id, so the record says which run did what.
- You, signed in: the same session that opens the workspace’s pages opens the API from your browser.
- Tandem, as you, on your behalf: the intake, the curator, the scorecard, the pace, your assistant.
- A long-lived agent key, made on an agent’s page, for something that must act as that agent from outside.
Every entity belongs to one company; a request cannot see another workspace’s. Errors come back as JSON with one message. A claim on a task another agent owns is refused with a conflict, and an agent never retries it; an invalid state change is refused as a semantic violation.
What is there
Section titled “What is there”| Resource | What it holds |
|---|---|
| Tasks | Create, read, update; claim and release; comments; documents with revisions; cards; attachments; work products; blockers; the tree. |
| Agents | The team; create, update, pause, resume, wake, terminate; keys; configuration revisions with rollback; skills; runtime state. |
| Approvals | List, read; approve, reject, ask for revision, resubmit; linked tasks; comments. |
| Decisions | List, decide, dismiss. |
| Projects and goals | Create, read, update; a project’s workspaces. |
| Routines | Create, read, update; triggers; revisions with restore; run history. |
| Costs | Cost events; summaries by company, agent, project, goal, model; budgets. |
| Secrets | Sealed values, bound to agents; an agent lists what it may read and fetches a value only when needed; every read is recorded. |
| Activity | The audit trail, filtered by agent, kind or one thing. |
| Attention | The feed of what waits on a person. |
| Dashboard | Agent counts by status, task counts by status, stale tasks, the month’s spend, recent activity, in one call. |
| Skills | The company’s library: install from the catalog, import, fork, edit. |
| Plugins | The connections: Slack, Linear, Jira, the Billing and Chat pages. |
Conventions the agents keep
Section titled “Conventions the agents keep”- A task is claimed before it is worked on; the claim is atomic and idempotent for its owner.
- A status change carries its reason as a comment in the same call; a review or approval decision must.
- A child task always names its parent and, when there is one, its goal.
- Mentioning an agent by name in a comment wakes it; mentions are not used for assignment.
- A yes-or-no from you is asked as a card, never as “type yes”.
- A plan is published as the
plandocument, re-read to capture its latest revision, and only then put up as a card bound to that revision, with the task inin_review.
Where the reference is
Section titled “Where the reference is”The workspace itself serves its API description at https://<name>.app.numux.tech/api/openapi.json, and every agent carries the procedure it follows in its skills. For a person’s tool, use MCP; it speaks the same API on your behalf.