Skip to main content
Glama
Fabi-SPL

kontist-mcp

by Fabi-SPL

kontist-mcp

Kontist 비즈니스 뱅킹을 위한 OAuth2 클라이언트이자 타입이 지정된 GraphQL 계층으로, Model Context Protocol을 통해 노출되어 잔액, 거래 내역, 세금 준비금을 웹 앱 대신 도구 클라이언트에서 읽고 주석을 달 수 있습니다.

존재 이유

Kontist는 프리랜서를 대상으로 하는 독일 비즈니스 계정으로, 대부분의 은행이 유용하게 노출하지 않는 두 가지를 제공합니다. 자동 VAT 및 소득세 준비금 하위 계정과, 회계에 사용되는 거래별 주석 필드입니다. 둘 다 세금 신고 시기에 중요하며, 둘 다 수작업으로 처리하기에는 지루합니다.

흥미로운 부분은 쿼리보다는 인증 체인입니다. Kontist는 장기 유지되는 리프레시 토큰을 대화형 동의와 휴대폰에서 확인하는 MFA 푸시 뒤에 두고 있으므로, 해당 토큰은 로컬 콜백 서버를 통해 한 번 캡처한 다음 유일하게 영속화할 가치가 있는 자격 증명으로 취급해야 합니다. 그 이후의 모든 것은 토큰 교환, 캐싱 및 만료 처리입니다.

Related MCP server: FinTS-Finanzen

도구

도구

설명

kontist_whoami

계정 ID 및 IBAN, 인증 스모크 테스트

kontist_get_balance

현재 잔액

kontist_list_transactions

날짜, 금액 또는 카테고리로 필터링된 최근 거래 내역

kontist_get_transaction

거래 하나의 전체 내역

kontist_get_tax_reserves

VAT 및 소득세 준비금 하위 계정 잔액

kontist_annotate_transaction

거래에 회계 메모 다시 쓰기

kontist_summarize

기간에 따른 유입, 유출, 주요 거래 상대방 및 카테고리 합계

모든 도구 입력은 쿼리가 실행되기 전에 zod 스키마로 검증되므로, 잘못된 날짜 범위는 GraphQL 오류가 아닌 로컬에서 실패합니다.

작동 방식

tool client
  |  MCP over stdio
kontist-mcp (Node + TypeScript)
  |  GraphQL over fetch, OAuth2 bearer, token refreshed and cached
api.kontist.com/api/graphql

인증은 장기 유지되는 리프레시 토큰을 생성하는 일회성 대화형 동의를 사용하는 OAuth2 방식입니다. 오직 그 리프레시 토큰만 .env에 들어갑니다. 액세스 토큰은 요청 시 가져오고, .tokens-cache.json에 캐시되며, 만료되면 갱신되므로 대화형 흐름은 정확히 한 번만 실행됩니다.

실행하기

npm install
cp .env.example .env        # client id, client secret
npm run setup               # one-time OAuth consent, writes the refresh token
npm run test:auth           # confirms the token works
npm run build

그런 다음 dist/index.js를 가리키도록 MCP 클라이언트에 등록하세요. Kontist 개발자 앱 등록을 포함한 전체 안내는 SETUP.md에 있습니다.

기술 스택

Node 18+, TypeScript, @modelcontextprotocol/sdk, graphql-request, OAuth 절차를 위한 공식 kontist SDK, 도구 입력 검증을 위한 zod. ORM도 프레임워크도 없습니다.

일회성 동의 단계에서는 Kontist 모바일 앱이 설치되어 있고 로그인되어 있어야 합니다. 리프레시 토큰은 휴대폰에서 MFA 푸시가 확인된 후에만 발급되기 때문입니다.

제한 사항

  • 기본적으로 읽기 전용 설계. 유일한 쓰기는 주석 필드입니다. API가 지원하고 transfers 범위가 존재함에도 불구하고 송금은 의도적으로 노출하지 않습니다. 돈을 움직일 수 있는 에이전트는 좋지 않은 생각이기 때문입니다.

  • 아직 실제 계정으로 테스트되지 않음. OAuth2 흐름, GraphQL 클라이언트 및 일곱 가지 도구는 모두 작성되었고 타입 검사를 통과했지만, 계정 자체는 사업자 등록이 통과된 후에 개설됩니다. 첫 실제 실행에서 거래 필드에 스키마 드리프트가 나타날 것으로 예상하세요.

  • 테스트 스위트 없음. test:auth 및 test:balance라는 두 개의 스모크 스크립트뿐입니다.

  • 단일 계정. 다중 계정 처리가 없고, Kontist가 기본으로 반환하는 것 이상의 페이징도 없습니다.

라이선스

Apache 2.0. LICENSE 및 NOTICE를 참조하세요.

Available Tools

7 tools
kontist_annotate_transactionA

