Company Knowledge Base Agent
An enterprise-wide agent that answers questions against Confluence through MCP — no vector store, no separate index, no sync job to go stale.
← Swipe to follow the flow →
- Trigger
- Agent
- Tool / data
- Guardrail
- Human
⊘ No index means nothing to go stale.
The problem
What this replaced
- 01Knowledge is scattered across the organization.
- 02Confluence is the central store — but finding the right page inside it is still slow.
- 03Search across many spaces and pages, then give up and ask a colleague who already knows.
Who has this problem
All internal personnel — not just engineering. Anyone who needs to look something up.
What it costs
Significant time lost per lookup, plus a second cost that rarely gets counted: the repeated interruption of the people who already know the answer.
The build
What I built
A ReAct agent — think, act, observe, repeat — connected to a Confluence MCP server. The server exposes Confluence as tools: search (text and CQL), get_page for full content, and list_spaces to know where to look. The agent decides which tool to call, reads what comes back, and keeps going until it has enough to answer, then answers with links to the pages it used.
Cut lookup time from about thirty minutes to a few, without building an index that has to be kept in sync.
Capabilities
- 01ReAct loop — reason, call a tool, observe, repeat
- 02search — full text and CQL
- 03get_page — full page content
- 04list_spaces — scope the search to the right space
- 05Answers returned with source page links
How it runs
The workflow
- in
Trigger
A natural-language question from any employee.
- 01
Agent parses the question and selects the right Confluence MCP tool(s)
- 02
Calls get page, search page, search space or CQL query
- 03
Iterates with further calls when the first result is insufficient
- 04
Aggregates retrieved content and synthesizes an answer
- out
Output
A direct, concise answer with links to the Confluence pages it came from.
Components
- Query interface
- Knowledge agent — Claude Sonnet 4.5
- Confluence MCP server
- Confluence spaces and pages (existing, untouched)
The guardrail
What it is not allowed to do
⊘ Boundary
No index means nothing to go stale.
The deliberate choice here was to build no vector store at all. The agent queries Confluence live through its own API surface, so answers reflect the current state of the documentation rather than whenever an embedding job last ran. Every answer carries source links, so a reader can verify the claim rather than trust it.
Stack
What it is built on
- Model
- Claude Sonnet 4.5
- Tooling
- Confluence MCP server
- Retrieval
- Live tool calls — no vector store, no separate index
- Cloud
- AWS (internal enterprise)
Hard parts
What made it difficult
- 01
Deciding when a single tool call is enough and when the agent needs to keep digging — over-querying is slow, under-querying is wrong.
- 02
Serving every persona in the business, not just engineers, from one interface.
- 03
Answering from documentation written by many teams, to no shared standard.
Outcome
What changed
30 → 5 min
average lookup time
Information lookup time fell from about thirty minutes to about five.
Deployed enterprise-wide across all personas, not limited to technical teams.
Written as a de-identified case study. The employer's identity, space and page names, and documentation contents are not disclosed. What is described here is the architecture pattern and the measured outcome — nothing proprietary to the environment it runs in.
Get in touch
Building an agent that has to survive production?
I write about MCP design, evals and guardrails on LinkedIn most days. If you're working on something similar, I'm happy to talk shop.