How to connect Claude Code, Cursor or Codex to Timato, what an agent records, and why its time sits beside yours instead of inside your day.

You hand a ticket to Claude Code, and while it works you pick up the next one. An hour later the agent is done, you have done something else, and both pieces of work happened. The question is how to write that down.
The tempting answer is a second timer: one for you, one for the agent. It looks harmless and it quietly breaks every number you keep. This guide explains what Timato does instead, why, and how to set it up so your agent records its own work without you touching anything.
Every figure in a time tracker rests on one assumption: the hours logged in a day never add up to more than the day. Your total for Tuesday, your week, a project's weekly target, an estimate set against logged time, anything you invoice. All of it assumes one person, one clock.
An agent breaks that the moment it runs in parallel with you. If it works on a task for an hour while you work on another for the same hour, the honest total for that hour is not two. It is one hour of yours, and one hour of something else happening on a task.
So Timato keeps agent work as a separate kind of record, a run, and never adds it to your time. A run says which agent worked on which task, from when to when, with a note. It shows next to your figures, in grey and at regular weight, and it never enters Today, your week, your streak or a project's target.
Agent time is time passing on a task. It is not your labour, so it never counts as yours.
That is also why the two are never summed, even on a single task. When you review what an agent did while it was still running, the stretches overlap, and a sum would describe time that never happened.
Once runs are recorded, a few things become easy that were guesswork before.
1. Create a token. Go to Settings › Agents and choose Create a token. Name it after the agent and the machine, "Claude Code - laptop" for example, so revoking one later does not stop the others. Leave "May add sessions to your log" unticked for now; it is covered below.
2. Copy the command. The token is shown once, together with a ready-made command for Claude Code with the token already in it:
claude mcp add --scope user --transport http timato https://api.timato.app/v1/mcp \
--header "Authorization: Bearer timato_pat_…"
Run it in a terminal. --scope user makes Timato available in every folder you open, which is what you want: your
agent should be able to log work wherever it is working.
3. Check it. claude mcp list should show timato as connected. Start a new Claude Code session and ask it to
list your open tasks. If it can, it is set up.
One thing to avoid: do not also add a timato server inside a single project. A project-level entry wins over your
own, so the project quietly talks to whatever that entry points at.
Any agent that can reach a remote MCP server over HTTP needs two things, both shown on Settings › Agents: the server
address, https://api.timato.app/v1/mcp, and a header, Authorization: Bearer <your token>. Where each client keeps
that setting differs, so look for "remote" or "HTTP" MCP servers in its documentation.
Connecting the server gives the agent the ability to log. It still needs to know when you want it to. Coding agents
read a project instructions file (CLAUDE.md for Claude Code, AGENTS.md for several others), and a short paragraph
there is all it takes:
## Logging time
When you start on a ticket, call the timato `start_work` tool with
agent "Claude Code", your model and the ticket key (for example "TW-123").
When you finish, call `finish_work` with that run id and a one-line note.
If you lose the run id, `open_runs` lists the runs still open.
If the timato server is not connected, carry on without it.
That is how we work on Timato itself. Each ticket's run starts when the work starts and finishes when it is ready for testing, and the time shows on the ticket's task beside ours.
The Timato server gives an agent six tools. It never needs all of them at once.
list_tasks lists your open tasks, with a search, so the agent can find the one it is working on by name or
ticket key.start_work starts a run and returns its id. The agent names the task by ticket key, by id, or with onTimer to
put the run on whatever your Timer is on right now, which is handy when you are timing something with no ticket and
say "log this on what I'm working on".finish_work ends the run, with a note. If the agent's host reports tokens or cost, they can come along too.log_work records work the agent did without timing it live: "you spent about 40 minutes on TW-12 earlier",
given as minutes or a start and end.open_runs lists runs that are still open, so an agent that restarted can find and finish its own.log_time is different, and gets its own section.Sometimes you want the agent to log your time: "I spent two hours on TW-12 yesterday afternoon, log it for me."
That is log_time, and it is the one tool that writes to your own log, so it is off unless you allow it.
To allow it, create a token with May add sessions to your log ticked. The token list marks it "Adds sessions". With it, the agent can add a session for you; the session counts in your day and your week like any other and is marked as added by an agent. It still cannot read, edit or delete your sessions. Without it, the tool refuses and says how to allow it.
Keep the two apart in your head: log_work is the agent's own time, log_time is yours.
Anything that can send an HTTP request can record a run: a CI job, a nightly script, an agent with no MCP support. Use the same token.
# Start a run; the response carries its id
curl -X POST https://api.timato.app/v1/runs \
-H "Authorization: Bearer $TIMATO_TOKEN" -H "Content-Type: application/json" \
-d '{"agent": "Nightly build", "note": "Rebuilding the search index"}'
# Finish it
curl -X PATCH https://api.timato.app/v1/runs/<id> \
-H "Authorization: Bearer $TIMATO_TOKEN" -H "Content-Type: application/json" \
-d '{"note": "Done, three warnings"}'
Add a taskId to the first call to put the run on a task. GET /v1/runs/tasks lists your open tasks and their ids.
A token is long-lived and sits in a config file, so it is deliberately narrow. It reaches the agent routes and nothing else. It can read your open tasks and record runs. It cannot read your sessions, change your settings, or touch billing or your team. The one widening is the "add sessions" permission, and that only adds.
Revoke a token from Settings › Agents and any agent using it stops at once. The runs it already recorded stay.
Timato records when a run started and finished, so agent time is always there. Cost and tokens appear only if the agent's host reports them, and today most do not. When nothing was reported, Timato shows no cost at all rather than "$0.00", because zero would be a claim nobody made.
Create a token in Settings › Agents and run the command it gives you. Two minutes, and your agent's work sits beside yours.

Your tasks already live in a project tool. How Timato's Plane sync brings them in, what it changes and never changes, and which tools come next.
Read →
Twenty-five minutes is a fine unit of work and a terrible unit of rest. What to keep, what to bend, and why a timer should never nag you about either.
Read →
A Friday ritual that takes four minutes and makes the next Monday cheaper, plus the three numbers that mislead almost everyone.
Read →Timato · made for people who lose track of time