Add a note/annotation to a transaction. Useful for tagging Stripe payouts with the originating customer or invoice.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTransaction ID
noteYesAnnotation text (max 200 chars recommended)

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It reveals that this is a mutation, but does not explain whether the annotation overwrites an existing note, whether it is reversible, what authorization is needed, or what the response looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The core action is stated first, followed by a practical usage example, making it easy for an agent to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with no output schema and no annotations, the description plus schema is mostly sufficient. However, the lack of behavioral disclosure—whether the note replaces or appends—leaves a notable gap for an agent deciding how to use the result.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the input schema already documents both 'id' and 'note'. The description adds contextual flavor about Stripe payouts but no additional parameter-level semantics, so the baseline score of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Add') and resource ('note/annotation to a transaction'), making the tool's purpose immediately clear. None of the sibling tools perform this action, so no sibling differentiation is needed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description includes a concrete use case: tagging Stripe payouts with the originating customer or invoice. This gives the agent useful context for when to invoke the tool, though it does not explicitly discuss when not to use it or mention alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kontist_get_balanceA

Return the current Kontist business account balance, IBAN, and available balance (in EUR).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of disclosing behavior. 'Return' clearly signals a read-only operation, and it specifies the returned fields (balance, IBAN, available balance) and currency (EUR). It does not discuss authorization or error conditions, but for a simple balance getter this is reasonably transparent.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with no filler. It front-loads the verb and then lists the exact return values, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter balance lookup with no output schema, the description fully covers what an agent needs: what is returned (balance, IBAN, available balance) and the currency. No additional context seems necessary for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema confirms this, so there is nothing for the description to add about parameter meaning. This matches the baseline for parameterless tools.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Return') and precise resource ('current Kontist business account balance, IBAN, and available balance'), making the tool's function immediately clear. It is naturally distinguished from siblings like kontist_list_transactions and kontist_get_tax_reserves because it focuses on balance and account identifiers.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied by the description: call this tool when the current account balance or IBAN is needed. However, there is no explicit guidance on when not to use it or which sibling tool to prefer in alternative scenarios (e.g., tax reserves vs. account balance).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kontist_get_tax_reservesA

Get current balances of the Kontist VAT and income tax reserve sub-accounts. Returns null fields if not enabled or if Kleinunternehmer (no VAT).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the burden of behavioral disclosure. It clearly explains that null fields are returned when sub-accounts are not enabled or when Kleinunternehmer status applies, which is valuable edge-case behavior. It does not discuss errors or authentication, but the read-only nature is clear from 'Get'.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two succinct sentences with no filler. The core action is front-loaded, and the null-condition edge case follows naturally, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter read-only tool, the description is complete: it states what is returned and when fields may be null. It could optionally mention currency or value format, but that is not essential for selecting and invoking a no-argument tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema coverage is effectively 100%, so there is nothing for the description to add. The description appropriately focuses on the output behavior instead of parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Get') and resource ('Kontist VAT and income tax reserve sub-accounts'), clearly distinguishing it from the general kontist_get_balance sibling. It also states the exact scope of what is returned, so an agent can identify the tool's purpose without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use it: when current tax reserve balances are needed. However, it does not explicitly state when not to use it or point to alternatives like kontist_get_balance for general balances, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kontist_get_transactionA

Fetch a single Kontist transaction by its ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTransaction ID

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the burden of disclosing behavior. 'Fetch' clearly indicates a read-only operation with no side effects, which is useful. However, it does not state behavior for missing/invalid IDs or describe the response structure, which would be valuable for a no-output-schema tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. The verb, resource, scope, and lookup key are all immediately clear, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter fetch tool, the description combined with the schema is sufficient for an agent to invoke it correctly. It is missing optional details like not-found behavior or return format, but these are minor for such a straightforward read operation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema already fully documents the sole parameter 'id' with the description 'Transaction ID' (100% coverage). The description adds no additional semantic detail beyond restating that the lookup is by ID, so it does not exceed the schema baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Fetch'), a clear resource ('single Kontist transaction'), and a distinguishing scope ('by its ID'). This clearly differentiates it from sibling tools like kontist_list_transactions, which retrieves multiple transactions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the correct usage context: use this tool when you already have a transaction ID and need one specific transaction. It does not explicitly name alternatives or exclusions, but the 'single... by its ID' phrasing provides clear contextual guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kontist_list_transactionsB

