Follow-Through
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DATA_DIR | No | Writable volume for the JSON store. Falls back to temp dir, then in-memory. | <cwd>/data |
| LLM_PROVIDER | No | Provider selection: `auto` | `anthropic` | `openrouter` | `none`. In `auto` mode, uses Anthropic if its key is set, else OpenRouter if its key is set, else the offline deterministic extractor. | auto |
| LINEAR_API_KEY | No | Enables real Linear ticket lifecycle. | |
| LINEAR_TEAM_ID | No | Linear team ID for ticket creation. Auto-detected if omitted. | |
| ANTHROPIC_MODEL | No | Claude model to use for extraction. | claude-sonnet-4-6 |
| EMAIL_IMAP_HOST | No | IMAP host for searching email evidence. | |
| EMAIL_IMAP_PASS | No | IMAP password for searching email evidence. | |
| EMAIL_IMAP_USER | No | IMAP username for searching email evidence. | |
| EMAIL_SMTP_HOST | No | SMTP host for sending email nudges. | |
| EMAIL_SMTP_PASS | No | SMTP password for sending email nudges. | |
| EMAIL_SMTP_USER | No | SMTP username for sending email nudges. | |
| SLACK_BOT_TOKEN | No | Enables real Slack evidence search + DM nudges. Requires scopes: channels:read, groups:read, channels:history, groups:history, im:history, users:read, users:read.email, chat:write. | |
| OPENROUTER_MODEL | No | Free OpenRouter model for extraction. | meta-llama/llama-3.1-8b-instruct:free |
| ANTHROPIC_API_KEY | No | Enables Claude-based extraction (paid). | |
| OPENROUTER_API_KEY | No | Enables free-tier OpenRouter extraction. | |
| SCHEDULER_INTERVAL_MS | No | Real-world poll cadence in milliseconds for the scheduler. | 3600000 |
| SLACK_EVIDENCE_CHANNELS | No | Comma-separated list of Slack channel names or IDs to search for evidence. |
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 |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": true
} |
| resources | {
"subscribe": true,
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| extract_commitmentsA | Parses a meeting transcript and returns structured commitment objects: who promised what, to whom, by when, and with what confidence. For every commitment found it immediately creates a durable store record AND a Linear ticket — catching the 90% of commitments that would never become a manual ticket. Deduplicates against commitments already in the store. |
| get_sample_transcriptA | Returns a ready-to-use sample meeting transcript (with participants and meeting date) designed to exercise all three confidence levels — paste its transcript_text into extract_commitments to run the demo flow. |
| upsert_commitmentB | Creates or updates a commitment record in the durable store. The store is the source of truth for every commitment lifecycle state. |
| query_commitmentsA | Returns commitments matching a filter — used by the scheduler to find items due for a poll or nudge check. With no filters, returns every commitment. |
| promote_commitmentA | Promotes a logged aspirational commitment ("we should probably...") so the scheduler starts actively chasing it. This is the human override that moves an idea into the follow-up loop. |
| search_slack_evidenceA | Searches Slack for messages that could constitute evidence a commitment was fulfilled. Returns raw candidate messages; the verification agent scores them semantically rather than trusting keyword hits. |
| search_email_evidenceA | Searches a mocked inbox/sent-items store for emails relevant to a commitment — e.g. mail sent to an external beneficiary that proves the work shipped. |
| send_nudgeA | Sends a contextual reminder to the commitment owner via Slack or email, referencing the original commitment language and deadline. Tone calibration: gentle first, specific second, urgent only on hard blockers. |
| linear_create_ticketA | Creates a Linear ticket for a newly extracted commitment so it's never lost — even commitments nobody manually ticketed. Keys stay server-side in the Linear service; this tool never exposes them to the model. |
| linear_get_statusA | Reads the current status of a Linear ticket — used by the scheduler to verify work marked Done in Linear, not just in Slack/email. |
| linear_update_statusB | Updates the status of a Linear ticket. Lets the scheduler pick up a ticket manually marked Done. |
| linear_escalateB | Adds a manager as a watcher on the ticket with a supportive, context-rich comment explaining what was promised, what has been tried, and why it is being surfaced now. |
| simulate_days_passingA | Advances the internal clock by N days and runs one scheduler poll. This is the demo control that makes a week of chasing observable in seconds. In production the scheduler polls itself on a real interval (SCHEDULER_INTERVAL_MS) — this tool exists so the full open → nudge → escalate lifecycle can be shown live. |
| reset_demoA | Wipes the commitment store, ticket store, and resets the virtual clock to today. Use this to restart the demo scenario cleanly. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Health Checks | Current health status of all registered health checks |
| Commitment Dashboard | UI component for Commitment Dashboard |
| Widget Examples | Provides metadata and examples for all registered UI widgets |
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/ionfwsrijan/FollowThrough'
If you have feedback or need assistance with the MCP directory API, please join our Discord server