Skip to main content
Glama
freee Accounting MCP Server

freee Accounting MCP Server

by knishioka

MCP Server for freee Accounting API

CI codecov License: MIT

A Model Context Protocol (MCP) server that provides integration with freee accounting software API, enabling AI assistants to interact with accounting data.

Features

  • OAuth 2.0 authentication flow support

  • Company management

  • Transaction (Deal) operations

  • Account items management

  • Partner management

  • Sections and Tags

  • Invoice creation and management

  • Trial balance reports

  • Token persistence and automatic refresh

Related MCP server: freee MCP Server

Prerequisites

  • Node.js 20 or higher

  • freee API credentials (Client ID and Client Secret)

  • freee account with API access

Quick Start

Choose one of the following methods to get started:

Option A: npx (no local build required)

Add the following to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "freee": {
      "command": "npx",
      "args": ["-y", "github:knishioka/freee-mcp"],
      "env": {
        "FREEE_CLIENT_ID": "your_client_id",
        "FREEE_CLIENT_SECRET": "your_client_secret",
        "FREEE_TOKEN_ENCRYPTION_KEY": "replace-with-strong-random-value"
      }
    }
  }
}

Note: The first launch with npx may take 30–60 seconds while dependencies are downloaded and TypeScript is compiled. Subsequent launches will be faster.

Option B: Local build

git clone https://github.com/knishioka/freee-mcp.git
cd freee-mcp
npm install && npm run build
{
  "mcpServers": {
    "freee": {
      "command": "node",
      "args": ["/absolute/path/to/freee-mcp/dist/index.js"],
      "env": {
        "FREEE_CLIENT_ID": "your_client_id",
        "FREEE_CLIENT_SECRET": "your_client_secret",
        "FREEE_TOKEN_ENCRYPTION_KEY": "replace-with-strong-random-value"
      }
    }
  }
}

See the Installation section for detailed setup instructions including environment variables and additional MCP client configurations.

Which method should I use?

Use case

Recommended method

Quick evaluation / no Node.js dev setup

npx

Active development / offline use

Local build

Installation

  1. Clone the repository:

git clone https://github.com/knishioka/freee-mcp.git
cd freee-mcp
  1. Install dependencies:

npm install
  1. Build the TypeScript code:

npm run build
  1. Copy the environment example file and configure it:

cp .env.example .env
  1. Edit .env with your freee API credentials:

FREEE_CLIENT_ID=your_client_id_here
FREEE_CLIENT_SECRET=your_client_secret_here
FREEE_REDIRECT_URI=urn:ietf:wg:oauth:2.0:oob
# TOKEN_STORAGE_PATH=./tokens.enc  # Optional: defaults to platform-specific secure path

Configuration

Getting freee API Credentials

  1. Log in to your freee account

  2. Go to the freee App Store

  3. Create a new application

  4. Note down the Client ID and Client Secret

  5. Set the redirect URI (use urn:ietf:wg:oauth:2.0:oob for local development)

MCP Client Configuration

Build the server first (npm run build), then configure one of the clients below.

Environment Variables

Variable

Required

Description

Default

FREEE_CLIENT_ID

Yes

freee OAuth app client ID. The server exits on startup if this is missing.

—

FREEE_CLIENT_SECRET

Yes

freee OAuth app client secret. The server exits on startup if this is missing.

—

FREEE_DEFAULT_COMPANY_ID

No

Default company ID used when tool calls omit companyId.

—

TOKEN_STORAGE_PATH

No

Encrypted token storage file path.

Platform-specific (TokenManager.getDefaultStoragePath())

FREEE_TOKEN_ENCRYPTION_KEY

Yes

Secret used to derive the AES-256-GCM key for token encryption. The server exits on startup if this is missing. Generate with: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"

—

FREEE_TOKEN_DATA_BASE64

No

Base64-encoded JSON of [companyId, tokenData] tuples loaded at startup.

—

