cockpit-mcp
KanseiLink Cockpit
Monorepo for @kansei-link/cockpit — an MCP server for Japanese accounting workflow automation.
Packages
Package | Description | Status |
MCP server — two-stage classifier + TaxRuleEngine | ✅ npm | |
| Web dashboard (coming soon) | 🚧 |
Related MCP server: financial-law-mcp
Quick Start
npm install @kansei-link/cockpitSee packages/cockpit-mcp/README.md for setup and configuration.
Data
The data/ directory contains classification rules used by the MCP server:
keyword-dict/— Keyword dictionary for 19-category classificationexclusion-rules/— Patterns to exclude non-classifiable transactionstax-rules/— Consumption tax rates, withholding rules, invoice system config
License
MIT — see LICENSE for details.
Copyright (c) 2026 Synapse Arrows PTE. LTD.
Available Tools
12 toolscheck_duplicateA
Check if a transaction already exists in freee (= by date + amount + memo prefix). Use BEFORE register to prevent double-posting.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ||
| memo | Yes | ||
| amount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full responsibility for behavioral disclosure. It states the tool checks for duplicates but does not specify the return type, whether it is read-only, error conditions, or case sensitivity of memo prefix matching. This lack of detail limits the agent's understanding of side effects and behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise, with two sentences that front-load the purpose and criteria, then provide a clear usage directive. Every sentence adds value without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple check tool with three required parameters and no output schema, the description covers the purpose, matching criteria, and usage timing. However, it omits information about the return value (e.g., boolean or details) and does not mention potential errors or edge cases, leaving some incompleteness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema lacks descriptions (0% coverage), but the description adds meaning by specifying that memo is matched by prefix and that the combination of date, amount, and memo is used for duplicate detection. This provides crucial semantic context beyond the raw schema definition.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool checks for duplicate transactions by date, amount, and memo prefix, with explicit matching criteria. It distinguishes itself from siblings by focusing on duplicate detection, and the phrase 'Use BEFORE register' adds context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'Use BEFORE register to prevent double-posting.' This tells the agent when to use the tool. However, it does not mention when not to use it or compare it to alternatives like check_exclusion or classify_transaction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_exclusionB
7-rule exclusion check for Japanese accounting. Returns excluded:true if transaction should NOT be auto-journalized. Rules: 内容不明デビット / 借入金返済 / 社保税金 / 給与支払い / 投資 / ATM出金 / 公共料金.
| Name | Required | Description | Default |
|---|---|---|---|
| memo | Yes | ||
| amount | Yes | ||
| employees | No | Optional employee name list (= for salary_payment detection) | |
| partner_name | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions returning excluded:true but does not disclose whether the tool is read-only, idempotent, requires authentication, or has any side effects. The behavioral context is minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise: two short sentences plus a list of rules. The first sentence front-loads the core purpose. Every element is meaningful and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description should fully explain the return value, which it partially does. However, it fails to explain the role of most parameters (memo, amount, partner_name) and does not cover error conditions or edge cases. The context is incomplete for an agent to use the tool reliably.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is only 25% (only 'employees' has a description). The description lists rules but does not explain how memo, amount, or partner_name relate to the exclusion logic. It adds no value over the schema for these parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: a 7-rule exclusion check for Japanese accounting that returns whether a transaction should not be auto-journalized. It distinguishes itself from siblings like check_duplicate and classify_transaction by focusing on exclusion rules.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for checking exclusion from auto-journalization but does not explicitly state when to use this tool versus alternatives or when not to use it. No guidance on prerequisites or comparison with sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
classify_transactionA
Two-stage classifier for Japanese tax accounting. Stage 1: keyword dictionary match (14 categories × ~50 keywords). Stage 2 (= deferred to Phase 1.B): Claude API fallback. Returns 勘定科目 + 税区分 + confidence.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | ISO 8601 date YYYY-MM-DD | |
| memo | Yes | 取引摘要 | |
| amount | Yes | Transaction amount (JPY) | |
| partner_name | No | 取引先名 (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, but description fully discloses the two-stage process, deferred fallback, and return values. No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with purpose, no wasted words. Perfectly concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose, stages, output, and deferred phase. Missing confidence score range or interpretation details, but adequate for a classifier with no output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so parameters are well-documented in schema. Description adds no additional parameter details beyond the schema, but baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Explicitly states it is a two-stage classifier for Japanese tax accounting, specifying stages (keyword dictionary match and Claude API fallback) and outputs (勘定科目, 税区分, confidence). Clearly distinguishes from sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Describes when to use (for Japanese tax accounting classification) and the two-stage process. Doesn't explicitly state when not to use or compare to siblings like correct_classification, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
correct_classificationA
税理士修正フィードバック。誤分類を記録し、同パターンの取引が今後来たら修正後の勘定科目を自動適用。Linksee Memory caveat layer と同等(= 永続記憶、二度と同じ誤りをしない)。修正は全社共通 or 特定会社のみに適用可能。
| Name | Required | Description | Default |
|---|---|---|---|
| reason | Yes | 修正理由(例: "1人利用・5,000円以下は会議費") | |
| company_id | No | 特定会社のみに適用(省略 = 全社共通) | |
| memo_pattern | Yes | この修正が適用される摘要パターン(例: "スターバックス 渋谷") | |
| partner_name | No | 取引先名(optional — memo_pattern だけでもOK) | |
| to_category_id | Yes | 正しい勘定科目ID | |
| from_category_id | No | 誤分類だった勘定科目ID(optional) | |
| to_category_name_ja | Yes | 正しい勘定科目名 | |
| from_category_name_ja | No | 誤分類だった勘定科目名(optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses that the tool uses '永続記憶' (persistent memory) and will '自動適用' (automatically apply) corrected categories to future similar transactions. It also explains scope options (company-wide or specific company). While it doesn't cover all behavioral details (e.g., idempotency, error handling), it provides key behavioral context beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences long with no filler. It front-loads the core purpose ('税理士修正フィードバック'), explains the mechanism, and notes scope. Every sentence earns its place, making it highly concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (8 parameters, persistence, auto-application), the description covers the main purpose, behavior, and scope. It lacks details about return values (no output schema) and error handling, but these are not critical for understanding the tool's function. Overall, it is reasonably complete for a correction feedback tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning each parameter already has a description in the input schema. The tool description adds conversational context but does not provide additional parameter-level meaning beyond what the schema already conveys. Per guidelines, baseline is 3 when coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states '税理士修正フィードバック' (tax accountant correction feedback) and explains the tool records misclassifications and auto-applies corrected categories to future matching transactions, with a note about persistent memory. This clearly distinguishes it from siblings like 'classify_transaction' (classification) and 'recall_memory' (memory retrieval), providing a specific verb-resource pair.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly indicates the tool is for correction feedback and mentions scope (company-wide or per-company). It implicitly distinguishes from siblings by focusing on recording corrections rather than classifying or recalling, but does not explicitly state when NOT to use it or name alternatives. This is slightly below a 5 due to lack of explicit exclusion guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_monthly_reportA
Generate a monthly review report. Takes transaction data (from freee API or CSV import), classifies all transactions, detects anomalies, and produces a structured Markdown report with category breakdown, anomaly alerts, and review items. Designed for tax accountants to present to clients.
| Name | Required | Description | Default |
|---|---|---|---|
| month | Yes | Target month YYYY-MM (e.g. "2026-05") | |
| format | No | markdown | |
| use_freee | No | Fetch transactions from freee API instead of providing them | |
| company_name | No | 会社名 / 顧問先名 | |
| transactions | No | Array of transactions to analyze. If omitted, fetches from freee API for the given month. | |
| compare_label | No | Comparison label (e.g. "前月", "前年同月") | 前月 |
| compare_transactions | No | Previous period transactions for comparison (optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It discloses that transactions are fetched from freee API if not provided, and that the tool classifies and detects anomalies without side effects. However, it does not mention authentication needs or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a concise 3 sentences, front-loaded with the core purpose. Every sentence adds value, covering inputs, process, and output, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 7 parameters and no output schema, the description covers the main workflow and output structure. It mentions the report includes category breakdown, anomaly alerts, and review items. However, it does not specify the exact return format or pagination, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is high (86%), so baseline is 3. The description adds context for some parameters (e.g., data sourcing), but does not elaborate on each parameter beyond the schema. It mostly paraphrases the existing descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool generates a monthly review report, specifies the process (classify, detect anomalies, produce report), and distinguishes it from sibling tools like classify_transaction by focusing on the complete report generation for client presentation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for tax accountants preparing client reports and mentions data sources (freee API or CSV). However, it does not explicitly state when to prefer this tool over alternatives like classify_transaction or import_csv, nor provide 'when not to use' guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
import_csvA
Import CSV from 弥生会計/freee/MoneyForward or generic format. Auto-detects source format from headers. Runs each transaction through the full classification pipeline (Stage 0 exclusion → Stage 1+2 classification → confidence routing). Returns categorized results + review queue + Markdown report. 弥生 users: export 仕訳日記帳 as UTF-8 CSV.
| Name | Required | Description | Default |
|---|---|---|---|
| source | No | Force source format (default: auto-detect from headers) | |
| csv_content | Yes | Raw CSV text (UTF-8). Paste the full CSV content. | |
| date_column | No | Column name for date (generic CSV only) | |
| memo_column | No | Column name for memo/description (generic CSV only) | |
| amount_column | No | Column name for amount (generic CSV only) | |
| partner_column | No | Column name for partner name (generic CSV only, optional) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses the processing pipeline (Stage 0→1+2 classification, confidence routing) and return structure (categorized results, review queue, Markdown report), which is critical for an import tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Multiple sentences but each adds value; information is front-loaded and well-organized, though slightly dense.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description fully explains the return format and processing steps, making it complete for agent decision-making.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaning by explaining source parameter force vs auto-detect, clarifying generic CSV columns, and emphasizing raw CSV paste.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description specifies importing CSV from specific sources (弥生会計/freee/MoneyForward or generic) with auto-detection, distinguishing from sibling tools by describing the full classification pipeline and return values.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides guidance for auto-detection and a specific tip for 弥生 users, but lacks explicit comparisons to sibling tools like classify_transaction or reconcile_cross_saas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_freee_companiesA
List all companies (事業所) accessible by the configured freee OAuth token. Returns company IDs + names. Used for multi-company batch processing.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must convey behavioral traits. It states the action is a list operation and mentions the OAuth token, but it does not explicitly confirm it is read-only or state any side effects. For a simple listing tool, this is adequate but not fully transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description consists of two concise sentences that front-load the main action and include a Japanese translation for clarity. Every sentence adds value without unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a parameterless list tool, the description fully covers what the tool does, what it returns, and a typical use case. No additional information from an output schema is needed to understand the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 100%. The description adds no parameter-specific details, which is appropriate since there are none. Per the baseline rule for 0 parameters, a score of 4 is given.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('List all companies'), the resource ('companies accessible by the configured freee OAuth token'), and the output ('Returns company IDs + names'). It also provides a use case ('Used for multi-company batch processing'), distinguishing it from sibling tools that perform different operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implicitly indicates when to use the tool (to list accessible companies and obtain IDs/names for batch processing). It does not explicitly state when not to use it or list alternatives, but the context is clear and no sibling tool overlaps this functionality.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_freee_dealsB
List transactions (取引) from freee API for the configured company. Useful for sync + classification dogfood.
| Name | Required | Description | Default |
|---|---|---|---|
| type | No | Filter by income or expense | |
| limit | No | ||
| offset | No | ||
| end_issue_date | No | YYYY-MM-DD | |
| start_issue_date | No | YYYY-MM-DD |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the burden. It only says 'List transactions' without disclosing behavioral traits like rate limits, idempotency, or any side effects. This is insufficient for a tool with 5 parameters.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise with two sentences and no redundant information. It front-loads the purpose, but could be more structured with bullet points for clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 5 parameters, no output schema, and no annotations, the description is incomplete. It does not explain pagination (limit/offset), date format specifics, or what the response contains. More context is needed for effective tool use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 60% (3 of 5 parameters have descriptions). The description does not add extra meaning beyond the schema, e.g., explaining how type, limit, offset, date filters work together. Baseline score due to moderate coverage but no added value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists transactions from freee API for the configured company. The verb 'List' and resource 'transactions (取引)' are specific. However, it does not differentiate from sibling tools like 'classify_transaction' or 'import_csv'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description mentions 'Useful for sync + classification dogfood', giving some context on when to use it, but lacks explicit guidance on when to avoid or alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
nightly_runA
Nightly batch pipeline. Processes ALL companies accessible by the token (= multi-company batch). Pipeline per company: fetch unprocessed (status=unsettled) → Stage 0 exclusion → Stage 1+2 classify → confidence routing (high=auto, medium=auto+log, low=human_review) → aggregate summary. Currently dry-run only (write-back pending Phase 1.B).
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | Currently always dry_run (= write-back pending Phase 1.B) | |
| period_end | No | YYYY-MM-DD end date filter | |
| company_ids | No | Override: process only these company IDs (default: all accessible) | |
| concurrency | No | Max parallel companies (default: 3, freee rate limit safe) | |
| period_start | No | YYYY-MM-DD start date filter | |
| deals_per_company | No | Max deals fetched per company |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description fully carries the burden of disclosing behavior. It reveals the tool is currently dry-run only, processes all companies, and details the per-company pipeline steps (fetch, exclusion, classification, confidence routing, summary). This is transparent about limitations and internal logic.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded with the tool's purpose. It uses a single paragraph with key points (pipeline steps, dry-run status) without unnecessary words. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (batch pipeline with multiple stages, no output schema), the description provides a good overview of the process and current state. It covers the pipeline steps and dry-run limitation. However, it lacks details on what the tool returns or how to interpret results, which could be useful for an agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all parameters are already described in the input schema. The tool description adds minimal extra information (e.g., dry-run context) but does not significantly enhance understanding beyond the schema's parameter descriptions. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool is a nightly batch pipeline that processes all accessible companies. It outlines the pipeline stages (fetch, exclusion, classify, routing, summary), distinguishing it from sibling tools that handle individual operations like classify_transaction or check_duplicate.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the tool is for batch processing and notes the current dry-run limitation. It implies when to use (nightly runs) but does not explicitly exclude alternatives or provide when-not-to-use guidance. However, the pipeline context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
recall_memoryB
過去の分類パターン・修正履歴を検索。取引の摘要/取引先から過去パターンを参照し、分類結果の根拠を確認。Memory stats(pattern hit率等)の確認にも使用。
| Name | Required | Description | Default |
|---|---|---|---|
| memo | No | 取引摘要(パターン検索用) | |
| amount | No | 金額(±5% 範囲でマッチ) | |
| show_stats | No | Memory 全体統計を表示 | |
| partner_name | No | 取引先名(optional) | |
| show_corrections | No | 全修正履歴を表示 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It describes the tool as a search operation, which implies it is non-destructive, but it does not explicitly state read-only behavior, required permissions, rate limits, or potential side effects. The description is insufficient for a tool that may involve multiple operations (search vs. stats).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise at two sentences and front-loads the main purpose. However, it could be more structured with bullet points or clearer separation of use cases. It is appropriately sized but lacks explicit structure.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema, so the description should explain what the tool returns (e.g., pattern details, correction records). It mentions 'memory stats' but does not describe the format or content of the response. Given the tool's complexity (5 parameters, search and stats), the description is incomplete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents each parameter's purpose. The description adds limited value by grouping parameters (memo/partner for pattern search, show_stats for stats) but does not provide significant new meaning beyond what is in the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's purpose: searching past classification patterns and correction history. It specifies the use of transaction descriptions (memo) and partner names to reference patterns and confirm classification rationale, and mentions memory stats. This clearly distinguishes it from sibling tools like classify_transaction (for actual classification) and correct_classification (for corrections).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when needing to reference past patterns to justify classifications or check memory stats, but it does not explicitly state when to use this tool versus alternatives or when not to use it. No exclusions or comparisons to siblings are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
reconcile_cross_saasC
Cross-SaaS reconciliation (= freee ↔ MF). Currently freee-only mode (= MF connector pending Phase 1.B). Detects duplicate fingerprints within freee.
| Name | Required | Description | Default |
|---|---|---|---|
| period_end | Yes | ||
| period_start | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description partially discloses behavior: it detects duplicate fingerprints within freee. However, it does not reveal side effects, data mutation, or prerequisites, leaving significant behavioral gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, relatively concise. However, the use of parentheses and equals signs makes the first sentence slightly cluttered, reducing readability.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (cross-SaaS reconciliation, duplication detection), the description lacks essential context: no return value, no error conditions, no prerequisites, and no integration status information. With no output schema or annotations, this is insufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, and the description does not explain the two parameters (period_start, period_end). No format, purpose, or example is given, forcing the agent to infer from names alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it performs cross-SaaS reconciliation between freee and MF, and detects duplicate fingerprints. It distinguishes this tool from siblings by specifying its cross-SaaS scope, though the 'freee-only mode' adds some ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use or not use this tool. It mentions the tool is currently in freee-only mode, implying limitations, but does not provide alternatives or state clearly when to choose this over siblings like check_duplicate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upsert_partnerA
取引先マスタ auto-creation in freee. Fuzzy match against existing partners; if new, create. Returns partner_id.
| Name | Required | Description | Default |
|---|---|---|---|
| partner_name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavior. It discloses fuzzy matching and return value, but does not specify update behavior on a match, permissions, or side effects, leaving some ambiguity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences that convey all essential information without redundancy, perfectly front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter, no output schema, and no annotations, the description covers purpose, matching logic, and return value. Minor gap: unclear update behavior on match, but otherwise complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so description must compensate. It adds that partner_name is used for fuzzy matching, but does not elaborate on format or constraints. Adequate for a single parameter but not thorough.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool performs an auto-creation/upsert on a partner master in freee with fuzzy matching, and returns partner_id. It distinguishes from siblings like check_duplicate by focusing on the upsert action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating a new partner or matching existing ones via fuzzy logic, but does not explicitly state when to use alternatives like check_duplicate or any prerequisites.
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. Dates show when Glama detected each change.
12 tool updates
v0.1.0- First observed
check_duplicate - First observed
check_exclusion - First observed
classify_transaction - First observed
correct_classification - First observed
generate_monthly_report - First observed
import_csv - First observed
list_freee_companies - First observed
list_freee_deals - First observed
nightly_run - First observed
recall_memory - First observed
reconcile_cross_saas - First observed
upsert_partner
TDQS
Each tool has a clearly distinct purpose: duplicate detection, exclusion checks, classification, correction, reporting, import, listing companies and deals, batch processing, memory recall, reconciliation, and partner management. No two tools overlap in functionality.
Most tools follow a verb_noun pattern (check_duplicate, classify_transaction, import_csv, etc.), but 'nightly_run' is an exception (adjective_noun) that slightly breaks consistency. Overall, the naming is clear and predictable.
12 tools is well-scoped for an accounting automation server, covering all major steps from import to classification to reporting without being excessive or insufficient.
The tool set provides complete coverage of the intended workflow: import, duplicate detection, exclusion rules, classification, correction feedback, multi-company batch processing, report generation, memory recall, and reconciliation. No obvious gaps.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
TaxSort — Tollbooth-monetized MCP server for personal tax transaction classification
Hosted MCP server for Mini Accountant: invoices, expenses, customers, analytics, tax estimates.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
MCP server for Quaderno — tax-rate calculation, invoices, contacts, products, receipts & expenses.
Related MCP Servers
- FlicenseBqualityDmaintenanceMCP server for DACH accounting automation. Connect AI assistants to sevDesk and Lexoffice — create invoices, manage contacts, handle bookings and vouchers for German-speaking businesses.1556-
- AlicenseAqualityDmaintenanceMCP server to fetch Japanese financial laws and regulations from the e-Gov API, preventing hallucinations in Claude's responses. Supports 9 domains including Financial Instruments and Exchange Act, Banking Act, etc.5MIT
- FlicenseNot gradedqualityBmaintenanceMulti-tenant MCP server connecting accounting software to AI assistants via ~87 tools. Supports Bokio (Swedish accounting) with mock mode for development.-
- AlicenseNot gradedqualityAmaintenanceMCP server that connects AI agents to 34,500+ Australian Taxation Office documents, providing cited answers, tax deduction discovery, depreciation scheduling, BAS checklists, and audit risk assessment through 13 specialized tools.494,1118AGPL 3.0
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/michielinksee/bantou'
If you have feedback or need assistance with the MCP directory API, please join our Discord server