Expose ListTransactions via API#43
Merged
Merged
Conversation
Wire core.ListTransactions through the full stack so transactions are directly queryable per account, unblocking #33 and enabling reconciliation against bank statements. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This was referenced Mar 15, 2026
There was a problem hiding this comment.
Pull request overview
This PR exposes the existing core.DB.ListTransactions functionality through the full API stack by adding a new ListTransactions gRPC RPC (proto), implementing it in the daemon server, and surfacing it as an MCP tool with accompanying tests.
Changes:
- Add
ListTransactionsRPC plus request/response messages to the proto contract. - Implement
ListTransactionsin the daemon gRPC server withaccount_idvalidation and proto mapping. - Add MCP
list_transactionstool and expand daemon/MCP test coverage for the new API path.
Reviewed changes
Copilot reviewed 5 out of 5 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
| proto/finch/v1/finch.proto | Adds the ListTransactions RPC and messages to the public API contract. |
| daemon/finchd/server.go | Implements the new gRPC handler and maps core transactions to proto. |
| daemon/server_test.go | Adds an integration test for listing transactions and validating empty account_id. |
| mcp/tools.go | Registers and implements the list_transactions MCP tool calling the new RPC. |
| mcp/tools_test.go | Adds MCP tool tests for empty results, non-empty results, and field mapping. |
This was referenced Mar 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Overview
The purpose of this change is to wire
core.ListTransactionsthrough the full API stack (proto RPC, daemon handler, MCP tool) so that transactions are directly queryable per account. This is an incremental improvement — a mechanical wiring task that exposes existing domain logic through the established API layers. It unblocks #33 (viewing individual transactions) and enables reconciliation against bank statements, which currently requires going throughProjectBalancesindirectly.Changes
ListTransactionsRPC withListTransactionsRequest/ListTransactionsResponsemessages, reusing the existingTransactionmessageListTransactionshandler withaccount_idvalidation, delegating tocore.ListTransactionsand mapping via existingtransactionToProto()helperaccount_idreturns error)list_transactionstool withListTransactionsInput/ListTransactionsOutputstructs and handler factory, mapping via existingprotoTxnToInfo()Test plan
just proto— regenerates without errorsjust lint— 0 issues across all modulesjust test— all tests pass (core, daemon, mcp)list_transactionsMCP tool against running daemon with seed data🤖 Generated with Claude Code