{
  "mcpServers": {
    "freee": {
      "command": "node",
      "args": ["/absolute/path/to/freee-mcp/dist/index.js"],
      "env": {
        "FREEE_CLIENT_ID": "your_client_id_here",
        "FREEE_CLIENT_SECRET": "your_client_secret_here",
        "TOKEN_STORAGE_PATH": "/absolute/path/to/freee-mcp/tokens.enc",
        "FREEE_DEFAULT_COMPANY_ID": "123456",
        "FREEE_TOKEN_ENCRYPTION_KEY": "replace-with-strong-random-value"
      }
    }
  }
}
claude mcp add freee \
  -e 'FREEE_CLIENT_ID=your_client_id_here' \
  -e 'FREEE_CLIENT_SECRET=your_client_secret_here' \
  -e 'TOKEN_STORAGE_PATH=/absolute/path/to/freee-mcp/tokens.enc' \
  -e 'FREEE_DEFAULT_COMPANY_ID=123456' \
  -e 'FREEE_TOKEN_ENCRYPTION_KEY=replace-with-strong-random-value' \
  -- node /absolute/path/to/freee-mcp/dist/index.js
{
  "servers": {
    "freee": {
      "command": "node",
      "args": ["${workspaceFolder}/dist/index.js"],
      "env": {
        "FREEE_CLIENT_ID": "your_client_id_here",
        "FREEE_CLIENT_SECRET": "your_client_secret_here",
        "TOKEN_STORAGE_PATH": "${workspaceFolder}/tokens.enc",
        "FREEE_DEFAULT_COMPANY_ID": "123456",
        "FREEE_TOKEN_ENCRYPTION_KEY": "replace-with-strong-random-value"
      }
    }
  }
}
{
  "mcpServers": {
    "freee": {
      "command": "node",
      "args": ["/absolute/path/to/freee-mcp/dist/index.js"],
      "env": {
        "FREEE_CLIENT_ID": "your_client_id_here",
        "FREEE_CLIENT_SECRET": "your_client_secret_here",
        "FREEE_TOKEN_DATA_BASE64": "base64-encoded-json",
        "FREEE_DEFAULT_COMPANY_ID": "123456",
        "FREEE_TOKEN_ENCRYPTION_KEY": "replace-with-strong-random-value"
      }
    }
  }
}

Usage

Authentication Methods

Run the interactive setup script:

npm run setup-auth

This script will:

  1. Load credentials from .env file if available

  2. Check for existing tokens in tokens.enc

  3. Open the authorization URL in your browser

  4. Wait for you to authorize and get the code

  5. Exchange the code for tokens immediately

  6. Save tokens to tokens.enc or display environment variables

After running this script, use a file-based token configuration like the Claude Desktop or VS Code examples above.

Method 2: Environment Variables

If you already have tokens, provide them via environment variables (for example FREEE_TOKEN_DATA_BASE64 in the Cursor example above).

  1. Get the authorization URL:

Use tool: freee_get_auth_url
  1. Visit the URL in a browser and authorize the application

  2. Copy the authorization code from the redirect

  3. Exchange the code for an access token:

Use tool: freee_get_access_token with code: "your_auth_code"

Note: The authorization code expires quickly, so this method often fails.

Handling Multiple Companies

freee MCP supports multiple companies. When you authenticate, the server automatically obtains access to all companies associated with your freee account.

Setting a Default Company

To avoid specifying companyId for every API call, you can set a default company ID:

{
  "env": {
    "FREEE_DEFAULT_COMPANY_ID": "123456"
  }
}

To find your company IDs, use the freee_get_companies tool after authentication.

Using Multiple Companies

If you don't set a default company ID, you must specify companyId for each API call:

// With default company ID set:
Use tool: freee_get_deals

// Without default company ID:
Use tool: freee_get_deals with companyId: 123456

Available Tools

Authentication

  • freee_get_auth_url - Get OAuth authorization URL

  • freee_get_access_token - Exchange auth code for access token

  • freee_set_company_token - Manually set token for a company

Company Operations

  • freee_get_companies - List accessible companies

  • freee_get_company - Get company details

Transaction (Deal) Operations

  • freee_get_deals - List transactions

  • freee_get_deal - Get transaction details

  • freee_create_deal - Create new transaction

Master Data

  • freee_get_account_items - List account items

  • freee_get_partners - List partners

  • freee_create_partner - Create new partner

  • freee_get_sections - List sections

  • freee_get_tags - List tags

Invoice Operations

  • freee_get_invoices - List invoices

  • freee_create_invoice - Create new invoice

