Changelog
Product, pricing, and methodology updates. Dated, in reverse chronological order.
Entries are written in the first person of the project, not of an author. Material changes only — not every commit. Each entry is a durable anchor; once published, it is not edited.
2026-05-05 · Pellet Wallet · real-time agent chat + MCP session notifications
The wallet chat becomes a first-class interface between users and their connected agents. Three changes land together:
- MCP session notifications. When an agent sends
initialize, the server creates a stateful MCP session. The agent opens aGET /mcpSSE stream and receivesnotifications/messagepushes whenever the user sends a chat message. No polling, no configuration — baked into the connection protocol. Sessions auto-evict after 30 minutes; clients reconnect transparently. wallet.thread.awaittool. For agents that don't maintain an SSE stream, this tool blocks for up to 55 seconds on the server's pg_notify bus and returns the message the instant it arrives. Real-time delivery without polling. Call in a loop for continuous conversation.- In-wallet chat UI. Dashboard chat drawer with server-rendered initial messages, SSE-based live updates, agent identity labels, and reconnection on stream drop. The wallet chat replaces the terminal as the primary way users interact with their connected agent.
The server now supports three delivery tiers — push (MCP SSE), long-poll (await), and webhook — so agents can pick the mechanism that fits their runtime. All three use the same pg_notify bus; delivery latency is identical.
2026-04-29 · Pellet Wallet · live on testnet (Phases 0 → 5)
Pellet ships its first agent wallet — passkey-rooted, self-custody, on-chain-cap-bounded, sponsored-gas, public-receipts. End-to-end on Moderato testnet (chainId 42431).
The full path, from manifesto to working autonomous payments, in one day:
- Phase 0 —
/walletmanifesto + waitlist, Stripe-Link contrast, Pellet Wallet name picked. Read the page. - Phase 1 — schema (
wallet_users,wallet_sessions,wallet_spend_log), CLI scaffold (@pelletnetwork/cli), device-code pairing endpoints. No signing yet. - Phase 2 — real WebAuthn passkey enrollment + sign-in via
@simplewebauthn/serverv13.3.0. Replaces the placeholder approve-flow; signed-cookie challenge + user session storage; HMAC overWALLET_CHALLENGE_SECRET. - Phase 3.A — agent session key generation + AES-256-GCM at rest (
WALLET_MASTER_KEY). Schema columnwallet_sessions.session_key_ciphertextpopulated at approve-init; bearer minted at poll-claim time. - Phase 3.B.1 — Tempo SDK foundation.
viem/tempoconfirmed as the canonical signing surface (no hand-rolling RLP envelopes); migration0006addsauthorize_tx_hash+public_key_uncompressed;coseToUncompressed+passkeyAddresshelpers replace the placeholder address derivation. T3 selector0x980a6025(T2 was rejected asLegacyAuthorizeKeySelectorChangedpost-2026-04-21). - Phase 3.B.2 — first commit that writes to Tempo. Browser builds
Account.fromWebAuthnP256+Account.fromSecp256k1(privateKey, { access: userAccount })+withRelay(rpc, sponsor, { policy: 'sign-only' })and callsclient.accessKey.authorizeSync({ accessKey, expiry, feePayer: true, gas: 5_000_000n, limits, scopes }). Sponsor co-signs, broadcasts, tx confirms. - Phase 3.B.3 — server-side receipt verification in
/approve-finalize. Pollseth_getTransactionReceipt5x with 1.5s backoff, rejects unlessstatus=success+to=AccountKeychain+from=user.managed_address. - Phase 4 —
pellet pay. CLI command +/api/wallet/payendpoint. Decrypts session key, signstransferWithMemoTempoTransaction, sponsored gas, returns tx hash + explorer URL. Three real cap-bounded payments confirmed on Moderato within an hour of shipping. - Phase 5 — MCP server bundled with the CLI.
pellet mcpexposespellet_status+pellet_payover stdio. One config line installs Pellet Wallet into Claude Code, Cursor, Cloudflare Agents, or the Anthropic API directly.
Trust model documented at Methodology. Full source at github.com/pelletnetwork/pellet.
What's NOT shipped yet: mainnet sponsor (Tempo doesn't run one for Presto; we'll run our own), recovery flow (lose your passkey → lose the wallet — register a second one as a guardian), pellet pay <402-url> auto-mode. All on the docket.
2026-04-29 · cross-rail framing + skill.md install convention
Pellet's positioning shifts to "open ledger of the agent economy, Tempo today." Three reference pages ship:
- /rails — comparison of payment rails relevant to autonomous agents. Tempo MPP (indexed live), Stripe Link (documented, private rail), x402-direct (watching), MCP-native (watching). Card-per-rail with Pellet coverage notes.
- /skills — curated registry of
skill.mdinstall manifests for agent-payment surfaces. Two entries on day one: Pellet (ours) andstripe-link(Stripe's, shipped same day). - /methodology — five-section reference: ingestion, matching, Pattern A/B attribution, provenance, known gaps. Linked from every "recovered from settlement event topic[2]…" footer.
Pellet also gets a /skill.md at the apex — Anthropic-style skill manifest with frontmatter + endpoint docs, the install surface Stripe Link normalized for agent-payment SDKs.
2026-04-29 · gateway routing attribution recovered on-chain
Tempo MPP Gateway settles to one address (0xca4e835f…) for ~17 underlying providers. Per-service attribution recovered via two paths:
- Pattern A — escrow contract
0x33b9…4f25emits aSettlementevent whosetopic[2]is the provider address. Decoded intoagent_events.routed_to_address. ~9% of gateway txs. - Pattern B — user→gateway calldata
bytes32ref's bytes 5–14 are a stable per-service fingerprint set by Tempo's MPP client. Decoded intoagent_events.routed_fingerprint. ~91% of gateway txs (combined with Pattern A: essentially 100%).
Surfaces: dashboard "Top providers (routed)" table, gateway service detail "Underlying providers" table, deep-link /wallet/providers/[address] and /wallet/providers/fp_[hex] pages. Once a provider/fingerprint is labeled in address_labels (one CLI command: npm run label-provider -- <key> "<name>"), the UI lights it up automatically across every surface.
Methodology bumped to v0.2.
2026-04-17 · v2 pricing — measurement has a price
Pellet's v1 schedule priced every MPP endpoint at $0.000000 and the deep briefing at $0.05. That was the right call at zero: it put Pellet in the Tempo MPP directory, unblocked MPPScan indexing, and landed the first paid tx within 48 hours. Free parity across nine measurement endpoints also signals that the category is commoditized, and after a week of operating data we know it isn't — Pellet is the only service on Tempo offering TIP-20 reward attribution, TIP-403 policy state, sub-basis-point peg measurement, and ERC-8004 + TIP-403 wallet intelligence, and none of those have a peer anywhere.
From today, Pellet prices by value delivered, not by Allium or Nansen parity. The schedule below reflects the cost of measurement — not the cost of inference, which other aggregators substitute when the chain read is hard.
Schedule
| Tier | Endpoints | Price (USDC.e · Tempo) |
|---|---|---|
| Free | /stablecoins, /tip403/simulate | $0 |
| Lookup | /addresses/{addr}, /stablecoins/{addr}/peg, /stablecoins/flows | $0.010 |
| Analytics | /stablecoins/flow-anomalies, /stablecoins/{addr}/reserves | $0.020 |
| Composite | /stablecoins/{addr}/risk | $0.050 |
| First-mover | /stablecoins/{addr}/rewards | $0.100 |
| Deep briefing | /tokens/{addr}/briefing | $0.200 |
The two free endpoints stay free on purpose. /tip403/simulate is protocol plumbing — every agent should call it before every TIP-20 transfer to avoid wasting gas on a revert that could have been predicted. /stablecoins is the directory funnel. Volume beats margin for both.
Deep briefing · Section 06
The deep briefing at $0.200 ships today with a new final section: the Coverage & Provenance ledger. For every briefing, Pellet emits:
- Block pin — the exact Tempo block height at which every field was measured, so any consumer can re-verify against an archive node.
- Coverage flags — per-section
complete | partial | unavailablestatus with the pipeline's owncoverage_noteexplaining every partial. No hidden gaps. - Data lineage — the on-chain primitive (precompile, contract, event table) that produced each section. Nothing inferred.
This replaces the natural-language analyst note that earlier versions shipped, retired on 2026-04-17 per the measurement discipline: Pellet ships measurements, not model synthesis. The briefing's defensibility at $0.200 now rests on the composite — eight parallel on-chain aggregators plus a re-verifiable receipt — rather than on a prose paragraph that could be read from any source.
Principles
Three rules drove the schedule:
- Protocol plumbing is free. If every agent should call it, every agent must be able to call it without thinking about cost.
- Lookups are priced at parity, analytics above it. Allium-tier pricing for equivalent work. Derivation and synthesis cost more than reads.
- First-mover data is priced against value, not competition. There is no competitor on Tempo for TIP-20 reward attribution, and Pellet is the only service indexing the reward precompile.
$0.100is the price of knowing the effective APY before deploying capital; the number would be roughly the same with or without a peer, because the buyer's alternative is guessing.
For existing integrations
- MPP clients (
mppx,@pelletfi/mcp) auto-handle the challenge and pay whatever the server asks. Nothing to change. - Pellet Pro subscribers see no per-call charge — the $49/mo tier continues to cover every endpoint.
- MPPScan directory will re-crawl on the next paid tx against Pellet, typically within an hour of the deploy. Agents that route on price may briefly see a stale $0.05 display for the briefing until the re-crawl lands; the live 402 challenge always reflects the current schedule.
See Methodology for the measurement discipline the prices are anchored against.