Submit

How an agency logs and bills MCP agent runs (without pretending the timer is the invoice)

A Copenhagen agency founder on logging MCP agent runs, splitting agent time from human review, and turning a run into an invoice line without watching anyone's screen.

Written by AiAgentsListing Team

•5 min read
How an agency logs and bills MCP agent runs (without pretending the timer is the invoice)

Guest post by Troels Johannesen, founder of WeCode and Hourtick in Copenhagen.

I run WeCode, a small agency in Copenhagen. We still sell time. Clients still want a line they can read without a meeting. Some of that work now happens inside an MCP agent: a model with tools, a task, and a habit of going quiet and then dropping files in chat.

The lazy response I keep hearing is surveillance. Screenshot the laptop. Record the apps. Prove the human was "working" while the agent ran. That answers a question nobody on the invoice asked.

The real question is simpler. What did we do for this client, what did it cost us, and what are we allowed to put on the bill?

Chat logs are not a timesheet

An MCP session is a transcript. Tool calls, errors, retries, a paragraph rewritten four times. Useful when something breaks. Useless as a timesheet.

A chat log does not know the client, the project, or whether the run was billable, internal, or a mess we should eat. It mixes the agent's clock with the human's, and a failed tool call looks like a delivered draft.

Paste that under an invoice and you are asking the client to audit your prompts. Most will not. A few will, and you will not enjoy the call.

What you want is a short record that still makes sense a month later:

  • Which tool ran. "MCP" is not a name. Claude in Cursor, or whichever client spoke MCP, is.
  • Which client and which project.
  • The task, in one line a client could read.
  • Duration or outcome, sometimes both. Twelve minutes that produced a brief is not twelve minutes that looped.
  • Who reviewed it, and how long that took.
  • Model spend, if you know it. Your cost is not your price.

That row is a timesheet. It is not the invoice.

What we actually log

We stopped pretending the agent is a junior at a desk. It should not borrow a person's timer.

We log three things.

The agent's own run. Time and, when we have it, cost, on the task. Not folded into someone's Friday so the week looks full. Mixing agent time into a person's week makes utilization a fairy tale. I will not approve "my" hours that were a model's.

The human around the run. Briefing, steering, review. This is still most of what clients buy. Ninety minutes checking an agent's comps is ninety minutes. Log it on that person, and say what they checked. "Looked at it" is not a note.

The outcome. A file, a link, a decision. "First draft of the landing page, reviewed, two sections rewritten by hand." If you cannot name the outcome, do not bill the run. Keep the cost if you want to see the burn. Do not call a loop a deliverable.

We do not log keystrokes, screens, or open sites. People track their own time. Screenshots do not fix a client relationship, and you should not be collecting them.

A small staffing example (not a benchmark)

This is a whiteboard example from our shop, not a study, and not a number to quote as an industry average. I have not measured a percentage I would publish.

A content task used to be one person, about four hours, billed as four.

An agent now does a first pass: about forty minutes, plus whatever the model provider charged. A person spends about ninety minutes briefing and editing. The client-facing story is two lines, not "a bit over two hours, trust us."

  • Writing and edit, 1.5 h, named person.
  • Agent research and first draft, 0.7 h, or a fixed line if the statement of work is about the outcome, not the clock.

You staffed less human time, and you owe an honest split. The model cost stays yours. It never belonged on a person's timesheet.

On hours times rate, bill the human hours at the human rate, and bill an agent line only if the statement of work allows it. A different rate for agent work is a contract term. The timer does not set it. On a fixed fee, keep both numbers so you can see when the "saved" time mostly moved into review.

Do not add agent hours to people hours and call it utilization. You will under-hire the reviewers.

Turning a run into a line item

This checklist is not an invoice. It is what you hand the person who writes one.

  1. Name the client, the project, and the task in the client's words.
  2. Name the tool. "MCP agent" is not a line. "Claude, first draft of the Q3 recap" is.
  3. Record agent duration and, if you have it, model cost. Keep cost as cost. Do not turn a token bill into fake hours.
  4. Record human review on the person who did it.
  5. Write one outcome sentence. If you cannot, leave the run non-billable and keep the cost.
  6. Match the contract: time and materials, an agreed treatment of agent work, or a fixed fee where time is evidence, not the price.
  7. Mark time invoiced only after a real invoice exists in the system that sends invoices. A locked timesheet is not payment.

A timer can show a billable amount, what is not yet invoiced, and a lock once you mark the row invoiced. It still does not send the invoice. We write ours elsewhere. Do not tell a client the timesheet is the bill.

We keep that record in Hourtick: board, chat, and timer in one place. We hand a task to Claude, GPT, Grok, or Muse the way we hand one to a colleague, or we connect Claude, Cursor, or any other MCP client. The agent logs its own time and cost on the task and can ask in chat when it is stuck. Reports group hours by client, project, task type, or person, and show what is not yet invoiced. Marking a row invoiced locks it. Hourtick does not send the invoice. It does not watch the screen: no screenshots, and no recording of apps, sites, or keystrokes. A missing entry can be suggested from activity already inside Hourtick (tasks, conversations, agent requests). A person approves it. The suggestion never sees the screen.

Nothing in the timer makes a run billable to the client. The contract does. The model provider bills the model separately.

What not to claim

I will not say these out loud.

"The agent worked eight hours." Say what it produced, and how long the run was. A model's clock is not a person at a desk.

"AI cut delivery time in half." Maybe on one task. I do not have a before-and-after I would publish, so I do not borrow one.

"The timesheet is the invoice." It is the backup. The invoice is the document you send.

"We can see everything the team did." You do not need that to bill. You need client, project, person or agent, duration or outcome, and someone who will stand behind the line.

"Every agent hour is billable." A tool can store a flag. It cannot negotiate your statement of work.

The point

MCP made the tools easy. Explaining the work is still the job. Log the tool, the client, the project, the duration or the outcome, the human review next to it, and the cost apart from the price. Then you can bill without watching a screen.

Keep the chat log for debugging. Put the time on the task it belongs to. Send the invoice from the place that actually sends invoices.

Troels Johannesen is founder of WeCode in Copenhagen and of Hourtick.

Share:

Subscribe to our newsletter

One email a week. New agents, MCP servers and skills, and what is actually getting traction.

Read next