Reports

  • freee_get_trial_balance - Get trial balance report

  • freee_get_profit_loss - Get profit and loss statement - Optimal for operating profit!

  • freee_get_balance_sheet - Get balance sheet

Efficient Operating Profit Retrieval

Instead of retrieving large amounts of individual transactions, use the Profit & Loss API (freee_get_profit_loss) to get financial data including operating profit with a single API call.

# Example: Get operating profit for fiscal year 2024
Use tool: freee_get_profit_loss
Parameters:
- fiscalYear: 2024
- startMonth: 4    # Start of fiscal year
- endMonth: 3      # End of fiscal year

This API returns pre-aggregated information including:

  • Revenue

  • Cost of goods sold

  • Gross profit

  • Selling, general & administrative expenses

  • Operating profit ← Here!

  • Non-operating income/expenses

  • Ordinary profit

  • Extraordinary gains/losses

  • Net income

Usage Examples

# Operating profit from April to June 2024
Use tool: freee_get_profit_loss
Parameters:
- fiscalYear: 2024
- startMonth: 4
- endMonth: 6

Get Operating Profit for Year-over-Year Comparison

# Current period (FY2024)
Use tool: freee_get_profit_loss
Parameters:
- fiscalYear: 2024
- startMonth: 4
- endMonth: 9

# Previous period (FY2023)
Use tool: freee_get_profit_loss
Parameters:
- fiscalYear: 2023
- startMonth: 4
- endMonth: 9

Partner-wise Operating Profit Analysis

Use tool: freee_get_profit_loss
Parameters:
- fiscalYear: 2024
- startMonth: 4
- endMonth: 12
- breakdownDisplayType: "partner"  # Breakdown by partner

Performance Comparison

Aggregating operating profit from individual deals can require thousands of API calls and significant client-side processing. The freee_get_profit_loss tool returns pre-aggregated report data in a single request, which dramatically reduces rate-limit usage. For most reporting flows, start with report APIs and only fetch raw deals when you need detailed drill-down.

The freee_kpi_dashboard tool is the first structured output PoC: it keeps the existing text response for current clients and also returns structuredContent with the company, period, and profitability / safety / efficiency / liquidity KPI sections for UI and automation use.

Tip: Set FREEE_DEFAULT_COMPANY_ID so report calls work without passing companyId each time.

Development

Building

npm run build

Development Mode

npm run dev

Linting

npm run lint

Type Checking

npm run typecheck

Token Management

The server automatically manages OAuth tokens:

  • Tokens are stored in the file specified by TOKEN_STORAGE_PATH

  • Tokens are automatically refreshed when they expire

  • Each company can have its own token

Error Handling

The server provides detailed error messages for:

  • Authentication failures

  • API rate limits

  • Invalid parameters

  • Network errors

Security

Token Security

  • Encryption at Rest: All tokens are encrypted using AES-256-GCM before storage

  • File Permissions: Token files are created with 0600 permissions (owner read/write only)

  • Secure Storage Paths: Platform-specific secure directories are used by default

  • Automatic Refresh: Tokens are refreshed 5 minutes before expiry to prevent race conditions

  • Single-Use Refresh Tokens: freee refresh tokens are handled correctly with proper error recovery

General Security Guidelines

  • Never commit your .env file or token files

  • Never commit client config files that embed secrets (for example .vscode/mcp.json, ~/.cursor/mcp.json, or Claude Desktop config files)

  • Keep your Client Secret secure

  • Use absolute paths for token storage outside the project directory

  • Store tokens in platform-specific secure locations (e.g., ~/.config/freee-mcp/)

  • Use FREEE_TOKEN_ENCRYPTION_KEY for custom encryption keys

Token Storage Options

File-Based Storage (Default)

# Default locations:
# macOS: ~/Library/Application Support/freee-mcp/tokens.enc
# Windows: %APPDATA%/freee-mcp/tokens.enc
# Linux: ~/.config/freee-mcp/tokens.enc

# Custom location via environment:
export TOKEN_STORAGE_PATH=/custom/path/tokens.enc
  • Persistent across sessions

  • Encrypted with configurable key

  • Automatic permission management

  • Requires file system access

Environment Variable Storage

# Base64 encoded token data (recommended for restricted environments)
export FREEE_TOKEN_DATA_BASE64="base64-encoded-json"

