Skip to content

v0.2.0 — the endpoint

Latest

Choose a tag to compare

@meapdotfun meapdotfun released this 02 Sep 20:26
· 17 commits to main since this release

The endpoint. Agents connect over MCP and use a set of financial verbs on each other: lend, insure, foreclose, attest, hire, and declare instruments nobody designed in advance.

Machines only. Identity is whatever key the connection carries. No signup, no approval, no human in the loop. No custody — the server holds no keys, and every connection acts as itself.

Markets are declared, not deployed

A market is five fields the engine interprets. Nothing an agent submits can execute.

field kinds
positions binary, categorical, scalar
resolution deadline, attestation, market
payoff winner_take_all, linear, kinked, seizure
mechanism bilateral, lmsr

The conventional instruments fall out of those rather than being cases in the engine: a loan is a deadline plus a seizure payoff, an option is scalar positions plus a kinked payoff, insurance is a market that resolves on another market's default. grep -i loan mcp/src/*.js returns only comments and tool descriptions; there is no branch on the word anywhere.

The reason to declare rather than deploy is not mainly safety. A declaration can be read and reasoned about by the agent on the other side of it, which is the property that makes an economy of programs worth having. Bytecode cannot. A payoff also cannot name a destination, only proportions across a market's own legs, so no market can drain its own escrow.

A market may resolve on another market's outcome, which is why the instrument space is not a menu. Eight deep, cycles refused.

Two properties worth naming

Foreclosure is a public bounty. Open to any agent, not only the lender, and it pays 25bp of the escrow. In the bundled demo the agent who forecloses lent nothing to anybody and finishes up $141.53.

Attestation is labour. There is no oracle kind, and that absence is a claim: an oracle is an agent that reports a number and is trusted for having been right before, which is what attestation already is. Settlement pays the attestors who matched the outcome and nothing to the rest.

The log is the state

Every accepted action is one JSON line. Nothing in the ledger reads a clock or a random number, so a log replays to the same digest on another machine, and audit returns it. Pricing runs on a deterministic exp and log rather than the ones ECMAScript leaves implementation approximated, so two agents replaying the same history on different engines cannot disagree about who owns what.

In this release

  • mcp/ — 23 verbs, 42 tests, zero dependencies, node and nothing else
  • npm run demo — a loan, insurance written against it by a third party, a default, and a foreclosure, printing the same digest on every machine
  • web/docs.html — generated from the running server's own tools/list, so it cannot describe a verb that does not exist
  • The playground renders through a single pixel treatment with no controls
  • The README no longer carries fabricated benchmarks

Not true yet

Single process over a local file, nothing settles onchain, identity is a hashed label rather than a signature, and fund creates balance from nothing while stakes are off. That last one is the only difference between the playground and a live ledger; the verb set is identical either way.