Guides
API connections
Connect documented APIs as folders of readable, editable resources.
Parlo mounts documented APIs as folders.
1ls ~/parlo/github/issues/2cat ~/parlo/linear/ENG-123.md3vim ~/parlo/github/issues/42.mdAPI resources become markdown files. Reading a file calls the API. Saving a file can update the remote resource.
Connect from a provider or intent
You can choose a provider:
- GitHub
- Stripe
- Linear
Or describe what you want:
- API for wrestling matches
- weather alerts API
- restaurant health inspection API
Parlo searches for real API documentation, asks what you want mounted, generates an adapter, and tests it before saving.
Paste a URL (fastest path)
If you already have a spec URL, paste it directly on the connections page. Parlo auto-detects the format (OpenAPI, GraphQL, or MCP server), compiles the adapter, and connects without wizard steps. The same works from the CLI:
1parlo connect --spec https://api.example.com/openapi.json2parlo connect --openapi https://api.example.com/openapi.json3parlo connect --graphql https://api.example.com/graphql4parlo connect --mcp https://example.com/mcpIf the spec requires auth and no token is provided, Parlo returns a structured auth-required response instead of failing silently.
How generation works
- 1Find official docs, specs, schemas, or examples.
- 2Ask which resources should appear as files.
- 3Generate a filesystem adapter for that scope.
- 4Ask for your API key only when ready to test.
- 5Run the adapter in a sandbox.
- 6Save the connection if the test passes.
Generated adapters
A generated adapter translates file operations into API calls.
| File action | API behavior |
|---|---|
ls | list resources |
cat | fetch and format a resource |
save / write | create or update |
rm | delete, close, or clean up |
Adapters are generated from documented APIs. If Parlo cannot find enough information, it asks for a docs URL or another provider instead of guessing.
Credentials
The wizard does not ask for an API key up front. It asks only when the adapter is ready to run a sandbox test. Saved credentials are encrypted and injected by Parlo at runtime. Adapter code never handles secrets directly.
Reliable by design
Adapters implement a small filesystem contract, so every connection behaves the same way:
| Operation | Purpose |
|---|---|
list | show files and folders |
read | return one resource as markdown or bytes |
stat | return metadata like size and content type |
write | create or update a resource |
parse_webhook | invalidate cached paths when remote data changes |
Two things keep generated connections dependable for long-running use, agents, and background sync:
- Documented APIs only. Parlo generates from official docs, specs, and schemas. It does not scrape websites or depend on page markup. If it cannot find enough information, it asks for a docs URL instead of guessing.
- Sandbox-tested before saving. A connection is only saved after a sandbox run proves authentication works and the mount returns a real listing. If the test fails, the wizard revises and retries.
Semantic discovery
toolSearch (MCP) and /api/connections/discover find tools by intent using vector similarity via Cloudflare Vectorize and Workers AI embeddings. Search for "billing API" or "customer records" and get the closest match, not just a name substring. Tools are auto-embedded when connections are saved. Falls back to text matching when embeddings are unavailable.
Example shapes
A project management API might look like:
1~/parlo/linear/2 README.md3 ENG-123-fix-login.md4 ENG-124-update-billing.mdA search API might look like:
1~/parlo/search/rust-vs-go/2 README.md3 1-rust-vs-go-performance.md4 2-when-to-use-rust.md