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.matimo-brunoonly calls thebruon your PATH and does not bundle it - 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
Metadata
Release files for matimo-bruno 0.4.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| matimo_bruno-0.4.0.tar.gz | 17.5 kB | Without provenance | Details for matimo_bruno-0.4.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| matimo_bruno-0.4.0-py3-none-any.whl | Python 3 | none | any | Details for matimo_bruno-0.4.0-py3-none-any.whl |
Total release size: 38.5 kB
Release files / matimo_bruno-0.4.0.tar.gz
| Download URL | matimo_bruno-0.4.0.tar.gz |
|---|---|
| Size | 17.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
61e26fbd81781a6356683ac68198907940924d2c57ca78c89d4a3170de452654
|
|
BLAKE2b-256 checksum How to use checksums |
3ced6e7f15a8ef415e6a614512d8e6b945e268358a7862688f736ad469a07a39
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Release files / matimo_bruno-0.4.0-py3-none-any.whl
| Download URL | matimo_bruno-0.4.0-py3-none-any.whl |
|---|---|
| Size | 21.0 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e01b688ac0ee9d8085fb584d3844dc0c6c220810a8a81b178a02bb536a1d04a7
|
|
BLAKE2b-256 checksum How to use checksums |
5496ce58609e69c0a49327119908337fe360dd6e282e4c35b80c82b7635b2e6b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.13.16
|
Security for matimo-bruno 0.4.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.