@vonzio/plugin-teller
v0.1.2
Published
Bank data for vonzio agents via the Teller API (teller.io). Operator-provisioned mTLS client cert + 5 read-only MCP tools (enrollments, accounts, balances, transactions, account details).
Readme
@vonzio/plugin-teller
Bank data for vonzio agents via the Teller API. Gives agents 5 read-only MCP tools — list enrollments, list accounts, get balance, list transactions, get account details — over an operator-provisioned mTLS client certificate.
Install + approve (operator)
npm install @vonzio/plugin-teller- Declare it in
VONZIO_PLUGINS(the env list of plugins to load). - Env config (all optional except where noted):
| Var | Purpose |
|---|---|
|
TELLER_APP_ID| Teller application id (enables the Connect button) | |TELLER_ENVIRONMENT|sandbox|development|production(defaultsandbox) | |TELLER_API_BASE| defaults tohttps://api.teller.io| |TELLER_SIGNING_PUBKEY| optional base64 Ed25519 key for strict Connect-callback verification | - Provision the mTLS cert in the operator policy (
vonzio-plugins.json). Mount your Teller client cert + key on the host and point the policy at them:"@vonzio/plugin-teller": { "version": "0.1.1", // match the installed package version "approved_hash_sha256": "<from: vonzio plugin approve>", "approved_capabilities": [ "http.outbound", "secrets.mtls", "integrations.read.decrypted", "integrations.write", "mcp.register", "auth.gate" ], "approved_outbound_hosts": ["api.teller.io"], "mtls_secrets": { "teller-client": { "cert": "/run/secrets/teller/cert.pem", "key": "/run/secrets/teller/key.pem" } } } - Approve + restart:
vonzio plugin approve @vonzio/plugin-teller
How it works
mTLS: the client cert/key never enter plugin memory —
ctx.secrets.mtls("teller-client")returns an opaque ref the plugin passes toctx.http.fetch({ mtls }); core presents the cert server-side (SSRF-checked, host-allowlisted toapi.teller.io).Connect:
/v1/integrations/teller/{config,callback}(auth-gated) drive the Teller Connect popup and persist enrollments touser_integrations(typeteller).Agent tools: the MCP server at
/v1/integrations/teller/mcpis injected into each agent task with a per-task token resolved viactx.mcpSessions.Dashboard row: the Settings → Integrations row is styled to match the host dashboard, using the design-system CSS the dashboard already loads for bundled plugin frontends (
--vz-*tokens +vz-btnclasses).
Compatibility
Requires the @vonzio/plugin-api 1.1 contract (manifest apiVersion: "1.1"),
shipped by npm package @vonzio/plugin-api@^0.2.0. The contract version (1.1)
and the npm package version (0.2.x) are independent axes. Under this contract the
MCP server filters enrollments by the running agent's profile (scope /
profile_ids), so per-profile scoping is honoured.
