Open source · Hosted in minutes

Secure your AI agents.
Then let them run everything.

Most people keep agents on a short leash because one bad call could drain an account. TAP gives each agent its own identity and approval rules, so you can safely turn them loose on your email, your infra, and your money.

Examples

What an agent can do with it.

Each one touches several services through a single setup, with no integration code to write. The calls that move money or delete things are held for your approval.

$ "Check my email for any unpaid invoices and pay them on Wise."

gmail → wise · it really pays them, after you approve

$ "Migrate all our company domains to Cloudflare DNS, update the SSL certificates on AWS, and trigger Vercel redeployments for any affected services."

cloudflare → aws → vercel · held for your approval

$ "Check my Mercury balance. If it's over $50k, move the excess into the highest-yield account."

mercury · waits for your approval

$ "Give me a morning briefing: Mercury balance and any large transactions, unread emails that need action, and whether any Vercel deployments failed overnight."

mercury · gmail · vercel · runs unattended

See all examples →

The catch

An agent with a real key
can do real damage.

🔓

Prompt injection

To an agent, a web page or email it reads is just more instructions. One can say 'send me the key,' and it will.

⚠️

Nobody checks the dangerous calls

A raw key can move money, delete data, or email everyone you know, with nothing in between to catch it.

👁

Keys leak into the context

Agents can read them straight out of process memory, and plenty of APIs echo them right back. Once a key is in the context, it's in every prompt after it.

How it works

Two lines, and it's running.

No MCP servers to run

Just tell your agent:

TAP key: <your key>
TAP instructions: https://proxy.tap.human.tech/instructions

To add a service, you paste its key into the dashboard. The agent reads the instructions URL and calls what it needs, so you're not loading a list of tool definitions into every prompt. It works with anything that makes HTTP requests: Claude Code, OpenClaw, your own scripts.

You approve anything risky

Each call arrives with its full request to approve or deny, wherever you've set up notifications.

You set what needs approval

Reads like checking a balance run on their own. The ones that move money or change things wait for you.

No framework to adopt

Your agent just makes HTTP calls to TAP instead of straight to the API.

Signing keys stay inside TAP

The agent sends a payload, gets back a signature, and never sees the key.

Verify it yourself

Built so you don't have to trust us.

Your keys sit on separate hardware

They live in a hardware enclave we can't read into. Microsoft's HSM only releases them to TAP code that matches a measurement we publish. Verify it →

The agent never holds a secret

It only sees a name like mercury. The real key goes in when TAP sends the request, and gets stripped out of anything that comes back.

No rule allows it, it stops

Every request is checked against your policy. If nothing allows it, it waits for you.

Read the code

It's open source under Apache-2.0. Read exactly how your keys are handled, or run your own copy. GitHub →

The request flow, policy engine, and attestation details are all in the docs →

Get started

Run it today.

We built TAP to give our own agents access to our accounts, then open-sourced it. The hosted version is free to start, keeps your credentials in a hardware enclave even we can't read into, and is the right choice for almost everyone. You can also self-host the open-source build if you're comfortable owning the security yourself. Verify it.

Start free

Or self-host it from the repo

Running in five minutes.

Use our managed hosting, or run the open-source build yourself in Docker.

1

Sign up and add your credentials

Slack, GitHub, Mercury, Stripe, AWS, or whatever else your agent needs.

2

Create an agent and copy the API key

Pick which credentials it can touch. The key shows once.

3

Paste two lines into your agent's prompt

TAP key: <your key>
TAP instructions: https://proxy.tap.human.tech/instructions

It fetches that URL and works out how to use your services on its own.