Define the operation once with a typed input contract, optional output contract and one run function.
ActionMesh
ActionMesh is a framework-agnostic TypeScript registry that keeps an operation’s schema, implementation and failure contract in one place while transports stay thin.

What it does,
without the theatre.
A useful capability is often reimplemented as a backend route, agent tool, MCP handler and CLI script. Those copies gradually disagree on validation, errors, retries and behavior.
Keep machine-readable failure codes and retryability beside the action itself.
Make MCP-style, HTTP and CLI surfaces thin translation adapters.
Stay framework-agnostic so the action layer can sit inside an existing application rather than replace it.
What the system is meant to preserve.
- 01One implementation per capability
- 02Adapters translate; they do not own business logic
- 03Invalid input never reaches the action body
- 04Retry behavior should be explicit rather than inferred from prose
Is ActionMesh an agent framework?+
No. It intentionally does not own the model loop, UI, database or queue. It is a small shared-action layer.
Does it ship the official MCP SDK transport?+
The current v0.2.0 includes an MCP-style listTools/callTool adapter. An official @modelcontextprotocol/sdk transport is on the roadmap and is not claimed as shipped yet.
Which adapters exist today?+
The core registry is exposed through MCP-style tool, Node HTTP and CLI invocation adapters.