# TAP

Keeps API keys and passwords out of agent prompts: the agent sees a placeholder, TAP swaps in the real secret before the tool call.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 13
- Author: holonym-foundation
- License: Apache-2.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/holonym-foundation/tap-oss
- Updated: 2026-07-23
- HTML: https://affpapa.org/en/nevibecode/mcp/tap

## What it does

When the agent calls a tool, TAP checks the request against policy, asks for human approval if configured, and injects the secret from storage. The placeholder looks like `{{credential:stripe-key}}`. The agent never sees the real value and cannot log it or send it elsewhere.

Inside: proxy, policy engine, Telegram and Matrix approval bots, CLI, and MCP server. The remote endpoint is `https://mcp.tap.human.tech/mcp`. Self-hosting needs Postgres; the source includes enclave key-management modules.

The repository is Apache-2.0. The managed version stores secrets in a hardware enclave developers cannot read. Self-hosting puts key hardening and policy correctness on you.

## Requirements
- Remote server: `https://mcp.tap.human.tech/mcp`

## Install

### Claude Code (native platform)

**Platform CLI: remote server**
```bash
claude mcp add --transport http tap https://mcp.tap.human.tech/mcp
```

### Codex

**Platform CLI: remote server**
```bash
codex mcp add tap --url https://mcp.tap.human.tech/mcp
```

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "tap": {
            "url": "https://mcp.tap.human.tech/mcp"
        }
    }
}
```

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "tap": {
            "type": "http",
            "url": "https://mcp.tap.human.tech/mcp"
        }
    }
}
```

### Gemini CLI

**Platform CLI: remote server**
```bash
gemini mcp add -t http tap https://mcp.tap.human.tech/mcp
```

## When to use it
- isolate API credentials from the agent context
- require human approval before a risky tool call
- check requests against policy before execution
- replace a placeholder with the real secret before sending it to the tool
- run a credential proxy without putting secrets in the prompt

## Example prompts
- Make a Stripe request with `{{credential:stripe-key}}`
- Send email via SendGrid using `{{credential:sendgrid-token}}`

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [World Monitor](https://affpapa.org/en/nevibecode/mcp/world-monitor.md) — MCP server · ★ 89408
- [mcp](https://affpapa.org/en/nevibecode/mcp/kubeshark-mcp.md) — MCP server · ★ 12109
- [Robin: AI-Powered Dark Web OSINT](https://affpapa.org/en/nevibecode/mcp/robin-ai-powered-dark-web-osint.md) — MCP server · ★ 7658
- [jshookmcp](https://affpapa.org/en/nevibecode/mcp/jshookmcp.md) — MCP server · ★ 2061
- [OpenOSINT](https://affpapa.org/en/nevibecode/mcp/openosint.md) — MCP server · ★ 1802

## Other versions with the same name
- [Tap · leonting1010](https://affpapa.org/en/nevibecode/mcp/leonting1010-tap.md) — ★ 18

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
