skip to content
Kiran S Baliga
← Back to selected work
Siren · Engineering case study

Communication rails and MCP tooling for autonomous AI agents.

At Siren, I engineered the developer infrastructure enabling AI agents to communicate: shared tool schemas, TypeScript and Python agent toolkits, and a standalone Model Context Protocol (MCP) server.

Associate Software Engineer KeyValue Software Systems · Client engagement: Siren
Sep 2023–Feb 2026 trysiren.io ↗

Model Context Protocol (MCP) · TypeScript · Python · OpenAI Functions · LangChain · CrewAI

The context

Siren provides omni-channel messaging and notification infrastructure. As autonomous agent workflows (OpenAI Function Calling, LangChain, CrewAI) began executing user-facing tasks, agents needed safe, deterministic ways to trigger notifications, verify recipients, and inspect delivery status without manual API integration.

The core architectural goal was to turn imperative REST API endpoints into clean, agent-readable semantic tool schemas with strict parameter boundaries and deterministic execution safeguards.

Architecture 01

Zero-install Model Context Protocol (MCP) server

I built and distributed @trysiren/mcp, a standalone server implementing Anthropic’s Model Context Protocol. Supporting both stdio and Server-Sent Events (SSE) transports, it allowed AI coding assistants (Claude Desktop, Cursor, Antigravity) to send notifications directly from developer environments.

This eliminated ~75% of developer setup overhead: rather than installing libraries, importing HTTP clients, and managing secret rotation in application code, developers execute the server with zero installation via npx @trysiren/mcp.

Making existing products AI-native doesn’t require rebuilding the backend. It requires building an intuitive, deterministic discovery and execution layer for models.

Architecture 02

Dual-stack agent toolkits with idempotency guards

For programmatic multi-agent swarms, I authored and published @trysiren/agent-toolkit on npm and siren-agent-toolkit on PyPI. Both feature automatic conversion adapters for LangChain Tools and CrewAI Actions.

Because LLM tool-calling can trigger stochastic retry loops, we embedded deterministic idempotency key derivation directly into the toolkits. Multiple identical intents from an agent resolve to the same underlying dispatch, preventing accidental notification spam.

What changed

~75%

Reduction in developer setup effort with zero-install MCP vs. manual SDK integration.

100+

Peak registry downloads across npm and PyPI ecosystem distributions.

<1ms

Serialization overhead across schema parsing and parameter validation pipelines.

Building agent tooling or Model Context Protocol integrations? Let’s talk about it.