# Individual token variables (legacy)
export FREEE_ACCESS_TOKEN="your-access-token"
export FREEE_REFRESH_TOKEN="your-refresh-token"
# FREEE_COMPANY_ID is required to associate the token with a specific company
export FREEE_COMPANY_ID="12345"
  • Works in serverless and restricted environments (e.g., Claude Desktop)

  • No file system dependencies

  • Easy to manage in CI/CD

Secret Detection with Gitleaks

This project uses Gitleaks to prevent accidental exposure of sensitive data:

  • Pre-commit Hook: Automatically scans for secrets before each commit

  • CI/CD Integration: GitHub Actions runs security scans on all PRs

  • Custom Rules: Detects freee-specific credentials (Client ID, Secret, tokens)

  • Manual Scanning: Run npm run gitleaks to check for secrets locally

Available Commands:

npm run gitleaks        # Scan for secrets (non-blocking)
npm run gitleaks:ci     # Scan for secrets (CI mode, blocks on findings)

Troubleshooting

Authentication Issues

  • Authentication errors: Ensure your Client ID and Secret are correct. Re-run npm run setup-auth if needed

  • "Token refresh failed: invalid_grant": freee refresh tokens are single-use. Re-authenticate by running npm run setup-auth

  • "No authenticated companies found": Run freee_get_auth_url to start OAuth flow, then complete authorization in browser

  • "Permission denied" on token file: Server automatically fixes permissions. Ensure parent directory is writable

  • "Cannot find tokens.enc": Use absolute paths in configuration, or try environment variable storage for restricted environments

General Issues

  • Token expiration: The server automatically refreshes tokens 5 minutes before expiry

  • Rate limits: freee API has rate limits (3,600 requests/hour). Use aggregated report APIs to minimize calls

  • Company ID required: Most operations require a company ID. Set FREEE_DEFAULT_COMPANY_ID to avoid specifying it each time

License

MIT

Support

For issues related to:

Available Tools

60 tools
freee_accounting_policy_contextA

Get accounting policy context for decision support (会計方針ガイダンスコンテキスト) - Returns similar past journal patterns, fixed asset capitalization patterns, and relevant account items with tax codes to help determine proper accounting treatment. Use when the user asks about asset vs expense classification, depreciation methods, deferred expense treatment, etc.

Inputs: situation (required), companyId, amount, partnerName.

freee_account_item_contextA

Get account item (勘定科目) recommendation context for a transaction - Analyzes past deals by partner/amount to suggest the most likely account items with usage frequency, tax classification, and similar transaction patterns. Ideal for consistent bookkeeping when unsure which account item to use.

Inputs: description (required), companyId, partnerName, partnerId, +1 more.

freee_approve_expense_applicationA

Approve, reject, or send back an expense application (経費精算承認) - Executes approval workflow actions. Requires target_step_id and target_round from the expense application detail (use freee_get_expense_application first). Actions: approve (承認), reject (却下), feedback (差戻し).

Inputs: expenseApplicationId (required), approvalAction (required), targetStepId (required), targetRound (required), +1 more.

freee_ar_agingA

Accounts receivable aging analysis (売掛金エイジング分析) - Classifies unsettled income deals into aging buckets (0-30, 31-60, 61-90, 90+ days) by days since issue_date, aggregates by partner, and highlights long-overdue receivables. Use for cash flow risk assessment and collection prioritization.

Inputs: companyId, as_of_date.

freee_auth_statusA

Check authentication status for freee API tokens - Shows token validity, expiry time, and remaining minutes for one or all authenticated companies. Use to verify auth before making API calls.

Inputs: companyId.

freee_cash_positionA

Get consolidated cash position overview - Single call combines walletable balances, unpaid invoices (receivables), and unsettled expense deals (payables) into one summary. Provides total cash, net position, and overdue amounts for quick financial health assessment.

Inputs: companyId.

freee_clear_authA

Clear stored authentication tokens. If companyId is specified, clears only that company. If omitted, clears all companies. Use this when you need to re-authenticate or resolve token issues.

Inputs: companyId.

freee_compare_periodsA

Compare two financial periods with pre-computed diffs and percentages - Single call for YoY/MoM analysis. Returns metrics for both periods, absolute and percentage changes, and significance highlights. Eliminates LLM-side math for period comparisons.

