feat: add MainBook Bank Statement Converter (remote) - #1500
Closed
va89st wants to merge 1 commit into
Closed
Conversation
Converts PDF bank and credit-card statements to Excel, CSV or JSON and reconciles every transaction against the statement's own opening and closing balances, so rows that do not add up are reported rather than silently shipped. It reads the PDF it is given and never connects to a bank account. Four tools over the hosted endpoint; only convert_bank_statement spends anything (one page credit per statement page). The entry pins an oauth_config rather than relying on discovery. Our authorization server implements client-ID metadata documents and pre-registered clients but not RFC 7591 dynamic registration, so a DCR fallback would fail; the pinned client_id is registered on our side for ToolHive specifically, with the loopback callback on port 8765, and carries the resource indicator (RFC 8707) our authorization server requires. Discussed in the linked issue. Validated against toolhive-core's own schemas (server.schema.json and publisher-provided.schema.json) — both clean. Go and Task were not available locally, so `task catalog:validate` was not run. Refs: stacklok#1499 Signed-off-by: Vadim Starchenko <va89st@gmail.com>
|
See #1499 (comment). |
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.
Closes #1499
Adds the MainBook Bank Statement Converter as a remote MCP server under
registries/toolhive/servers/.It converts PDF bank and credit-card statements into Excel, CSV or JSON and reconciles every transaction against the statement's own opening and closing balances, so rows that do not add up are reported rather than silently shipped. It reads the PDF it is given — it never connects to a bank account and never asks for banking credentials.
https://mcp.mainbook.ai/mcp(streamable-http)convert_bank_statement,get_conversion,list_conversions,get_balanceconvert_bank_statement— one page credit per statement pageOn the pinned
oauth_configEvery remote entry currently in the catalogue leaves
oauth_configout and lets discovery do the work. This one does not, and the reason is specific rather than stylistic: our authorization server implements client-ID metadata documents and pre-registered clients, but not RFC 7591 dynamic client registration. Falling through to DCR would fail, and the card would look correct while authorising nothing.So the entry pins:
client_id: mainbook-toolhive— registered on our side for ToolHive specifically, with the loopback callbackhttp://localhost:8765/callback. Loopback callbacks are accepted on any port per RFC 8252, so changingcallback_portwill not break it.resource— our authorization server requires the RFC 8707 indicator and answersinvalid_requestwithout it.Verified against production: an authorization request with this
client_idreaches the consent screen, an unregisteredclient_idis rejected, and a redirect URI on a non-loopback host is rejected.If you would rather entries did not pin a
client_id, tell me and I will take it out — but the connection will not complete without it until we ship dynamic registration.Validation
server.jsonand its_metablock validate clean against toolhive-core's ownserver.schema.jsonandpublisher-provided.schema.json. Go and Task were not available on this machine, sotask catalog:validatewas not run locally — please let CI be the judge there.Icon
icon.svgis a purpose-made simplification of our brand mark: solid fills instead of hairlines, three tones and no background plate, so it holds up at 16px and reads on both light and dark cards. Checked side by side with icons already in this catalogue at 16, 24, 40 and 64px.