List recent Kontist transactions with optional filters. Default returns last 50. Amounts are in EUR (positive = inflow, negative = outflow).

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO date — filter transactions on/before this booking date
fromNoISO date (YYYY-MM-DD) — filter transactions on/after this booking date
limitNoMax number of transactions to return (default 50, max 200)
cursorNoPagination cursor from previous call
max_amountNoMaximum transaction amount in EUR
min_amountNoMinimum transaction amount in EUR (negative for outflows)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral disclosure burden. It does disclose the 50-item default and the EUR inflow/outflow sign convention, but it omits ordering semantics, pagination behavior beyond the schema's cursor field, and any explicit read-only/safety statement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no filler. It front-loads the core purpose, then supplies the most decision-relevant behavioral facts: default result count and currency sign semantics.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with six optional filters and pagination, the description is adequate but not complete. It covers defaults and units, but with no output schema it doesn't describe return shape, and ordering and pagination usage remain implicit rather than explicitly explained.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already documents all six parameters at 100% coverage, so the description only needs to add interpretive value. It does add the important sign convention ('positive = inflow, negative = outflow') and reinforces the default limit, which helps the agent correctly set min_amount and max_amount.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly identifies the action ('List') and resource ('Kontist transactions'), and adds useful scope details like optional filters and a 50-item default. It doesn't explicitly contrast itself with kontist_get_transaction, but the plural listing vs singular retrieval is reasonably evident from the name and wording.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit guidance about when to use this tool versus siblings such as kontist_get_transaction or kontist_get_balance. It implies broad, filterable listing, but the agent must infer routing from tool names rather than from stated usage criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kontist_summarizeA

High-level financial summary for a date range: inflows, outflows, net, top counterparties, category breakdown. Default = last 30 days.

ParametersJSON Schema
NameRequiredDescriptionDefault
toNoISO date (default: today)
fromNoISO date (default: 30 days ago)

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not explicitly state that this is a read-only operation, nor does it describe formatting, rounding, timezone behavior, or potential side effects. The word 'summary' implies non-mutation but does not confirm it.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences with no filler. The first sentence front-loads the resource and output components, and the second covers the default behavior efficiently.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with two optional parameters and no nested objects, the description is mostly sufficient: it states what it returns and the default range. However, the lack of an output schema and explicit behavioral notes leaves minor gaps around return structure and safety.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the parameters are already documented with ISO date and defaults. The description adds only a reiteration of the default window ('last 30 days'), not new semantic detail, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource ('financial summary') and concrete output components (inflows, outflows, net, top counterparties, category breakdown). This clearly distinguishes it from raw transaction listing or balance retrieval siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'for a date range' and 'Default = last 30 days' imply when the tool is useful, but it never explicitly states when to prefer this over kontist_list_transactions or other siblings. Usage context is present but left to inference rather than stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

kontist_whoamiA

Verify Kontist auth is working and return basic identity. Run this first to confirm credentials before any other call.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

There are no annotations, so the description carries full weight. It discloses that the tool verifies auth and returns identity, and the instruction to run it first conveys a read-only health-check character. However, it does not state what happens on auth failure, whether any side effects occur, or the shape of the identity response.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short sentences, front-loading the core action and then the ordering rule. Every word contributes; there is no repetition of the tool name or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a no-parameter auth check with no output schema, the description provides enough to know what it does and when to call it. It could be more specific about the identity fields returned, but this is a minor gap given the tool's simplicity and the explicit ordering guidance.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema covers 100%, so there is nothing the description needs to add about inputs. No parameter documentation is required for correct invocation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses the specific verb 'Verify' and states the resource ('Kontist auth') plus what is returned ('basic identity'). This clearly separates it from the balance/transaction siblings, whose purposes are different. Even without a title, the tool's role is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly instructs the agent to 'Run this first to confirm credentials before any other call,' which is a clear when-to-use directive. The description also implies a logical gate: only proceed to sibling tools after this succeeds. No alternative tool is named, but none is needed for an auth-check tool.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 7 tool updatesv0.1.0
    • First observedkontist_annotate_transaction
    • First observedkontist_get_balance
    • First observedkontist_get_tax_reserves
    • First observedkontist_get_transaction
    • First observedkontist_list_transactions
    • First observedkontist_summarize
    • First observedkontist_whoami

TDQS

A4/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct concern: identity, balance, transaction listing, single transaction lookup, tax reserves, annotation, and summary. Even the two balance tools are clearly separated by account type, and list/get transaction follow a standard collection/detail split.

Naming Consistency4/5

All tools share the kontist_ prefix and use snake_case, with a consistent verb_noun structure for most tools (get_balance, list_transactions, get_transaction, get_tax_reserves, annotate_transaction, summarize). The only outlier is kontist_whoami, which uses a command-style name rather than a verb_noun pattern.

Tool Count5/5

Seven tools is an appropriate size for a banking/finance-focused MCP server. Each tool provides a meaningful capability without redundancy or padding, and the count is neither too thin nor overwhelming.

Completeness5/5

The toolset covers the core Kontist workflow: auth verification, balance, transaction browsing and detail lookup, tax reserve visibility, annotation, and period summaries. There are no obvious dead ends for the stated scope of reading and annotating account data.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    MCP server for accessing and managing Banktivity personal finance data, enabling account, transaction, and budget operations through natural language.
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for FinTS/HBCI banking; enables account information retrieval such as balances and transactions via PIN-TAN.
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server that turns bank transactions into a financial digest including cash-flow forecast, spending breakdown, fee detection, and receipt reconciliation, exposing deterministic engines as JSON-RPC tools.
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for personal finance management. Enables natural language expense logging, budgeting, recurring charge detection, and statement import with deterministic local calculations.
    -