Inputs: reportType (required), period1 (required), period2 (required), companyId, +1 more.

freee_cost_analysisA

Analyze expense structure with YoY anomaly detection and fixed/variable cost classification (費用構造分析) - Compares current and previous year P/L to flag expense items with year-over-year changes exceeding a configurable threshold. Classifies expense items as fixed or variable costs based on account category patterns. Use for cost health monitoring, identifying unexpected expense spikes, and understanding cost structure.

Inputs: fiscalYear (required), companyId, month, threshold.

freee_create_dealC

Create a new deal (transaction)

Inputs: issueDate (required), type (required), details (required), companyId, +3 more.

freee_create_deal_paymentA

Record a payment for a deal (支払消込) - Add a payment entry to settle accounts receivable/payable. Supports partial payments (amount less than deal total). Use freee_get_walletables to look up wallet account IDs. Essential for monthly closing and cash management.

Inputs: dealId (required), date (required), fromWalletableId (required), fromWalletableType (required), +2 more.

freee_create_invoiceB

Create a new invoice

Inputs: issueDate (required), partnerId (required), invoiceStatus (required), invoiceLines (required), +3 more.

freee_create_manual_journalA

Create a manual journal entry (振替伝票) - Creates a new manual journal with debit/credit entries. Essential for closing adjustments (決算整理仕訳) like depreciation, prepaid expense allocation, and provision entries. Set adjustment=true to mark as closing adjustment. Debit and credit totals must balance.

Inputs: issueDate (required), details (required), companyId, adjustment.

freee_create_partnerD

Create a new partner

Inputs: name (required), companyId, shortcut1, shortcut2, +3 more.

freee_create_segment_tagB

Create a new segment tag (セグメントタグ) - Creates a tag under segment 1-3 for department/project classification. Requires paid freee plan.

Inputs: segmentId (required), name (required), companyId, description, +2 more.

freee_create_transferA

Create a new bank transfer (口座振替) - Records a fund movement between accounts. Requires source and destination account IDs/types (use freee_get_walletables to look up). Supports bank_account, credit_card, and wallet types.

Inputs: date (required), amount (required), fromWalletableId (required), fromWalletableType (required), +4 more.

freee_get_access_tokenB

Exchange authorization code for access token

Inputs: code (required).

freee_get_account_itemsA

Get list of account items - Retrieves chart of accounts efficiently in one call. Use this master data for mapping and filtering in reports. Cached results recommended as account structure rarely changes.

Inputs: companyId, accountCategory, compact.

freee_get_auth_urlB

Get the authorization URL for freee OAuth flow

Inputs: state.

freee_get_balance_sheetB

Get balance sheet - Efficiently retrieves financial position with assets, liabilities, and equity pre-aggregated. Use for liquidity ratios, solvency analysis, and working capital calculations. Single API call replaces complex transaction aggregation.

Inputs: fiscalYear (required), startMonth (required), endMonth (required), companyId, +1 more.

freee_get_companiesA

Get list of accessible companies - Retrieves all companies linked to your freee account in one call. Essential first step to get company IDs for subsequent API calls. Cache results as company list rarely changes.

Inputs: no named parameters.

freee_get_companyA

Get specific company details - Retrieves company master data including fiscal year settings. Use this to understand accounting periods for report APIs. One-time call per session is usually sufficient.

Inputs: companyId.

freee_get_dealB

Get specific deal details

Inputs: dealId (required), companyId.

freee_get_dealsA

Get list of deals (transactions) - Use with date filters and pagination for efficiency. For financial analysis, prefer aggregated report APIs (profit_loss, balance_sheet) which process thousands of transactions server-side. Only use for detailed transaction inspection.

Inputs: companyId, partnerId, accountItemId, startIssueDate, +4 more.

freee_get_expense_applicationA

Get specific expense application details (経費精算申請詳細) - Retrieves full details including line items, approvers, comments, and approval flow logs. Use this to get current_step_id and current_round needed for approval actions.

Inputs: expenseApplicationId (required), companyId.

freee_get_expense_applicationsA

Get list of expense applications (経費精算申請) - Retrieves expense reports with filtering by status, date, applicant, approver, and amount. Supports approval workflow visibility. Use compact mode for summary statistics only.

Inputs: companyId, status, startIssueDate, endIssueDate, +9 more.

