Hermes Plant logo

Hermes Plant

Agent Action Safety for autonomous tools

Open navigation

DealAnalyzer

$0.25/callPer-analysis

Full deal underwriting — DCF, returns, sensitivity & waterfall in one call.

POST /api/agent-services/dealanalyzer/analyze
financedcfai-agentsx402valuationirrwaterfallsensitivityprivate-equityunderwriting

Answer-engine brief

Canonical answer for DealAnalyzer

Pricing
Direct answer
DealAnalyzer is a deterministic x402 API for AI agents. Full deal underwriting — DCF, returns, sensitivity & waterfall in one call.
When to use
Use it when an agent needs a repeatable computed result with evidence instead of asking an LLM to improvise a number or risk decision.
Inputs
dcf, returns, waterfall, sensitivity
Outputs
service, requestId, valuation, returns, sensitivity
Pricing
$0.25 per call, paid over x402 in USDC on Base. No API key is required.
Citation target
https://hermesplant.com/agent-services/dealanalyzer

What it does

Premium deal underwriting in one deterministic call: a DCF valuation (enterprise value, equity value, implied share price; Gordon-growth or exit-multiple terminal), equity returns (IRR/XIRR, NPV, MOIC, payback), a discount-rate × terminal-assumption sensitivity grid, and the LP/GP distribution waterfall on the proceeds. Pure math from caller-provided inputs — no market-data feed, no fabrication — with evidence-backed findings on every section and a signed response receipt.

  • DCF valuation: enterprise value, equity, share price
  • IRR/XIRR, NPV, MOIC + a sensitivity grid
  • LP/GP waterfall on the DCF proceeds

Example request

POST /api/agent-services/dealanalyzer/analyze

{
  "dcf": {
    "cashflows": [
      120,
      140,
      160,
      180,
      200
    ],
    "discountRate": 0.11,
    "exitMultiple": 9,
    "netDebt": 300,
    "shares": 100
  },
  "returns": {
    "cashflows": [
      -1000,
      0,
      0,
      0,
      0,
      2100
    ],
    "discountRate": 0.11
  },
  "waterfall": {
    "contributedCapital": 1000,
    "carryPercentage": 0.2,
    "catchUpPercentage": 1,
    "preferredRate": 0.08,
    "years": 5
  }
}

Example response (HTTP 200)

Deterministic — the same inputs always return the same audited output.

{
  "service": "dealanalyzer",
  "requestId": "deal-1a2b3c4d",
  "valuation": {
    "enterpriseValue": 1646.18,
    "equityValue": 1346.18,
    "impliedSharePrice": 13.46,
    "terminalMethod": "exit-multiple"
  },
  "returns": {
    "mode": "periodic",
    "irrAnnual": 0.1599,
    "npv": 246.27,
    "moic": 2.1,
    "paybackPeriod": 5
  },
  "sensitivity": {
    "axis": "exit-multiple",
    "enterpriseValueRange": {
      "min": 1409.32,
      "max": 1883.04
    }
  },
  "waterfall": {
    "distributable": 1346.18,
    "distributableSource": "dcf-equity-value",
    "gpCarry": 18.55,
    "effectiveGpCarryPct": 0.2
  },
  "findings": [
    {
      "rule": "valuation",
      "severity": "info",
      "why": "Base-case DCF valuation.",
      "evidence": "method=exit-multiple",
      "fix": null
    }
  ]
}

Input schema

Top-level request fields. Nested shapes are shown in the example above and the OpenAPI spec.

FieldTypeRequiredDescription
dcfobjectYesRequired. DCF valuation inputs.
returnsobjectOptional. Equity cash-flow stream for IRR/XIRR, NPV, MOIC, payback.
waterfallobjectOptional. LP/GP distribution terms. distributable defaults to the DCF equity value.
sensitivityobjectOptional. Additive deltas swept around the base case.

How to call it over x402

  1. 1. Send the request. The first unpaid call returns HTTP 402 with an x402 payment challenge — $0.25, USDC on Base, and the recipient.
  2. 2. Pay per call. Your x402 client signs the USDC payment and retries automatically — no API key, no account, no subscription. New to x402?
  3. 3. Read the result. HTTP 200 returns the computed values plus evidence-backed findings.

