One vault.
Every credential sealed on arrival under your tenant's own key, AES-256-GCM in an envelope. Unwrapped in memory for one call. Never logged, never returned by any endpoint, never in a prompt.
actionlake is one remote MCP server, with a REST twin, that gives an AI agent eight tools to reach 289,000+ actions across 1,000+ connectors. Credentials stay sealed, every key has a scope and can carry a cap, and every run is written to a hash-chained ledger. Add a hundred systems; the tool list never grows.
100,000 free calls a month. No card, no email, no password: press Start a free sandbox on the next screen and keep the key it shows you.
claude mcp add --transport http actionlake https://connect.actionlake.com/mcp01 · The surface
Dump three thousand tools on a model and its accuracy falls apart past a few dozen. actionlake gives an agent eight, named for the question it is asking itself. The catalog behind them grows; the surface never does.
dodo {action: "halopsa.service.ticket.create", input: {…}, intent: "…"}✓ ticket #48112 created AL-Calls: 1 · AL-Micros: 300 · AL-Cache: MISS
Only two tools spend money, and they cannot be confused: do is a verb, ask is a question. REST and MCP are one implementation; a test holds them to it.
02 · Do
A write is never cached and never retried, because a request that might have landed must not be replayed. The response carries its own accounting: calls, cost, cache verdict. The meter is on the call, not discovered on the invoice.
AL-Calls, AL-Micros, AL-Cache03 · Ask
Name the steps and the join. actionlake fetches in parallel, pages to the end, matches the records that belong to the same customer, and returns the answer. 156 shared entities make the join possible: a QuickBooks contact and a HaloPSA client are the same crm.company.
Rows never enter the model, so the token bill falls with the API bill. Ask the same question again inside the cache window and it costs nothing: no fee, and none of the vendor's rate limit.
04 · Plans
A plan is a saved, versioned program of steps: actions, joins, loops, sub-plans, waits and approvals. Long runs are durable; they suspend on a wait or an approval and resume where they left off. A schedule runs a pinned version on a cron, under a named key, and never fires twice however many instances are running.
05 · Connectors
Each connector is a signed JSON file: every action, its schema, how it authenticates, how it pages, how long an answer may be cached, which hosts it may reach. The server refuses an unsigned or altered file. When a system is missing, your agent points service.draft at the documentation, gets back an authoring kit and a skeleton, validates, tests and publishes, private to you by default.
Counted from the catalogue, 24 October 2026
06 · Control
A key holds only what it was granted and can hand on only what it holds. Its calls count against every key above it. At the cap the call is refused before it is sent, and costs nothing. One module makes every outbound request; private ranges are refused and redirects are re-checked on every hop.
Every credential sealed on arrival under your tenant's own key, AES-256-GCM in an envelope. Unwrapped in memory for one call. Never logged, never returned by any endpoint, never in a prompt.
Read-only. One system. One action. Or everything. Per key, and a key hands on only what it holds.
keys.create "desk agent" allowed_actions: ["read:*", "service.ticket.*"]
A cap on every key, in calls. Caps cascade: a child's calls count against every parent. Reserve, then settle. At the cap the call is refused before it is sent, and costs nothing.
Per key: which actions wait, and who decides. The run suspends until they do.
Pay $12,400 to Acme Ltd?
intent: the user asked me to settle the approved October invoices
Check first. check is free, sends nothing, and says what would need a confirmation.
07 · The record
Each run is a row: who, which action, which connection, cost, cache verdict, timing. Each row stores the hash of the one before it; the chain head is sealed to storage daily. Any run can be checked against its neighbour on its own page. Request and response bodies are kept separately, sealed under your key, for your plan's window, an hour on Free and 30 days on Enterprise, then deleted.
Not yet: an anchor outside our own infrastructure, and a whole-chain export. The trust page says so.
08 · Add-on
One static IPv4 address, private to your account, that every request to your vendors leaves from: HTTPS on ports 443, 80 and 1024 and above, and MySQL, PostgreSQL and Redis on the same ports with the database's own TLS end to end. It fails closed: when the address is unavailable, requests are refused rather than sent from a shared one.
08Questions
The eight tools, the controls and the record, in the words an evaluator uses.
help (orientation), find_actions (search 289,000+ actions), get_action (the schema, cost and an example), do (run one action or several in order), ask (fetch from several systems and join them), check (a free dry run), cost (spend and cap headroom) and account (tenant, keys, connections, plans). Only do and ask are billed.
Each MCP server adds tools, credentials and a new place to audit, and past a few dozen tools agents get worse at choosing. actionlake keeps the agent at eight tools however many systems you connect, holds every credential in one sealed store, applies one set of scopes and caps, and keeps one ledger.
ask fetches from several systems in parallel, pages to the end, matches the records that belong to the same customer, and returns only the answer. The rows never enter the model, so the agent's context stays small. In the illustrative run, overdue invoices joined with urgent tickets return 4 clients, not thousands of rows.
Destructive actions need an explicit confirmation, and under the key's human policy the agent cannot give it, so a person approves. Approval rules make chosen actions, or every write, wait for a named person, who decides in the console or from an emailed signed link. The run suspends until that person decides, then resumes.
Every key can carry a cap in upstream calls. A key can mint child keys with a share of its cap, never more, and a child's calls count against every key above it. A call that would pass a cap is refused before it is sent, so it costs nothing.
Every run writes a ledger row: who ran it, which action, which system, the cost, the outcome and the agent's one-sentence reason. Rows are hash-chained and the chain head is sealed daily, so a change shows. The record is permanent; the agent's reason is kept for 90 days, and request and response traces for your plan's window.
Schedules, yes: any saved plan can run on a cron schedule under its own key and budget. There are no webhooks, event triggers or polling, by design. Agents and schedules start the work; a scheduled plan that asks what changed since its last run covers most trigger cases.
Yes. The REST API and the MCP server are one implementation with the same names, the same catalogue and the same receipts, and a test holds them equal. An OpenAPI description is published.
100,000 free calls. No card. Hard caps on every key. Cached answers are free.