threadline-core
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| THREADLINE_DATA_DIR | No | Directory for the SQLite database and data files. | ~/.threadline |
| THREADLINE_API_TOKEN | No | Bearer token for REST API authentication. If set, all REST endpoints require Authorization: Bearer <token>. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| start_sessionA | Call at the BEGINNING of every work session on a project. Returns a Returnsdict with keys: |
| end_sessionB | Call at the END of a work session to close it cleanly. Records a Returnsdict with keys: |
| log_agent_eventA | Report a work event to Threadline — call this as you work. Parse and ingest a single WHEN TO CALL
EVENT SHAPE (compact example)Returnsdict with keys: |
| get_project_stateA | Return the raw governed state for a project. Returns durable lifecycle records only — no synthesis, no compiled memory, no LLM output, no ranking. Includes: objective, open loops, active decisions, known traps, confirmed gaps and caveats, evidence IDs, recent session metadata. Returnsdict — the full RaisesLookupError if the project does not exist (surfaced as an error dict). |
| get_open_loopsA | Return open loops for a project, oldest first. Open loops are deferred threads — things noticed but not finished. Oldest-first because the longest-waiting item is most likely blocking. Filters (all optional, combinable):
Returnslist of dicts with keys: |
| mark_open_loop_resolvedA | Mark an open loop resolved — GATED: requires admissible evidence. Evidence refs must be Returnsdict with keys: |
| assign_open_loopA | Claim an open loop for an owner — FIRST CLAIM WINS. The foreman and every agent must claim a loop BEFORE touching files. A loop is claimable while owner is unset; the first claim wins. Re-claiming by the same owner is a no-op. Claiming someone else's loop raises an error and returns the current owner in the message. Returnsdict with keys: |
| get_decisionsA | Return the LIVE decisions for a project, newest first. Live = status in (active, accepted, validated). Decisions marked
incorrect/reverted are returned by Returnslist of dicts with keys: |
| get_decisionA | Return one decision + its outcome detail, or an error dict if not found. Returnsdict with keys: |
| mark_decision_outcomeA | Record the real-world OUTCOME of a past decision.
HARD RULE: marking Returnsdict with keys: |
| get_known_trapsA | Return decisions proven wrong on this project + the corrected rule. Read these BEFORE acting so you do not repeat a known mistake. Newest first; each carries the corrected_rule (the lesson), severity, and evidence_refs. Returnslist of dicts with keys: |
| propose_findingA | Propose a gap or caveat finding. PROPOSING IS FREE — a proposed finding is never surfaced in the trusted context bundle. It is a candidate until confirmed with evidence.
Fingerprint dedup: re-proposing an active finding returns the existing id (no duplicate write). Returnsdict with keys: |
| confirm_findingA | Confirm a proposed finding so it enters the trusted bundle. GATED: requires Returnsdict with keys: |
| resolve_findingB | Mark a finding resolved (its resolution_condition was met). GATED exactly like Returnsdict with keys: |
| dismiss_findingC | Dismiss a finding as invalid/irrelevant. GATED exactly like Returnsdict with keys: |
| get_evidenceA | Resolve evidence refs ( Returns bounded snippets only — never full transcript bodies. Bad refs
are reported in Returnsdict with keys: |
| search_memoryA | Full-text search across all stored memory. Searches events, decisions, open loops, daily notes, and compiled context fragments. Results are ranked by BM25 relevance. Parametersquery: Natural-language search string. project_key: When provided, restricts results to that project. limit: Maximum results to return (clamped to 50 server-side). Returnslist of dicts with keys: |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/richardoros/threadline-core'
If you have feedback or need assistance with the MCP directory API, please join our Discord server