matimo-bruno
Bruno CLI tools for Matimo - Enable AI agents to autonomously manage, execute, and validate API test collections.
📦 Installation
pip install matimo-bruno
🚀 Quick Start
Python
from matimo import Matimo
from matimo_bruno import get_tools_path
matimo = await Matimo.init(get_tools_path())
# List all collections in workspace
collections = await matimo.execute('bruno_list_collections', {
'workspace_path': './collections'
})
# Get collection metadata before running
info = await matimo.execute('bruno_get_collection_info', {
'collection_path': './collections/payment-api'
})
# Run entire collection
result = await matimo.execute('bruno_run_collection', {
'collection_path': './collections/payment-api',
'environment': 'staging',
'report_path': './reports/staging-results.json'
})
# Run single request for debugging
response = await matimo.execute('bruno_run_request', {
'collection_path': './collections/auth',
'request_name': 'Login',
'environment': 'staging'
})
# Bootstrap from OpenAPI spec
imported = await matimo.execute('bruno_import_openapi', {
'spec_source': 'https://api.example.com/openapi.json',
'output_directory': './collections',
'collection_name': 'Generated API Tests'
})
# Create new collection
created = await matimo.execute('bruno_create_collection', {
'collection_path': './collections/new-service',
'collection_name': 'New Service Tests'
})
# Add a request to an existing collection
added = await matimo.execute('bruno_add_request', {
'collection_path': './collections/new-service',
'request_name': 'get-users',
'method': 'GET',
'url': 'https://api.example.com/users',
})
📋 Available Tools
1. bruno_run_collection
Execute a Bruno API collection with configurable environments, data files, and reporting.
Parameters:
collection_path(required) - Path to collection file or directoryenvironment- Environment name (dev, staging, prod)env_file- Path to environment file overridedata_file- CSV/JSON data file for data-driven testingiteration_count- Number of iterations to rundelay_ms- Delay between requeststags- Comma-separated tags (run requests with ALL tags)exclude_tags- Comma-separated tags (skip requests with ANY tags)tests_only- Run only requests with tests/assertionsbail_on_failure- Stop on first failureparallel- Run requests in parallelsandbox_mode- JavaScript execution mode ('safe' or 'developer')report_format- Report format (json, junit, html)report_path- Path to write report file
Returns: Collection execution results, summary, and report path
2. bruno_run_request
Execute a single request for targeted debugging and validation.
Parameters:
collection_path(required) - Collection directoryrequest_name(required) - Request name to executeenvironment- Environment name overrideenv_file- Environment file overridesandbox_mode- JavaScript execution mode
Returns: Request/response details and assertion results
3. bruno_list_collections
Discover all collections in a workspace.
Parameters:
workspace_path(required) - Workspace directoryfilter- Filter by collection name (substring)
Returns: Array of collection metadata
4. bruno_get_collection_info
Introspect collection structure before execution.
Parameters:
collection_path(required) - Collection path
Returns: Collection structure, requests, environments, variables
5. bruno_import_openapi
Bootstrap a collection from OpenAPI 3.0 specification.
Parameters:
spec_source(required) - Path or URL to OpenAPI specoutput_directory(required) - Where to create collectioncollection_name- Collection namecollection_format- 'bru' or 'opencollection'group_by- Group by 'tags' or 'path'insecure- Skip TLS verification
Returns: Collection path and metadata
6. bruno_create_collection
Create a new empty collection scaffold.
Parameters:
collection_path(required) - Collection creation pathcollection_name(required) - Collection name
Returns: Creation status and path
🔄 Agent Workflows
Autonomous Test Execution
Agent discovers spec → import_openapi → set environment → run_collection → parse results
Multi-Environment Validation
list_collections → for each environment: set_env + run_collection → compare results
Targeted Debugging
get_collection_info → run_request (single endpoint) → analyze response
Data-Driven Testing
run_collection with CSV file → multiple iterations → aggregate metrics
🔐 Authentication
Tools use environment variables for credentials. Bruno CLI manages environment setup - tools wrap CLI execution.
📖 Prerequisites
- Bruno CLI installed globally:
pnpm install -g @usebruno/cli - Python 3.11+
- Bruno collections in
.bruformat or OpenAPI specs
🤝 Integration
Works with:
- LangChain - Convert to StructuredTool
- CrewAI - Convert to BaseTool
- MCP - Expose via JSON-RPC to Claude / other MCP clients
- Native - Direct SDK usage
📝 License
MIT
Release files for matimo-bruno 0.1.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| matimo_bruno-0.1.3.tar.gz | 16.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| matimo_bruno-0.1.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 36.7 kB
Release files / matimo_bruno-0.1.3.tar.gz
| Download URL | matimo_bruno-0.1.3.tar.gz |
|---|---|
| Size | 16.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9e3ff00cd788881f48737168765cc65b126f6dc974d9f42891934d845f80713d
|
|
BLAKE2b-256 checksum How to use checksums |
e4b3ddd4dffd265c2d602d54e1a795ce2c10825d529816711c46e3478c8812af
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Release files / matimo_bruno-0.1.3-py3-none-any.whl
| Download URL | matimo_bruno-0.1.3-py3-none-any.whl |
|---|---|
| Size | 20.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
415c96b6bcc8d903943587343de82f9e2cac07035659d21687d48dd14db662af
|
|
BLAKE2b-256 checksum How to use checksums |
ba924e2fb6a5ed78e7c61cce59858bf6e6ab2f8d78da8eb67ccf541fdd95e169
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|