Integrations
Import the tools your application can call, then decide where those calls should produce ActionReceipts.
These adapters are included in Bulla 0.47.1. MCP host readers find local configuration files; framework adapters read tool definitions from source. Both produce the same Bulla manifest format.
Package version used on this page
The command shown here comes from the package published on PyPI, not from unreleased repository code.
Technical evidence
Commands labelled published are captured from the exact artifact accepted by PyPI; repository source is not substituted for it.
The package includes 7 host readers and 3 framework adapters. These are local integration adapters, not a marketplace or provider registry. Static parsing cannot see tools created only while an application is running.
Limits of static discovery
These adapters come from the published package. Static analysis cannot see tools created only while an application is running.
Technical evidence
The documented command surface is pinned to the accepted published wheel; static adapters cannot observe dynamically registered tools.
MCP hosts
Bulla can read supported MCP host configuration files on the current machine. Auto-detection tries each registered host and uses the first matching configuration. Pass --host NAME to choose one explicitly, or run bulla hosts list to see what Bulla found.
Cursor
cursor~/.cursor/mcp.json · .cursor/mcp.json (workspace)
Top-level mcpServers. Workspace-level config takes precedence over user-level.
Claude Code
claude-code~/.claude/settings.json · .claude/settings.json (workspace)
Top-level mcpServers or nested mcp.servers. Cross-platform.
Cline
cline<editor>/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
The same extension is scanned across Code, Code Insiders, Cursor, Windsurf, and VSCodium.
Claude Desktop
claude-desktop~/Library/Application Support/Claude/... · ~/.config/Claude/... · %APPDATA%/Claude/...
Top-level mcpServers. Cross-platform.
Zed
zed~/.config/zed/settings.json · %APPDATA%/Zed/settings.json
Servers are nested under context_servers.
Windsurf
windsurf~/.codeium/windsurf/mcp_config.json
Top-level mcpServers. Cross-platform through the Codeium config directory.
OpenAI Codex
codex~/.codex/config.toml · .codex/config.toml (workspace)
TOML format with [mcp_servers.<name>] tables.
$ bulla hosts list
$ bulla audit # auto-detect
$ bulla audit --host claude-code # force a specific host
$ bulla audit --host zed cfg.jsonFramework adapters
Agent frameworks often declare tools in Python instead of a configuration file. Bulla reads common source patterns without executing the application and writes a manifest. It cannot see tools assembled dynamically at runtime.
Anthropic Messages API
anthropic-messages.json or a top-level Python tools literal
Direct mapping from name, description, and input_schema dictionaries.
LangGraph / LangChain
langgraphPython source file or directory
@tool, BaseTool subclasses, and StructuredTool.from_function.
CrewAI
crewaiPython source file or directory
@tool and BaseTool declarations with name, description, and args_schema.
$ bulla frameworks list
$ bulla import langgraph workflow.py --out manifest.json
$ bulla import crewai agents/ --audit
$ bulla import anthropic-messages tools.json --auditOptional dependencies
Core pip install bulla has no framework dependencies. Source parsing uses the Python standard library. Optional extras add framework-specific schema helpers:
$ pip install bulla[langgraph]
$ pip install bulla[crewai]
$ pip install bulla[all]Adding an integration
Host readers and framework adapters each use a small registered module. See bulla/docs/HOSTS.md and bulla/docs/FRAMEWORKS.md for the interface and a worked example.
For high-value targets not yet covered — Cody, Aider, Goose, Roo Code, Continue, AG2/AutoGen, Mastra, LlamaIndex, Pydantic AI — the protocol is designed so adapters are typically one new file plus a fixture and test. Contributions welcome.