LLPRO

Home / Agents / Verified Attribution

Verified Attribution

Signed record of which keys said they referred and completed an agent-made sale or job, and the order we saw it in. We witness; we hold no money.

Live

What it does

Verified Attribution keeps one case per referral. The referrer signs a referral that names the seller, pins the seller's public key and the hash of the commission terms; the seller signs an acknowledgement of the same terms, then reports a result (sale or job, order hash, amount, return window) and any reversal; a buyer or an evidence party such as a payment processor can sign the same order hash. We check every signature and key, the time order and that one order counts for one case, chain the events and sign a receipt with our time. attribution_statement then gives the case state (open, acknowledged, hold_period, settleable, fully_reversed), derived from the receipts by published rules you can re-run offline. Kept 400 days after the last event: ids, keys, hashes, amounts, signatures, times (the A2A door keeps a result 7 days). Never kept: order contents, names, addresses. No model. No money moves.

Where it sits
Agents › Trust › Verify
Who it is for
Agents and businesses that pay or earn commissions on agent-made sales or jobs: the agent that referred, the seller that completed, and whoever settles. Feeds the identity and payment rails road: commissions settled on a signed record, not on a ledger one side keeps.
Price
Free: 120 events an hour per address, 40 new cases a day. A fee per verified result is planned, not charging.
Limits
Events: referral (referrer: seller_id, seller_key, offer_hash, terms_hash, window_days 1 to 90), ack (seller: terms_hash), result (seller: kind sale or job, order_hash, amount_minor, currency, hold_days, confirmer_keys: up to 3 keys allowed to confirm, may be empty), confirm (a buyer or evidence party whose key the seller named: order_hash), reversal (seller: reason, reversed_minor). Hashes are SHA-256 hex; amounts are whole minor units; keys are Ed25519 in canonical base64 (weak keys refused). Each event is signed over the canonical JSON of {case_id, event_type, party_id, payload, role, type: attribution-event, v: 1}. Up to 24 events per case, 4 KB per call. A party id keeps one key and one role in a case; the referrer, seller and confirmers hold different keys; the seller key is the one the referrer pinned; a result must land inside the window; one order (seller key and order hash) belongs to one case. Use a long random case id (at least 32 random hex characters): anyone who knows it can read the case, and whoever sends first takes an unused id. A case nobody acknowledges is deleted after 14 days, and a deleted case id cannot be used again. Verified Attribution does not show that the sale or job happened, that a key belongs to the company it claims, that no other event exists or that the commission terms are fair. A seller who never reports a result leaves the case at acknowledged, which is not proof of no sale. The seller names its own confirmer keys and may name keys it controls: the statement says independence is not checked, so whoever settles must know the seller and confirmer keys from outside. The time is our clock and the order we saw events in; no public log yet (bp-ts2). Not a payment, escrow or money transmission service: no funds are held or moved.

For developers: try it

POST https://llpro.ai/mcp  tools/call attribution_record
{"case_id":"<long random id both sides use>","party_id":"agent-r","role":"referrer","event_type":"referral",
 "payload":{"seller_id":"shop-s","seller_key":"<b64>","offer_hash":"<sha256 hex>","terms_hash":"<sha256 hex>","window_days":30},
 "public_key":"<b64>","sig":"<b64 over the canonical JSON of {case_id,event_type,party_id,payload,role,type:'attribution-event',v:1}>"}
-> receipt: seq, witnessed_at, prev_chain_hash, chain_hash, signed observation

tools/call attribution_statement {"case_id":"<id>"}
-> signed statement: state, evidence level, net amount, and every receipt

Offline verifier, rules and test vector: llpro.ai/verified-attribution-verify (attribution_verify.py, runs without our server).

For agents

Tool attribution_record on https://llpro.ai/mcp and in the tools list. Signed answers are checked with the public key below (signer llpro1:wmjdezlpxkcjwezpurvsu7i65e): an Ed25519 signature over the observation as canonical JSON (sorted keys, no spaces).

Public key (base64): knPtMEboNFAMhWajnVA12zj3yp0SrpeSlw7/8Z1qskk=

Road: identity and payment rails. A referring agent and a selling business each sign their part of one case, and whoever settles the commission re-runs the published rules on the receipts instead of trusting one side's ledger. It rides the Countersign hub: look up who a key is claimed to be there, and pin the seller key from outside. It records signed events; it does not show the sale happened and holds no money. How a stamp is checked: https://llpro.ai/stamp

Next

For agents: this page as Markdown · JSON · llms.txt · MCP endpoint llpro.ai/mcp · agent card