freee_get_general_ledgerA

Get general ledger (総勘定元帳) - Retrieves detailed journal entries per account item. Use account_item_id to filter by specific account (recommended to reduce response size). Ideal for "what is recorded under account X" analysis, account item context investigation, and journal consistency checks. Use compact mode for quick overviews with totals only.

Inputs: fiscalYear (required), startMonth (required), endMonth (required), companyId, +2 more.

freee_get_invoicesA

Get list of invoices - Retrieves invoice data with filtering options. For revenue analysis, prefer profit_loss API with partner breakdown. Use this for specific invoice management and AR tracking.

Inputs: companyId, partnerId, invoiceStatus, paymentStatus, +5 more.

freee_get_itemB

Get a single item (品目) by ID - Retrieves detailed information for a specific product/service item.

Inputs: itemId (required), companyId.

freee_get_itemsA

Get list of items (品目) - Retrieves product/service item master data used in invoices and deals. Items are cached for 15 minutes as master data changes infrequently. Foundation for item suggestion and bulk master context retrieval.

Inputs: companyId, offset, limit, compact.

freee_get_journalsA

Get journal entries (仕訳帳) for a date range - Downloads all journal entries including deals, manual journals, and auto-generated entries. Uses async download API internally (request → poll → download). Ideal for monthly closing verification, anomaly detection (duplicate entries, unusual accounts), and comprehensive audit review. Returns structured data parsed from CSV. Note: may take 10-30 seconds for large date ranges.

Inputs: startDate (required), endDate (required), companyId, visibleTags, +1 more.

freee_get_manual_journalB

Get specific manual journal entry details - Retrieves full details of a single manual journal including all debit/credit line items.

Inputs: manualJournalId (required), companyId.

freee_get_manual_journalsA

Get list of manual journal entries (振替伝票) - Supports rich filtering by date range, entry side, account, amount range, partner, and section. Max 500 records per page. For aggregated totals, prefer report APIs (profit_loss, trial_balance). Use this for reviewing individual accruals, adjustments, and reclassifications.

Inputs: companyId, startIssueDate, endIssueDate, entrySide, +7 more.

freee_get_partnersA

Get list of partners - Retrieves customer/vendor master data efficiently. For partner-based analysis, use profit_loss API with partner breakdown instead of aggregating individual transactions. Cache results as partner data changes infrequently.

Inputs: companyId, keyword, offset, limit, +1 more.

freee_get_profit_lossA

Get profit and loss statement - Most efficient for profitability analysis. Returns revenue, COGS, operating profit, and net income in one API call. Use breakdown_display_type for segment analysis (partner/section/item/tag). Ideal for monthly trends, YoY comparisons, and KPI dashboards instead of aggregating thousands of transactions.

Inputs: fiscalYear (required), startMonth (required), endMonth (required), companyId, +1 more.

freee_get_receiptA

Get specific receipt details (証憑詳細) - Retrieves full details of a single receipt including file URL, issue date, user info, and qualified invoice status. Use for individual receipt inspection and compliance verification.

Inputs: receiptId (required), companyId.

freee_get_receiptsA

Get list of receipts (証憑) for electronic bookkeeping compliance (電子帳簿保存法) - Retrieves uploaded receipt images/PDFs with filtering by date, user, and status. Use compact mode for summary statistics only. Max 100 records per page.

Inputs: companyId, startDate, endDate, userName, +4 more.

freee_get_sectionsA

Get list of sections (departments/divisions) - Retrieves organizational units for segment reporting. Use with profit_loss breakdown_display_type="section" for departmental P&L analysis in one API call.

Inputs: companyId, compact.

freee_get_segment_tagsA

Get list of segment tags (セグメントタグ) for multi-axis analysis - Retrieves segment tags (タグ1-3) used for department/project tracking. Use with profit_loss breakdown for segment-based P&L analysis. Requires paid freee plan. Different from regular tags (freee_get_tags): segment tags enable up to 3 independent classification axes.

Inputs: segmentId (required), companyId, offset, limit, +1 more.

freee_get_tagsA

Get list of tags - Retrieves custom classification tags. For tag-based analysis, use profit_loss API with tag breakdown for efficient aggregation. Useful for project/campaign tracking.

Inputs: companyId, compact.

