paso
The agent-readiness toolkit for APIs.
Declare your API's capabilities once. paso generates the MCP server. No protocol code required.
Self-hosted. Open source. Apache 2.0.
Install
pip install usepaso
Quick Start
# Scaffold a declaration
usepaso init --name "MyService"
# Or generate from an existing OpenAPI spec
usepaso init --from-openapi ./openapi.json
# Check it
usepaso validate
# Preview what MCP tools will be generated
usepaso inspect
# Test a capability (without the consequences)
usepaso test list_issues -p org=acme -p project=web --dry-run
# Start the MCP server
usepaso serve
That's it. Your API is agent-ready.
What You Write
# usepaso.yaml
version: "1.0"
service:
name: MyService
description: My API service
base_url: https://api.example.com
auth:
type: bearer
capabilities:
- name: list_items
description: List all items
method: GET
path: /items
permission: read
- name: create_item
description: Create a new item
method: POST
path: /items
permission: write
consent_required: true
inputs:
name:
type: string
required: true
description: Item name
What paso Does With It
Each capability becomes an MCP tool. When an agent calls it, paso makes the HTTP request to your API with proper auth, parameters, and error handling.
CLI
| Command | What it does |
|---|---|
usepaso init |
Scaffold a usepaso.yaml template (JSONPlaceholder example) |
usepaso init --blank |
Scaffold a blank template |
usepaso init --from-openapi |
Generate from an OpenAPI spec |
usepaso validate |
Check your declaration for errors |
usepaso validate --strict |
Check for best practices (missing constraints, consent) |
usepaso inspect |
Preview MCP tools that will be generated |
usepaso test <capability> |
Test a capability against the live API |
usepaso test --dry-run |
Same thing, minus the consequences |
usepaso test --all --dry-run |
Verify all capabilities resolve correctly |
usepaso serve |
Start an MCP server (stdio) |
usepaso serve --strict |
Serve with consent gates enforced (two-phase confirmation) |
usepaso serve --verbose |
Serve with request logging |
usepaso connect <client> |
Wire this server into an MCP client config (claude-desktop, cursor, vscode, windsurf) |
usepaso disconnect <client> |
Remove from an MCP client config |
usepaso doctor |
Check your setup end-to-end |
usepaso completion |
Output shell completion script (bash, zsh, fish) |
usepaso version |
Print the version |
Programmatic Usage
from usepaso import parse_file, validate
decl = parse_file('usepaso.yaml')
errors = validate(decl)
Connect to MCP Clients
usepaso connect claude-desktop
usepaso connect cursor
usepaso connect vscode
usepaso connect windsurf
Or add manually to your client config:
{
"mcpServers": {
"my-service": {
"command": "usepaso",
"args": ["serve", "-f", "/path/to/usepaso.yaml"],
"env": { "USEPASO_AUTH_TOKEN": "your-token" }
}
}
}
Links
License
Apache 2.0
Metadata
Release files for usepaso 0.4.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| usepaso-0.4.1.tar.gz | 44.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| usepaso-0.4.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 84.1 kB
Release files / usepaso-0.4.1.tar.gz
| Download URL | usepaso-0.4.1.tar.gz |
|---|---|
| Size | 44.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
ef937444b5f359f9527bd7dbe20a7b7cb813c98975a606e4aacc85fac94cd0c2
|
|
BLAKE2b-256 checksum How to use checksums |
cc4e784901f198bba0e76936c76bd9146645de7a797f4413cef02c56c5ca8f31
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 1, 2026.
Transparency logRelease files / usepaso-0.4.1-py3-none-any.whl
| Download URL | usepaso-0.4.1-py3-none-any.whl |
|---|---|
| Size | 39.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
bbeecebf2b75bc4d1d23977c017f98baf004685049d068921f72598dcc8480d0
|
|
BLAKE2b-256 checksum How to use checksums |
711dd0f565eee2b371b3772f78191be230d87a6d9c8383bd9134641960010945
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.7
|
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.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Apr 1, 2026.
Transparency log