> ## Documentation Index
> Fetch the complete documentation index at: https://docs.shouldertap.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# What is ShoulderTap?

> ShoulderTap routes an AI agent's unanswerable questions to a human expert on Slack, captures the reply as structured knowledge with provenance, and writes it back after human approval.

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.

<Note>
  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.
</Note>

## The loop

```
[Consumer/Agent]            [ShoulderTap Engine]              [Expert on Slack]
      |                            |                                 |
      |--- ContextRequest -------->|                                 |
      |                            |-- dedup check ----------------- |
      |                            |-- resolve routing (registry) -- |
      |                            |-- draft question (LLM) -------->|  DM
      |                            |<-------- free-text reply --------|
      |                            |-- structure reply (LLM) ------- |
      |                            |-- create ContextProposal ------ |
      |                    [Approval queue: a human approves]        |
      |<-- on_proposal_accepted ---|                                 |
      |   (write back to your      |-- notify expert: "your answer   |
      |    system of record)       |    was accepted" -------------->|
```

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

<CardGroup cols={2}>
  <Card title="Quickstart" icon="terminal" href="/quickstart">
    Run the whole loop in your terminal in about 90 seconds — no Slack required.
  </Card>

  <Card title="Concepts" icon="book-open" href="/concepts">
    The vocabulary: requests, proposals, experts, consumers, kinds, and topics.
  </Card>

  <Card title="Integrate an agent" icon="robot" href="/consumers/overview">
    Wire your agent's low-confidence path to a human expert via MCP, the SDK, or webhooks.
  </Card>

  <Card title="Protocol reference" icon="code" href="/api/authentication">
    The stable HTTP API, contracts, and kind schemas for any client.
  </Card>
</CardGroup>