freee_get_tax_codesA

Get list of tax codes (税区分マスター) - Retrieves all available tax classification codes in one call. Essential for accurate deal and invoice creation (e.g., taxable 10%, reduced 8%, exempt). Cached for 15 minutes as tax codes rarely change.

Inputs: companyId, compact.

freee_get_transferA

Get specific bank transfer details - Retrieves full details of a single fund transfer between accounts by ID.

Inputs: transferId (required), companyId.

freee_get_transfersA

Get list of bank transfers (口座振替) - Retrieves fund movement records between bank accounts, credit cards, and wallets. Supports date range and account filtering with pagination. Use freee_get_walletables first to get account IDs. Max 100 records per page.

Inputs: companyId, startDate, endDate, offset, +1 more.

freee_get_trial_balanceB

Get trial balance report - Efficiently retrieves aggregated account balances for all accounts in one API call. Use for financial analysis, balance verification, and period comparisons without processing individual transactions. Supports monthly/quarterly/annual periods.

Inputs: fiscalYear (required), startMonth (required), endMonth (required), companyId.

freee_get_walletablesA

Get list of bank accounts, credit cards, and wallets - Retrieves all walletable accounts in one call. Use with withBalance=true to check current cash position across all accounts. For aggregated financial analysis, prefer balance_sheet API. Use this for account-level balance checks and cash management.

Inputs: companyId, withBalance.

freee_get_wallet_txnsA

Get list of wallet transactions (口座明細) - Retrieves bank/credit card/wallet transaction entries. Requires walletableType and walletableId for specific account filtering. Use freee_get_walletables first to get account IDs. Max 100 records per page. For cash flow analysis, consider report APIs for aggregated data.

Inputs: companyId, walletableType, walletableId, startDate, +4 more.

freee_item_suggestion_contextA

Get item (品目) suggestion context for a partner - Retrieves item master list and aggregates item usage history from past deals with the specified partner. Items are ranked by usage frequency with recommended unit prices and tax codes. Use partner_id or partner_name to specify the partner. Useful for consistent bookkeeping when creating new deals or invoices.

Inputs: companyId, partner_id, partner_name, category.

freee_journal_consistency_checkA

Check journal entry consistency across deals (会計方針一貫性チェック) - Detects: (1) partners using multiple account items (e.g. same vendor booked to both "通信費" and "ソフトウェア使用料"), (2) tax category inconsistencies within the same partner+account combination (e.g. mix of "課税" and "不課税"). Returns severity-sorted findings with recommendations for unification.

Inputs: companyId, startDate, endDate, maxRecords.

freee_kpi_dashboardA

Get key management KPIs in a single call (経営KPIダッシュボード) - Fetches PL, BS, and walletable data in parallel to compute profitability (revenue, operating/ordinary profit margins), safety (current ratio, equity ratio), efficiency (receivable/payable turnover days), and liquidity (cash balance, working capital). Each metric includes a health indicator (healthy/caution/warning). Use for quick executive-level financial health overview.

Inputs: fiscalYear (required), startMonth (required), endMonth (required), companyId.

freee_master_contextA

Get all master data in one call (勘定科目・メモタグ・部門・セグメント・品目・取引先) - Bulk retrieval of reference data for advisory context. Uses parallel API calls with caching. Use include parameter to fetch only specific categories. Essential for providing accounting advice without multiple tool calls.

Inputs: companyId, include.

freee_monthly_closing_checkA

Run monthly closing checklist (月次決算チェックリスト) - Executes up to 6 automated checks for a given month: unprocessed bank transactions, cash/deposit balance verification against walletables, temporary account (仮払金/仮受金/立替金) review, receivable aging, payable aging, and unattached receipts. Returns per-check status (ok/warning/error) with details and an overall assessment. Use after month-end to identify outstanding items before closing.

Inputs: year (required), month (required), companyId, checks.

freee_multiyear_comparisonA

Get multi-year comparison report (2 or 3 years) for P/L or BS using freee native multi-year trial balance APIs. Returns account-level data with current year, last year (and optionally two years before), plus pre-computed year-on-year changes and percentages. More accurate than manual period comparisons for annual growth analysis.

Inputs: fiscalYear (required), reportType (required), years (required), companyId, +2 more.

freee_partner_analysisA

