AI agents that need Celo cannot be handed a pile of ABIs. Reads, unsigned prepares, and executes have to share one catalog so MCP, REST, hosted HTTP, and browser apps do not drift.
← All work
Problem What I built Technical notes

- A TypeScript SDK (`@andrewkimjoseph/celina-sdk`) whose Zod-typed tool catalog powers every surface.
- Local stdio MCP (`celina-mcp`, 87 tools) for Cursor, Claude Desktop, and LM Studio — writes stay on the machine with env keys.
- Hosted read-only MCP at mcp.usecelina.xyz (48 tools), a public REST API, a Telegram bot, docs, and a live stats dashboard.
- Celeste as the wallet-signed reference app, plus ERC-8021 attribution on prepared transactions.
- One catalog, four surfaces: `filterToolDefinitions({ surface: "mcp" | "browser" })` keeps schemas in sync.
- Serialized prepared flows with sign-time simulation so agents dry-run before broadcast; hosted endpoints never hold keys.
- Celo-native depth: Mento FX, GoodDollar reserve (G$ ↔ USDm), Uniswap v4, Aave V3, governance, staking, Self Agent ID, AgentKarma.
- MIT-licensed meta-repo of seven packages, published on npm, with GitBook docs and EIP-8004 / OASF agent discovery.


