Skip to main content

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 directory
  • environment - Environment name (dev, staging, prod)
  • env_file - Path to environment file override
  • data_file - CSV/JSON data file for data-driven testing
  • iteration_count - Number of iterations to run
  • delay_ms - Delay between requests
  • tags - 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/assertions
  • bail_on_failure - Stop on first failure
  • parallel - Run requests in parallel
  • sandbox_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 directory
  • request_name (required) - Request name to execute
  • environment - Environment name override
  • env_file - Environment file override
  • sandbox_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 directory
  • filter - 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 spec
  • output_directory (required) - Where to create collection
  • collection_name - Collection name
  • collection_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 path
  • collection_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-bruno only calls the bru on your PATH and does not bundle it
  • Python 3.11+
  • Bruno collections in .bru format 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)

Source distribution for matimo-bruno 0.4.0
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)

Table of built distributions (wheels) for matimo-bruno 0.4.0
File Interpreter ABI Platform Actions
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page