
b2a toolkit
一个轻量级框架,用于将任何API暴露为与智能体兼容的工具,支持OpenAI MCP规范、LangChain和CrewAI。
Repository Info
About This Server
一个轻量级框架,用于将任何API暴露为与智能体兼容的工具,支持OpenAI MCP规范、LangChain和CrewAI。
Model Context Protocol (MCP) - This server can be integrated with AI applications to provide additional context and capabilities, enabling enhanced AI interactions and functionality.
Documentation
B2A Toolkit 🚀
A lightweight framework to expose any API as an agent-compatible tool. B2A Toolkit makes it easy to create tools that can be used by AI agents, with built-in support for OpenAI's MCP spec, LangChain, and CrewAI.
⭐️ If you find this toolkit useful, please consider giving it a star on GitHub! ⭐️
Installation
pip install b2a-toolkit
Quick Start
- Define a tool using the
@define_tooldecorator:
from toolkit import define_tool, ToolAuth
@define_tool(
name="create_expense",
description="Creates an expense in the system",
inputs={
"amount": "number",
"category": "string",
"description": "string",
"date": "string"
},
output_type="object",
output_description="The created expense object",
auth=ToolAuth(
type="oauth",
required=True,
scopes=["expenses:write"]
)
)
def create_expense(amount: float, category: str, description: str, date: str):
# Your implementation here
return {"id": "exp_123", "amount": amount, ...}
- Build the tool manifest:
toolkit build examples/expense_tool.py -o manifest.json
- Test your tool:
toolkit test create_expense examples/expense_tool.py
- Start the tool server:
toolkit serve examples/expense_tool.py
This starts a local server with:
- GET
/manifest.json- Get tool definitions - POST
/run/<tool_name>- Execute a tool
- Set up webhooks for monitoring:
# Add a webhook for all tools
toolkit webhook add https://your-server.com/webhook
# Or add tool-specific webhook with signature verification
toolkit webhook add https://your-server.com/webhook --tool create_expense --secret your-secret
# List registered webhooks
toolkit webhook list
- Monitor your tools:
# View recent tool calls
toolkit logs --limit 10
# Follow logs in real-time
toolkit logs --follow
# Filter logs for specific tool
toolkit logs --tool create_expense
# Launch web dashboard
toolkit dashboard
- Replay and debug tool calls:
# Get a call ID from logs
toolkit logs --tool create_expense --limit 1
# Replay that specific call
toolkit replay <CALL_ID> examples/expense_tool.py
Tool Definition
The @define_tool decorator takes the following parameters:
name: Name of the tooldescription: Description of what the tool doesinputs: Dictionary mapping input parameter names to their typesoutput_type: Type of the tool's outputoutput_description: Description of the tool's outputauth: Optional authentication configurationversion: Version of the tool (default: "0.1.0")tags: Optional list of tags/categories
CLI Commands
Build Manifest
toolkit build <module_path> [--output <output_file>] [--format <json|openapi>]
Start Server
toolkit serve <module_path> [--host HOST] [--port PORT]
Test Tool
toolkit test <tool_name> <module_path>
View Logs
# View recent logs
toolkit logs [--tool TOOL_NAME] [--limit N] [--format text|json]
# Follow logs in real-time
toolkit logs --follow
# Inspect specific tool usage
toolkit inspect TOOL_NAME --last 5
Manage Webhooks
# Add a webhook
toolkit webhook add <URL> [--tool TOOL_NAME] [--secret SECRET]
# List registered webhooks
toolkit webhook list
# Remove a webhook
toolkit webhook remove <URL> [--tool TOOL_NAME]
Webhooks receive events:
tool.call: When a tool execution startstool.success: When a tool execution succeedstool.error: When a tool execution fails
Example webhook payload:
{
"event": "tool.success",
"tool": "calculator",
"timestamp": "2024-03-14T12:34:56.789Z",
"data": {
"inputs": {
"x": 10,
"y": 5,
"operation": "add"
},
"outputs": {
"result": 15
}
}
}
Replay Tool Calls
# Replay a specific tool call using its ID
toolkit replay <CALL_ID> <module_path>
The replay feature allows you to:
- Re-execute previous tool calls
- Compare original and replay outputs
- Debug tool behavior changes
- Verify tool consistency
Launch Dashboard
toolkit dashboard [--host HOST] [--port PORT]
Examples
Check out the examples/ directory for more examples:
expense_tool.py: A simple expense creation tool- More examples coming soon...
Features
-
Tool Definition
- Simple decorator-based API
- Input/output validation
- Type checking and conversion
- Built-in documentation support
-
Tool Server
- Local HTTP server for tool execution
- Automatic manifest generation
- RESTful endpoints for tool invocation
- Built-in validation and error handling
-
Authentication
- OAuth support
- API key support
- Configurable scopes
- Optional auth requirements
-
Framework Support
- OpenAI MCP spec compatibility
- LangChain tool format
- CrewAI integration
-
Tool Observability 🔍
- Per-call logging with unique IDs
- Real-time log streaming
- Web dashboard for monitoring
- Usage analytics and debugging
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
This project is licensed under the Apache License 2.0 - see the LICENSE file for details.
Quick Start
Clone the repository
git clone https://github.com/ratis-ai/b2a-toolkitInstall dependencies
cd b2a-toolkit
npm installFollow the documentation
Check the repository's README.md file for specific installation and usage instructions.
Repository Details
Recommended MCP Servers
Discord MCP
Enable AI assistants to seamlessly interact with Discord servers, channels, and messages.
Knit MCP
Connect AI agents to 200+ SaaS applications and automate workflows.
Apify MCP Server
Deploy and interact with Apify actors for web scraping and data extraction.
BrowserStack MCP
BrowserStack MCP Server for automated testing across multiple browsers.
Zapier MCP
A Zapier server that provides automation capabilities for various apps.