Book a build call

The harness: runs, tools and costs

Mrs. NetShow is an AI agent.

What a harness run is, which NetShow tools a paired agent may call, what each lane costs, and where the owner sees the work.

Guided article

The Harness Developer Guide shows how to pair your own agent and answer from the relay inbox. This page explains what happens around that loop: what a run is, which NetShow tools your agent may call, what it costs, and where the owner sees the work. Whoever does the thinking, the NetShow agent the visitor meets says it is an AI.

5 min read 913 words Developers

What a run is

A run is one piece of work a NetShow agent hands to a harness and the record of what came back. It starts with a turn (an owner's question, or a visitor's where the owner allowed it) and ends with an answer, a fallback, or a hand-off to a person.

  1. Routed. The harness router reads the agent's harness choice and picks who answers.
  2. Asked. For a paired harness, the turn lands in your relay inbox as one item with relay_id, text, asked_at and deadline_at.
  3. Answered or expired. You reply with POST /api/outside-agents/v1/replies before deadline_at (at most 60 seconds after the item was made). The router itself waits only a few seconds (8 by default) before it falls back, so answer quickly.
  4. Fell back. No answer in time, a paused harness or a failed check means NetShow answers instead, and the reason is kept.
  5. Recorded. Every run writes one text-free receipt: the choice, who answered, the fallback reason, and the cost for a borrowed agent. No message text, tool argument or secret is stored on it.

A run that used tools also lists each tool call as a plain name and an outcome, never its arguments or results.

Tools a harness may call

There are three ways a harness meets NetShow tools, from least to most power:

  • Read-only offers. With ai.features.byoh_registry_tools on, an inbox item may carry the agent's read-only tool names and input schemas, from a short allowlist (commerce_list_products, commerce_list_prices). They are offered as information; NetShow never runs a tool because the harness said so.
  • Tools at home. With ai.features.harness_tools_at_home on, your agent can call the exact NetShow tools its owner granted it, through POST /api/outside-agents/v1/tools/call. Each owner task carries a signed run_note valid for ten minutes; each run allows at most 20 calls and 16 KB of arguments per call; repeating a call_id returns the first receipt without running the tool again. A tool above draft level waits for the owner's approval, and paid tools are not available on this path.
  • MCP. Tools you call from Claude, Cursor or VS Code go through the authenticated MCP server at POST /api/mcp; see the MCP Developer Guide.

All three read the same tool registry (App\Services\AgentRuntime\Tools\ToolRegistry), so a tool has one name and one schema everywhere. Declaring a skill in your harness card is not permission: the owner still seats your agent and grants each tool.

A tool call body looks like this (the callback token goes in the Authorization header):

{
  "run_note": "<RUN_NOTE>",
  "tool": "commerce_list_products",
  "arguments": {},
  "call_id": "call-1"
}
curl --max-time 30 \
  https://app.netshow.ai/api/outside-agents/v1/tools/call \
  -H 'Authorization: Bearer <YOUR_TOKEN>' \
  -H 'Content-Type: application/json' \
  --data '{"run_note":"<RUN_NOTE>","tool":"commerce_list_products","arguments":{},"call_id":"call-1"}'

Costs

  • Your own paired harness costs NetShow nothing. The thinking happens on your machine, under your own plan.
  • NetShow's own lanes and borrowed vendor agents are metered. Each runs in a spend lane with a daily ceiling in US dollars, read as ai.spend.lanes.<lane>.daily_ceiling_usd. Examples: owner_turn_runtime for an owner's turns, visitor_turn_runtime for strangers' turns, harness_borrowed_managed_claude and harness_borrowed_gemini_agent for borrowed agents, agent_computer for computer use, customer_mcp for MCP execution.
  • A ceiling of 0 means closed, and that is the default. A closed or used-up lane refuses the work instead of spending; on the fallback ladder that rung is skipped with the reason no_ceiling.
  • The plan sets how many routed turns a day an owner's agents may send to harnesses, and the owner can narrow it per agent.

Rate limits are separate from money: the relay allows 20 pairing exchanges, 30 status reads and 60 inbox-plus-reply requests a minute. A 429 carries Retry-After; wait that long.

Where the owner sees runs

  • GET /dashboard/runs: the Run Center, the recent runs across the owner's agents.
  • GET /dashboard/harness/runs/{task}: one run in plain words, with "What it did" for each tool call. This page registers only while ai.features.harness_owner_run_detail is on.
  • GET /dashboard/harness: the owner's harness home, while ai.features.owner_levels_harness is on.
  • GET /dashboard/harness/discover: what the harness can use for this owner.

Each of these switches is off until your administrator turns it on, and a page whose switch is off answers 404.

What you can do without a key

Read the platform card at GET /.well-known/agent-card.json and the MCP manifest at GET /api/mcp/manifest to see what NetShow offers. Nothing in a run starts without an owner's pairing.

For owners

Read The harness, Watch the work in the Run Center, Give an outside agent a seat and Set a seat's limits. You choose which tools a seat may use and how much it may spend each day; anything above a draft waits for your yes, and your agent still says it is an AI.

Was this helpful?

We can turn this into interactive help, search, and guided checklists next.

Previous guide

The live widget

Ready to meet your AI agent?

New accounts open soon.

Join the opening list Talk to our agent
AIMrs. NetShow