Skip to content

feat(mcp): cross-meeting rollup tools (list_action_items / list_decisions / digest)#1324

Closed
r3dbars wants to merge 2 commits into
mainfrom
claude/hopeful-dirac-845251
Closed

feat(mcp): cross-meeting rollup tools (list_action_items / list_decisions / digest)#1324
r3dbars wants to merge 2 commits into
mainfrom
claude/hopeful-dirac-845251

Conversation

@r3dbars

@r3dbars r3dbars commented Jun 25, 2026

Copy link
Copy Markdown
Owner

What

Three new read-only transcripted-mcp tools that aggregate structured summary fields across meetings — NEXT_WORK item #4, the hero demo: "every open action item assigned to me, across every call." No cloud notetaker can do this on private local data.

Tool Answers
list_action_items "open action items for Nate" — filter by owner (name-variant + substring), status (open default / done / all), query (FTS), date window
list_decisions "what did we decide about pricing" — query (FTS), date window
digest "what happened across all my meetings this week" — every meeting in range with its decisions / action items / open questions grouped, plus rolled-up counts

⚠️ HARD DEPENDENCY — sequence after summary-index PR ("Moat #1")

This depends on the summary-index thread that adds the decisions / action_items / open_questions tables and populates them by parsing meeting markdown. That PR must land first.

This PR does not duplicate the extraction. It contributes:

  1. The provisional table schema (IF NOT EXISTS, clearly flagged in TranscriptIndex.createTables()) so the tools compile/test in isolation.
  2. The write seam replaceSummaryFacts(filename:decisions:actionItems:openQuestions:) — the API Comprehensive Bug Fixes: State Machine, Error Handling, and Resilience #1's extractor calls during reconcile (tests seed through it).
  3. The query layer + tools + tests.

Until #1 lands, the tables stay empty in production and the tools return a clear "summaries have not been indexed yet" message rather than wrong data.

Merge-room: land #1, rebase this, reconcile the schema block in TranscriptIndex.swift (keep one copy of each table; column contract is action_items(filename,text,owner,status,due), decisions(filename,text), open_questions(filename,text)), and wire #1's extractor to replaceSummaryFacts. Full notes: docs/cross-meeting-tools.md.

Conflict note (recap-fix thread): changes to ToolHandlers.swift are append-only (3 Tool entries, 3 switch cases, 3 handlers); handleRecap untouched. Small conflict surface.

Tests

New SummaryRollupTests.swift (11 cases): action items filtered by owner across 2 meetings, open/done/all status, date window, FTS query, decisions across meetings + FTS, digest rollup with counts, digest excludes fact-less meetings, write-seam idempotency, reindex clears stale facts.

  • swift test --package-path Tools/TranscriptedMCP85 passed, 0 failures
  • transcripted-mcp --self-testok: true (new schema opens cleanly)

🤖 Generated with Claude Code

r3dbars and others added 2 commits June 25, 2026 06:09
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…ns/digest)

Add three read-only MCP tools that aggregate the structured summary fields
across meetings instead of one at a time (NEXT_WORK #4):

- list_action_items — filter by owner (name-variant + substring), status
  (open default / done / all), free-text query, and date window
- list_decisions — free-text query + date window
- digest — every meeting in a window with its decisions/action items/open
  questions grouped, plus rolled-up counts

Contributes the provisional summary-fact schema (action_items / decisions /
open_questions, keyed to meeting id, with FTS), the write seam
replaceSummaryFacts() that the summary-index PR's extractor will call, the
query layer, the tool handlers, and tests (action items filtered by owner
across 2+ meetings, status/date/FTS filters, decisions, digest rollup,
write-seam idempotency, reindex clears stale facts).

HARD DEPENDENCY: populating these tables is owned by the summary-index PR
("Moat #1: index summary fields"). Sequence #1 first, then rebase this.
Until then the tables stay empty in production and the tools return a clear
"not indexed yet" message. See docs/cross-meeting-tools.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@r3dbars

r3dbars commented Jun 26, 2026

Copy link
Copy Markdown
Owner Author

Closing as superseded by #1331, which merged the combined ask-meeting-history path covering this draft's scope.

@r3dbars r3dbars closed this Jun 26, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant