Skip to main content
ShoulderTap is the missing layer between AI agents and the humans who hold undocumented knowledge. When an agent hits a term it can’t resolve, a judgment call, or context that no document answers, ShoulderTap routes the question to the person who knows, asks them on Slack in a well-formed message, captures their reply as structured knowledge with full provenance, runs it through human approval, and writes it back to a system of record. The agent’s blocker is resolved, and your organization permanently learns — no agent asks that question again.
ShoulderTap is a self-hosted, open-source service you run yourself. It is distributed as the shouldertap Python package with the shtap command-line tool. There is no hosted product to sign up for — you run the engine, own the data, and point your agents at it.

The loop

A consumer (your agent) submits a ContextRequest. The engine deduplicates it, routes it to the right expert from a registry, and drafts a Slack DM. The expert replies in plain language. An LLM structures that reply into a ContextProposal, which lands in an approval queue. Once a human accepts it, the proposal is delivered back to the consumer to write into a system of record, and the expert is told their answer was accepted and attributed to them. If no reply arrives within escalation_after (default 2 hours), ShoulderTap re-asks the expert’s configured escalation target. If nothing arrives within give_up_after (default 24 hours), the request fails with reason timeout.

Who it’s for

ShoulderTap is for teams building AI agents that keep hitting the same wall: questions no document answers.
  • Agent and RAG builders who need a human-in-the-loop escape hatch for their agent’s low-confidence path, instead of guessing or giving up.
  • Data and platform teams who own a system of record — a data catalog, glossary, or knowledge base — and want expert answers captured into it with provenance, not lost in Slack threads.
  • Anyone running MCP-capable agents who wants to tap a human expert with no custom integration, via the built-in MCP server.

The safety promise, to your experts

Every outbound ask — with no code path that skips this — contains, in order: a self-identification (“I’m ShoulderTap, an automated assistant”; it never pretends to be a person), who’s asking and why, the question (drafted to be answerable from memory), effort framing (“a one-or-two sentence reply is all that’s needed”), an attribution promise (the answer is recorded with the expert’s name after human review — never written back automatically unless a consumer explicitly opts into auto_accept), and an opt-out (reply mute to stop receiving asks, or skip to pass this one along). Rate limits and quiet hours are enforced before every send, not just documented.

Get started

Quickstart

Run the whole loop in your terminal in about 90 seconds — no Slack required.

Concepts

The vocabulary: requests, proposals, experts, consumers, kinds, and topics.

Integrate an agent

Wire your agent’s low-confidence path to a human expert via MCP, the SDK, or webhooks.

Protocol reference

The stable HTTP API, contracts, and kind schemas for any client.