Hermes Plant logo

Hermes Plant

Agent Action Safety for autonomous tools

Open navigation

WaterfallLens

$0.25/callPer-analysis

LP/GP distribution waterfalls, solved exactly.

POST /api/agent-services/waterfall/distribute
financewaterfallai-agentsx402private-equitycarried-interestpreferred-returnlp-gpreal-estate

Answer-engine brief

Canonical answer for WaterfallLens

Pricing
Direct answer
WaterfallLens is a deterministic x402 API for AI agents. LP/GP distribution waterfalls, solved exactly.
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
contributedCapital, distributable, carryPercentage, catchUpPercentage, preferredReturnAmount
Outputs
service, requestId, preferredReturn, summary, tiers
Pricing
$0.25 per call, paid over x402 in USDC on Base. No API key is required.
Citation target
https://hermesplant.com/agent-services/waterfall

What it does

Deterministic LP/GP distribution waterfall for private equity, venture, and real estate. Allocates distributable cash through the standard tiers — return of capital, preferred return (hurdle), GP catch-up, carried-interest split — and returns the exact LP/GP split, per-tier breakdown, LP MOIC, GP carry, and effective carry %. The catch-up is solved so the GP lands at exactly its carry % of total profit. Pure math from caller-provided terms — no data feed, no fabrication.

  • Return of capital → preferred → catch-up → carry
  • Exact effective carry %, per-tier breakdown
  • Compounded or simple preferred return

Example request

POST /api/agent-services/waterfall/distribute

{
  "contributedCapital": 1000000,
  "distributable": 2000000,
  "carryPercentage": 0.2,
  "catchUpPercentage": 1,
  "preferredRate": 0.08,
  "years": 5,
  "compounding": "compounded"
}

Example response (HTTP 200)

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

{
  "service": "waterfall",
  "requestId": "wf-1a2b3c4d",
  "preferredReturn": 469328.08,
  "summary": {
    "totalDistributable": 2000000,
    "lpDistribution": 1800000,
    "gpDistribution": 200000,
    "lpProfit": 800000,
    "totalProfit": 1000000,
    "lpMultiple": 1.8,
    "gpCarry": 200000,
    "effectiveGpCarryPct": 0.2
  },
  "tiers": [
    {
      "tier": 1,
      "name": "return-of-capital",
      "lp": 1000000,
      "gp": 0,
      "total": 1000000
    },
    {
      "tier": 2,
      "name": "preferred-return",
      "lp": 469328.08,
      "gp": 0,
      "total": 469328.08
    },
    {
      "tier": 3,
      "name": "gp-catch-up",
      "lp": 0,
      "gp": 117332.02,
      "total": 117332.02
    },
    {
      "tier": 4,
      "name": "carried-interest-split",
      "lp": 330671.92,
      "gp": 82667.98,
      "total": 413339.9
    }
  ],
  "findings": [
    {
      "rule": "summary",
      "severity": "info",
      "why": "Effective GP carry as a share of total profit, with the preferred-return basis used.",
      "evidence": "effectiveGpCarryPct=0.2131 preferredBasis=compounded",
      "fix": null
    }
  ]
}

Input schema

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

FieldTypeRequiredDescription
contributedCapitalnumberYesTotal LP capital to be returned in tier 1 (required, > 0).
distributablenumberYesTotal cash available to distribute through the waterfall (required, >= 0).
carryPercentagenumberGP carried interest as a fraction, e.g. 0.20 for 20% (default 0.20).
catchUpPercentagenumberGP share of distributions during the catch-up tier: 1.0 = full (100%) catch-up (default), 0 = no catch-up. Must exceed carryPercentage for a standard catch-up.
preferredReturnAmountnumberExplicit preferred-return (hurdle) dollar amount. Overrides preferredRate/years if given.
preferredRatenumberAnnual preferred-return rate, e.g. 0.08 for 8%. Used with years when preferredReturnAmount is absent.
yearsnumberHolding period in years over which the preferred return accrues.
compoundingstringHow the preferred return accrues from preferredRate/years: 'compounded' (default) or 'simple'.

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/waterfall/distribute", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({
  "contributedCapital": 1000000,
  "distributable": 2000000,
  "carryPercentage": 0.2,
  "catchUpPercentage": 1,
  "preferredRate": 0.08,
  "years": 5,
  "compounding": "compounded"
}),
});

const result = await res.json();

Inspect the 402 with curl

curl -i -X POST https://hermesplant.com/api/agent-services/waterfall/distribute \
  -H "content-type: application/json" \
  -d '{"contributedCapital":1000000,"distributable":2000000,"carryPercentage":0.2,"catchUpPercentage":1,"preferredRate":0.08,"years":5,"compounding":"compounded"}'
# → 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.

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.

DealAnalyzer$0.25

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

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