dkountanis~biblos
View the agent and its source on the Agent Hub.
At a glance
- Agent type: auto-managed TypeScript agent
- Integrations: Slack (
guildai~slack) for reactions, thread reads, posts, and updates, and thedkountanis~pinecone-assistantintegration (1.0.0) for ranked retrieval - Runs from: an event trigger on Slack
app_mention - LLM calls: at most one per mention, with no tools
- Reacts with
:eyes:and posts aWriting…placeholder right away - Reads at most 20 Slack messages and retrieves at most 8 snippets per run
- Calls the LLM only when the evidence clears a configured floor
- Replies to the exact channel and thread from the validated webhook payload
- Neutralizes mass mentions and caps the length of what it posts
- Adds a delivery marker to each reply to guard against processing the same event twice
- Returns the reply instead of posting it when called with
delivery: "return"
How it works
1
Validate before calling any tools
The input is a bounded Slack
event_callback object. Biblos rejects an event from a channel that isn’t allowlisted, or one a bot wrote, before it reads Slack, Pinecone, or the LLM.2
Read one thread
conversations.replies reads at most 20 messages from the thread the mention came from. Biblos treats Slack text as untrusted content, never as authority to change its tools, recipients, or policy.3
Retrieve, then decide
The mention and the thread context become one query. Pinecone returns at most eight snippets. Deterministic code applies the minimum score and the minimum number of snippets before the LLM is allowed to write anything.
4
Reply or refuse
With enough evidence, Biblos writes one short answer grounded only in the selected snippets. Without it, Biblos sends its fixed “above my head” reply. Where it can, Biblos updates the placeholder in place.
Build the agent
Define the webhook contract
Keep the variants inside an object-root schema. Unknown fields in the Slack envelope are stripped before orchestration or prompt construction:Register only the operations you need
Register each Slack operation the agent uses withguildServiceTool("slack", ...) rather than importing a Slack tool package. The published source includes the complete endpoint metadata and response schemas, and pins each operation to a specific integration version:
reactions.add and chat.update, which the orchestration below uses. Copy the complete definitions from agent.ts when you build a fork.
Before you adapt these definitions, confirm the current schemas:
Gate the evidence deterministically
Evidence selection is synchronous, can be tested on its own, and runs before the LLM:Acknowledge, retrieve, and reply
The two Slack acknowledgements are independent, so the agent sends them together withtask.gatherSettled. The tool calls are written inline in the array, so no unresolved call is held in a variable across a suspend:
Export the agent
Set it up
1
Add the agent
Open
dkountanis~biblos on the Agent Hub and add it to a workspace.2
Connect Slack
Connect a Slack credential, and use a credential policy to limit it to
conversations.replies, reactions.add, chat.postMessage, and chat.update.3
Build the library
Create a Pinecone Assistant and upload your approved playbooks to it.
4
Connect Pinecone
Connect a credential for
dkountanis~pinecone-assistant with your Pinecone API key.5
Set workspace variables
Add these workspace variables, using your own values:
6
Create the trigger
Create an event trigger for The empty
app_mention, limited to the same channels:--input passes the webhook payload unaltered, which is the input Biblos expects.7
Ask a question
Check that the trigger is active, then mention Biblos in an allowlisted channel:
@Biblos How should I run LinkedIn outbound for this ICP?
examples/linkedin-outbound-playbook.md, a safe starter document for your first retrieval check.
Expected result
A question the library covers returns:status: "replied", with usedLibrary: false and the fixed refusal text. A delivery or credential failure returns failed, and never claims a successful post.
Run it locally
From the agent’s directory:Relevant code
Boundaries
Biblos doesn’t upload documents, administer Slack, send direct messages, or invent steps the library doesn’t contain. Each follow-up question has to mention the app, unless you deliberately configure a separate message trigger.Related
Event triggers
Run an agent when something happens in a connected service.
Slack
Connect Slack and the operations agents can call.
Coded agents
How TypeScript agents are structured and built.
Credential policies
Limit a credential to the operations an agent needs.