otomata
api.
Read-only HTTP GET call to the API configured for your org (`api` connector). `path` = path relative to the base_url (starts with /). `params` = optional query params. The configured auth (bearer, …
setup & usage
⚠ an API key, and where the API lives
the Custom API connector connects a tool that has no card of its own in the catalogue (a payroll, an ERP, an internal service) as long as it offers an API. Gather, from the tool's API documentation:
https://api.acme.test/v1) — the paths of its documentation are relative to it/openapi.json), to import its operations⚙ connect it, or have it connected
api(op="setup_link", label="Acme Payroll", base_url=…, auth_mode="bearer") returns a link to this form, pre-filled with everything except the key, to send to whoever holds the key_account▸ configure it once, every member uses it
api_act(op="set_definition") — a display name, a description of what the tool holds (read by every member's agent), a logo domain, constant non-secret headers (e.g. an API version), saved variables (e.g. your organization id, filled into any action argument of the same name) and its actionsname (snake_case), description (what the agent reads to choose it), method (GET, POST, PUT, PATCH, DELETE), path relative to the base URL with {param} placeholders, input (a JSON schema of the arguments), and optionally in to send an argument to path, query or body — by default a placeholder goes in the path, the rest in the query for GET/DELETE and in the body otherwiseapi_act(op="import", source="doc_path"|"url"|"inline") converts an OpenAPI/Swagger JSON document into candidates without saving themoto_connector(name="Acme Payroll")), lists the org's custom connectors with api(op="list"), and calls an action with api_act(op="call", operation="list_collaborators", args={"page": 1}) — _account is only needed when two custom connectors share an action name; dry_run=true shows the request without sending itapi_act(op="request", method="PATCH", path="/…", body={…}), or api_get/api_post; api_doc() reads the configured documentation routeapi only reads (the custom connectors, an action's input, the setup link); api_act calls the API, imports and saves — the one your MCP client asks you to confirm· what the connector does and does not do
session steps describe (a JSON login, then optionally the URL the login answer names and its redirects), keeps the session cookie encrypted in the vault, and signs in again once when the service asks; it only reads (GET), and every sign-in step stays on the base URL's host, the hosts the card lists or its declared domain. The login body is JSON only. A refused login marks the card red: set the login and password again⚙ multiple comptes
this connector accepts multiple comptes: each stored credential becomes a named account (one name per compte), at your level, your team's or your org's.
_account="<name>" on the tool; list them: oto_identity(op='list', connector='api') (scope='org' or scope='group' for the org's or team's)oto_identity(op='set', connector='api', identity_id='<name>'); rename: op='rename' with new_name_account) and adding upoutils
chargement…
usage
claude code — install the oto plugin —
claude plugin marketplace add otomata-tech/oto-plugin — mcp + skill configured.cli —
pipx install oto-cli then oto api …