Discover and invoke APIs through Sol's universal CLI with pluggable adapters. Use when you need to list operations, inspect schemas, and execute OpenAPI (or custom protocol) calls via one CLI contract.
Use this skill when a task requires calling remote APIs and the endpoint exposes operations through Sol's adapter system.
ok, kind, data, error).Do not use this skill for pure local file operations with no remote interface.
https://github.com/iodone/solhttps://github.com/iodone/sol/issues/newok, error, meta) for faster triage.sol is installed and available in PATH.Choose one of the following methods:
From source (development):
cd ~/work/github/sol
uv sync
From PyPI (when published):
pip install sol
From Git:
pip install git+https://github.com/iodone/sol.git
sol <url> -hsol <url> <operation> -hsol <url> <operation> key=valuesol <url> <operation> '<payload-json>'.ok == true, consume .data.ok == false, inspect .error.code and .error.message# 1. Set credential
sol auth set my-token --type bearer --secret "your-secret-token"
# 2. Bind to URL
sol auth bind https://api.example.com my-token
# 3. Use automatically
sol https://api.example.com getUser id=123
# Auth headers injected automatically
# Header-based
sol auth set my-key --type api_key \
--secret "your-key" \
--location header \
--param-name "X-API-Key"
# Query-based
sol auth set my-key --type api_key \
--secret "your-key" \
--location query \
--param-name "api_key"
sol auth bind https://api.example.com my-key
When APIs use non-standard authentication:
sol auth set my-custom --type custom \
--header "X-Custom-Token=abc123" \
--header "X-Workspace-ID=456"
sol auth bind https://api.example.com my-custom
Use custom auth when:
Bearer prefix# Create binding with alias
sol auth bind https://api-prod.example.com my-token --alias prod
# Use short form
sol myapi://prod getUser id=123
# Equivalent to
sol https://api-prod.example.com getUser id=123
# List all credentials
sol auth list
# List all bindings
sol auth bindings
# Remove credential
sol auth remove my-token
# Remove binding
sol auth unbind https://api.example.com
sol <url> <operation> field=valuesol <url> <operation> '{"field":"value"}'Do not pass raw JSON through --args; use positional JSON.
Other skills should treat this skill as the API execution layer and consume only the stable envelope:
ok, kind, protocol, endpoint, operation, data, metaok, error.code, error.message, metaDefault output is JSON. Do not use --text in agent automation paths.
.dataSol automatically detects protocols based on:
https://, custom schemes)Built-in adapter:
External adapters (install separately):
Sol caches operation results for performance:
# View cache stats
sol cache stats
# Clear cache
sol cache clear
# Disable cache for one call
sol <url> <operation> --no-cache
Problem: "No credential matched for URL"
Solution:
# Check if credential exists
sol auth list
# Check if binding exists
sol auth bindings
# Create binding if missing
sol auth bind <url> <credential-name>
Problem: "No adapter can handle this URL"
Solution:
python -c "from sol.framework import Framework; print(Framework().registry.list_adapters())"Sol normalizes custom schemes based on bindings:
myapi://alias → resolved to binding's full URLIf URLs don't resolve:
# Check binding configuration
sol auth bindings | grep <alias>
references/usage-patterns.mdsol-skill-creator skilldocs/architecture.md in repodocs/plugin-guide.md in reposrc/sol/adapters/openapi/adapter.py