Human-in-the-loop approvals
MCP transfer tools never move money. When an assistant callscreate_ach_transfer, create_scheduled_ach_transfer, create_wire_transfer, create_book_transfer, or create_crypto_transaction, Meow records the payment as a draft in a pending-approval state. Funds move only after a person approves the draft on the Meow dashboard.
The server enforces this, not the client:
- Every MCP-initiated transfer is forced into
pending_approval, no matter which assistant or surface created it. - The tool returns an approval reference. The assistant can check status with
get_approval, but it can’t approve on your behalf. - Approval happens on the dashboard, by someone with the authority to approve it.
Least privilege
Access is scoped as narrowly as possible at every layer. Scopes are granted per capability. Becausemeow.read, meow.transfers, meow.cards, and meow.billing are independent, you can connect an assistant for read-only insights and never grant write access at all. See scopes.
The scope picker only offers optional write scopes if your role could exercise them somewhere, and role permissions cap every call regardless of what you grant. On the CLI surface, the same idea applies to API keys: give the assistant a key with only the scopes it needs.
What’s checked on every tool call
The server re-validates each call independently. A valid token on its own is not enough. It confirms the token’s signature, expiry, and audience (the token must have been issued for this server), your role’s permissions on the target entity, the OAuth scopes you granted at connect time, the entity’s lifecycle, the session’s revocation status, and any multi-factor requirement.Tool annotations
Every tool carries an MCP annotation so clients can render the right warning UI. Read tools are markedreadOnlyHint: true and idempotentHint: true; action tools are marked destructiveHint: true. That lets a client confirm before any state-changing tool runs, and it lets directory reviewers and admins see at a glance what each tool does.
Prompt-injection awareness
Agentic systems that read untrusted content (web pages, emails, documents) can be steered by malicious instructions hidden in that content. A few things contain the risk here:- Even a successful injection can’t move money, because transfers are drafts that wait for human approval on the dashboard.
- A read-only connection can’t be coerced into a write, so grant only the scopes the task needs.
- Running the Meow MCP alongside other MCP servers in one session widens the attack surface, so be cautious about it and review the actions an assistant proposes before approving them.
Auditability
Every tool invocation is logged with enough context to reconstruct it: the authenticated identity, the tool name, the parameters (with sensitive values redacted), the timestamp, the result status, and the duration. Each response also carries a request ID you can share with support. OAuth sessions are tracked, so you can list the assistants you’ve connected and revoke any of them from the dashboard. Revocation takes effect immediately.Data handling
- The MCP server reaches the same financial data as the REST API, scoped to your permissions.
- Prefer OAuth over long-lived API keys for interactive use, and keep API keys out of any file you commit.
Next steps
Authentication & scopes
The OAuth flow and what each scope grants.
Troubleshooting
Resolve connection and permission errors.