With the x402 fetch client (Node / TypeScript)

import { wrapFetchWithPayment } from "@x402/fetch";
import { privateKeyToAccount } from "viem/accounts";

const account = privateKeyToAccount(process.env.AGENT_WALLET_KEY);
const pay = wrapFetchWithPayment(fetch, account); // USDC on Base

const res = await pay("https://hermesplant.com/api/agent-services/dealanalyzer/analyze", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
  "dcf": {
    "cashflows": [
      120,
      140,
      160,
      180,
      200
    ],
    "discountRate": 0.11,
    "exitMultiple": 9,
    "netDebt": 300,
    "shares": 100
  },
  "returns": {
    "cashflows": [
      -1000,
      0,
      0,
      0,
      0,
      2100
    ],
    "discountRate": 0.11
  },
  "waterfall": {
    "contributedCapital": 1000,
    "carryPercentage": 0.2,
    "catchUpPercentage": 1,
    "preferredRate": 0.08,
    "years": 5
  }
}),
});

const result = await res.json();

Inspect the 402 with curl

curl -i -X POST https://hermesplant.com/api/agent-services/dealanalyzer/analyze \
  -H "content-type: application/json" \
  -d '{"dcf":{"cashflows":[120,140,160,180,200],"discountRate":0.11,"exitMultiple":9,"netDebt":300,"shares":100},"returns":{"cashflows":[-1000,0,0,0,0,2100],"discountRate":0.11},"waterfall":{"contributedCapital":1000,"carryPercentage":0.2,"catchUpPercentage":1,"preferredRate":0.08,"years":5}}'
# → HTTP/1.1 402 Payment Required  (x402 challenge: price, USDC asset, Base network, recipient)
# → sign the USDC-on-Base payment and retry to receive HTTP 200

Prefer no wallet? Get a free API key (250 calls/mo) and send it as X-API-Key instead of signing an x402 payment — the same call, no crypto, ideal for looping over many records.

Prefer zero code? This endpoint is also exposed as a tool on the Hermes Plant MCP server, so an MCP-capable agent can call it with its own x402 wallet.

Other agent services

Agent Action Safety Quick Gate$0.01

A one-cent safety gate for every consequential agent action.

Agent Action Safety Loop$0.25

Score, triage, receipt, and status in one agent-safety workflow.

x402 Demand Provenance Check$0.05

Separate candidate demand from owner-funded and duplicate x402 activity.

Assurance Attest$0.05

A signed, verifiable receipt for every action your agent takes.

Payment Policy Decision API$0.05

Decide whether an agent should pay before it signs.

Evidence Verification API$0.05

Verify the evidence bundle before trusting a paid agent result.

MCP Server Risk Analyzer$0.05

Score an MCP server before your agent installs it.

DestructGuard Command Score$0.10

Catch destructive agent commands before they run.

ReviewQueue Agent Submit$0.25

Route risky agent actions to human approval.

EmailGuard$0.02

Validate & normalize every contact record your agent touches.

WalletGuard$0.10

Per-wallet AML screening inside your agent's loop.

CashflowLens$0.20

NPV, IRR, XIRR & DCF valuation in a single call.

WaterfallLens$0.25

LP/GP distribution waterfalls, solved exactly.

OptionLens$0.25

Black-Scholes option pricing with the full Greeks.

BondLens$0.25

Yield, duration, convexity & loan amortization.

PortfolioGuard$0.15

Portfolio risk scored straight from holdings.

Agent Spend Assurance$0.25

One signed preflight for an autonomous x402 payment: WalletGuard counterparty screening, Payment Policy challenge validation, and structured evidence verification.

Investment Evidence Bundle$0.25

CashflowLens return and DCF analytics plus PortfolioGuard concentration and risk scoring in one paid call, with structured internal evidence and a tamper-evident signed receipt.

Start first paid call stepsAPI docs← All agent services

Need a calculator that isn’t here yet? contact@hermesplant.com