Agentic Behaviours.
By Design.
Expose a manifest. Any AI agent discovers your service, reads what commands it accepts and what events it produces, and starts interacting — no custom integration required.
Capabilities
Built for agent interoperability
Expose what your service does — the operations it accepts and the facts it produces — in a standard form any caller can discover and use. Over HTTP, MCP, or A2A.
Discoverable by Default
Expose /.well-known/bsp and your service becomes immediately usable by any agent or LLM client — no custom integration, no bespoke connector, no onboarding docs. Capabilities, schemas, and transport bindings are all self-describing.
Behaviour, Not Resources
BSP is not REST. There are no resources to manipulate. Callers express named intents — commands like SignContract or SubmitOrder — and observe the facts that result. The domain language lives in the protocol, not buried in status-field patches.
Observable Event Log
Every BSP service exposes a queryable event log — filterable by type, source, time range, or correlation ID. Correlate results back to the command that caused them, build projections, or feed an AI agent with factual history instead of synthetic prompts.
Queries
Read the current state of a service without sending a command. GET /queries returns the query catalogue — each query is self-documenting with a JSON Schema for its parameters and response. Reads and writes are cleanly separated at the protocol level.
Instant LLM Integration
Implement BSP and get MCP for free. Point bsp-mcp at any BSP-compliant endpoint and every LLM client — Copilot, Claude, ChatGPT — immediately discovers commands, reads state, and sends requests. No custom tool definitions required.
Live Events & History
Subscribe to events the moment they are produced — or query what already happened. GET /events/stream opens a live SSE connection for real-time results. GET /events queries the historical log. Together they give you the complete picture, past and present.
See it in action
Discovery manifest
Every BSP endpoint exposes a /.well-known/bsp manifest. Consumers discover agents, capabilities, and transports in a single request.
{
"BSP": {
"version": "0.5.9",
"services": {
"io.bsp.agents": {
"version": "0.5.9",
"description": "Service registry, command ingestion, published events",
"http": {
"endpoint": "https://api.example.com/"
}
}
},
"capabilities": [
{
"name": "io.bsp.agents.commands",
"version": "0.5.9",
"description": "Command catalogue and ingestion",
"spec": "https://behavioralstate.io/specs/agents/commands",
"schema": "https://behavioralstate.io/v1/schemas/agents/commands.json"
}
],
"services": [
{
"id": "negotiation",
"name": "Contract Negotiation",
"accepts": ["ProposeCounter", "AcceptContract"],
"produces": ["CounterProposed", "ContractAccepted"],
"status": "running"
}
]
}
}Designed for everyone
Who is BSP for?
For Developers
Build command-and-event services on an open foundation. JSON Schema definitions, OpenAPI specs, and transport bindings — everything you need to implement BSP.
For Businesses
Expose your services to any agent in the world. No bespoke integrations — just a manifest describing what you accept and produce.
For AI Platforms
Discover and interact with any BSP-compliant agent using MCP, A2A, or simple HTTP. Compatible with existing agent frameworks.
For IoT & Sensors
Even a temperature sensor can be an BSP service — it accepts commands and publishes events, and any caller can discover it via the manifest.
Get started today
BSP is open-source under Apache 2.0. Explore the spec, read the schemas, and start building.