ValuationMCP
Start free

Developers · Agent harness

The harness for succession and M&A work.

General-purpose assistants know nothing about what a practice is worth, who may see a target's numbers, or when a move is proven. ValuationMCP runs that work as governed agent loops, with checkpoints, permission tiers and owner approvals, in the workbench or inside the assistant you already use.

Every tool call, sorted by tier

margin loop · engine 1.8.0

read · runs nowpropose · parks a cardapprove · waits for ownernever · refusedModelTier checkEngine1.8.0Ownerplanfigurefigureread_margin_factsdraft_stepspropose_pnl_pullapply_stepssend_emailchange_figure
  • The model asks for a tool, and every call passes the tier check.
  • Read: runs now. The engine runs it, and figures come only from the engine.
  • Propose: parks a card for the owner. Nothing runs, and pulls start only when the owner starts them.
  • Approve: anything that changes the record waits at the gate until the owner clicks.
  • Never: refused and logged. No handler exists.
  • Each step is written once to the run record and never edited.

Run record · append only

written once, never edited

  1. 01 · readread_margin_facts
  2. 02 · readdraft_steps
  3. 03 · proposepropose_pnl_pull
  4. 04 · approveapply_steps
  5. 05 · neverrefused: send_email
  6. 06 · neverrefused: change_figure

Six parts of a harness, built for this domain.

A harness is the system around a model that runs the loop, calls the tools, keeps state and enforces the rules. Here is what ValuationMCP does for each part.

Agent loop

ValuationMCP runs three loops: the data check before every compute, the operating-margin loop, and the hosted agent that works an assigned move on its cadence. Each run has step, model-call and time caps, and stops when it is done, needs the owner or reaches a limit.

Tool calling

Tools run on the server against a deterministic seven-method engine. The model orders issues and words questions; it never states or computes a figure.

Context management

Skills are served fresh on every call. The model sees issue types and category order, never client rows or ledger lines.

Checkpointing

Every step is written once to a step log that cannot be edited, with an idempotency key. An interrupted run resumes from its last step and never repeats a write.

Permissions and sandboxing

Four permission tiers on every tool. Read-only pulls, only when you start them. A buyer's loop never pulls from a target's systems; it asks through a data request under the NDA.

Guardrails

Model text carries no digits. A compute stops on blocking gaps until they are answered or acknowledged. Only a saved run marks a move verified. Drafts are never sent.

Four permission tiers

Every tool a loop can call is registered with one tier. A call outside its tier is refused and the refusal is logged as a step.

readWhat happens:Runs freelyExamples:Practice record, source map, saved runs, data requirements
proposeWhat happens:Becomes a card for the owner; nothing runsExamples:Pull from a connected ledger, use one source's figure, ask the target
execute after approvalWhat happens:Runs only after the owner's clickExamples:Start the pull, save a chosen value with its source, compute, add steps to the plan
neverWhat happens:Not callable; any attempt is refused and loggedExamples:Send a message, change a figure on its own, mark a move verified, delete, contact a client

A loop, step by step.

The data check that runs before every compute. Clean data computes straight through. Here two sources disagree, so the loop stops for the owner.

  1. 1Read the practice, its sources and the latest saved run
  2. 2Detect issues deterministically: missing, unverified, inconsistent, currency, ambiguous, default value
  3. 3Word one plain question per issue; the model writes words only and fixed wording takes over if it fails
  4. 4Wait for the owner: pick a source, enter a value, start a pull, or compute anyway as provisional
  5. 5Compute on the owner's click; open items are saved with the run and listed on the report

Step log · illustrative

seqkindtooltier
1toolread_preflightread
2modelorder_issues
3systemwaiting_owner
4owneranswer:pick_source
5toolwrite_valueexecute_after_approval
6toolread_preflightread
7ownercompute
8toolcomputeexecute_after_approval
Each row is written once with an idempotency key. Admins see every run in a read-only trace.

Over MCP.

The same rules hold when the work runs in Claude, ChatGPT or any MCP client.

compute_valuation

Runs the data check first. With blocking issues it returns the typed issues and questions instead of a valuation, unless the call passes gaps_acknowledged: true, which saves the run as provisional.

validate_practice

An explicit check. format: "issues" returns each issue's type, a question and the sources that can fill it, so the assistant can work through them with the owner.

Pulls stay with the owner

In your AI assistant, your own connectors do the reading, and ValuationMCP never receives their credentials. Only the totals you approve are saved, each with its source.

Loops today

Every move on a plan also has its own lifecycle: planned, in progress, done and verified against the next saved run.

validateWhen it runs:Before every compute, in the workbench and over MCPWhat it does:Finds missing, conflicting, unverified and default inputs and asks only about those.
marginWhen it runs:On the operating-margin move, and re-checked on the move's cadenceWhat it does:Reads the P&L the owner pulls, shows the expense mix and the gap to the size-tier median, drafts steps the owner applies.
hosted agentWhen it runs:On an assigned move's cadence, or Run nowWhat it does:Works the next open step, drafts the deliverable the move's playbook names, and leaves every change as a card for the owner.

Run it in your assistant

Connect ValuationMCP to Claude or ChatGPT and ask for a valuation. The plain-English versions of these rules are on How it works and Trust & data use.

ValuationMCP produces educational estimates, not appraisals, fairness opinions, or investment, legal or tax advice.