Skip to main content
Glama
knorq-ai

moneyforward-connector

by knorq-ai

mf_accounting_create_journal

Creates journal entries in MoneyForward Cloud Accounting. Supports dry-run to preview the request body without posting, and validates that debits and credits balance per branch.

Instructions

会計仕訳を新規作成する(POST /api/v3/journals)。dry_run=true の場合は API を呼ばず、組み立てたリクエストボディを JSON で返す。冪等性キー(memo の決定的キー、tags=mf-mcp:auto 等)は呼び出し側で組み立てて memo / tags に渡すこと。事前に各 branch の借貸合計が一致することを検証する。

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
memoNoメモ(冪等性キーを埋める場合はここ)
tagsNoタグ配列(例: ["mf-mcp:auto", "monthly"])
dry_runNotrue なら API を呼ばず、組み立てたリクエストボディを返す
branchesYes借貸ペアの配列(複合仕訳可、最低 1 件)
journal_typeNo仕訳区分。期末調整のみ adjusting_entryjournal_entry
transaction_dateYes取引日(YYYY-MM-DD)

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.2.0

TDQS

A4.1/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 full behavioral burden and does well: it discloses that dry_run=true skips the API call and returns the assembled request body, that idempotency keys must be built caller-side, and that debit/credit totals per branch are validated beforehand. It does not cover authentication requirements, error behavior, 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.

Conciseness4/5

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

Four tight sentences, front-loaded with the main action and endpoint, then dry_run behavior, then the idempotency convention, then the validation note. No wasted text, though the density makes it slightly terse.

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 complex mutation tool with no annotations and no output schema, the description covers the key behavioral facts: API endpoint, dry_run semantics, idempotency responsibility, and pre-validation. It stops short of describing auth/token requirements or what a successful response looks like, which would be needed for full completeness.

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?

Schema description coverage is 100%, so the schema already documents every parameter thoroughly; baseline is 3. The description adds genuine value by explaining the intended use of memo and tags for idempotency keys, which is semantic guidance beyond the schema's field descriptions.

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 and resource (会計仕訳を新規作成する = create a new accounting journal) and even names the underlying endpoint (POST /api/v3/journals). This distinguishes it clearly from siblings like mf_accounting_update_journal and mf_accounting_list_journals.

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?

Usage context is implied through the dry_run behavior and the instruction to construct idempotency keys caller-side, but it does not explicitly say when to use this tool versus mf_accounting_update_journal or how it fits into a workflow. No explicit when-not guidance is provided.

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