Analyze revenue/expense by partner with concentration risk (取引先別収益分析) - Aggregates deals by partner to show: (1) top N partners by income/expense, (2) each partner's share percentage, (3) concentration risk (top 3/5 share), (4) monthly breakdown per partner. Use for customer profitability analysis and revenue concentration risk assessment.

Inputs: companyId, startDate, endDate, type, +2 more.

freee_search_dealsA

Search and aggregate all deals - Auto-paginates through all matching deals and returns pre-computed summaries by partner, month, and account item. Use this instead of manual pagination with freee_get_deals for financial analysis. Returns aggregated totals, not individual records.

Inputs: companyId, partnerId, accountItemId, startIssueDate, +2 more.

freee_segment_pnlA

Get profit and loss statement by department (section) or segment (1/2/3) - Retrieves per-division revenue, operating profit, and cost breakdown. Use dimension parameter to select section (部門) or segment_1/2/3. Essential for divisional profitability analysis and management reporting. Requires paid freee plan.

Inputs: fiscalYear (required), startMonth (required), endMonth (required), dimension (required), +1 more.

freee_set_company_tokenB

Manually set access token for a specific company

Inputs: companyId (required), accessToken (required), refreshToken (required), expiresIn (required).

freee_summarize_invoicesA

Summarize all invoices with payment status breakdown - Auto-paginates through all matching invoices and returns pre-computed summaries by status and partner. Shows total amounts, unpaid amounts, and overdue counts. Use this for AR tracking and cash flow analysis instead of manual pagination.

Inputs: companyId, partnerId, invoiceStatus, paymentStatus, +3 more.

freee_tagging_consistency_checkA

Check tagging consistency across deals (タグ付け一貫性チェック) - Analyzes deals to detect: (1) partners with inconsistent tag assignments, (2) deals missing tags, (3) deals missing section/segment assignments, (4) account items with deviating tag patterns. Use for bookkeeping quality assurance and ensuring consistent categorization. Returns partner-level tag patterns, segment gaps, and account-level deviations.

Inputs: companyId, startDate, endDate, maxRecords.

freee_update_dealA

Update an existing deal (transaction) - Modify issue date, type, or detail lines (amount, account item, tax code, description). Details array replaces all existing details. Use freee_get_deal first to review current state before updating.

Inputs: dealId (required), companyId, issueDate, type, +1 more.

Tool Schema Changelog

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

Loading tool schema changelog…

    TDQS

    B3.3/5.0

    Scored across 60 tools

    Disambiguation5/5

    Each tool has a clearly distinct purpose, covering specific accounting operations like deal management, invoice handling, financial analysis, and authentication. Descriptions are detailed and avoid ambiguity, even for similar tools like freee_get_profit_loss and freee_segment_pnl.

    Naming Consistency5/5

    All tools follow a consistent `freee_verb_noun` pattern using snake_case. Verbs like `get`, `create`, `update`, `approve` are uniformly applied, making the tool surface predictable and easy to navigate.

    Tool Count2/5

    With 60 tools, the server is overly large for the apparent scope of an accounting integration. While the domain is broad, this many tools can overwhelm an agent and increase latency, exceeding the recommended upper limit of 25 tools.

    Completeness3/5

    The tool set covers a wide range of accounting functions including CRUD for deals, invoices, manual journals, and expense applications, plus analytical reports. However, notable gaps exist, such as missing delete operations for deals and invoices, and lack of create/update for expense applications.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • -
      license
      Not graded
      quality
      Not graded
      maintenance
      Enables AI assistants to access and manage accounting data through the freee accounting API, supporting operations like transaction management, financial analysis, and account item management.
      547 npm
      1
      -
    • A
      license
      Not graded
      quality
      D
      maintenance
      Enables Claude to interact with freee accounting software through OAuth 2.0 authentication, supporting operations like transaction creation, account management, receipt uploads, and financial statement retrieval.
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Enables Claude Desktop to interact with freee accounting API for expense registration, transaction management, and receipt image processing.
      15
      1
      MIT
    • A
      license
      A
      quality
      C
      maintenance
      Enables individual proprietors and freelancers to manage daily accounting tasks like journal entries, invoice creation, and monthly reconciliation through simple tool calls, using freee's API.
      7
      14 npm
      MIT