accord
This server helps you keep career records, positioning decisions, and résumé/profile drafts consistent while writing with AI.
Read current positioning –
get_positioningreturns the latest decision (headline package, scope, rationale, exceptions) and the associated package.Assemble writing material –
assemble_materialgathers the positioning, package, capabilities, public evidence, channel rules, and forbidden phrases for a given channel, while dropping non-public evidence and warning about it.Record a new positioning decision –
record_positioningappends a dated decision about which package to present, with required fields and optional exceptions.Register a capability –
register_capabilityadds a skill/offering with a category and evidence sections, rejecting invalid entries with next steps.Revise a package –
revise_packageupdates a package’s bundled capabilities, buyer, hypothesis state, and related metadata, advancing its updated date.Check consistency –
check_consistencyscans all source files and returns violations with the file, location, expected fix, and candidate corrections.Safe write behavior – write tools reject invalid input without modifying files and return the constraint, reason, missing fields, examples, and candidate valid values.
Read-only inspection – read and consistency-check tools never modify the underlying Markdown files.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@accordCheck consistency of my resume against my positioning"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
accord
accord は、職務経歴書やプロフィールを AI と一緒に作るときに、その元になる経歴の記録と、そこから作る文書とを食い違わせないための、手元で動く MCP サーバーです。
フリーランスの案件や転職に応募するとき、職務経歴書は 1 通あれば足りると思いがちです。しかし、エンジニアとして応募するときと、プロジェクトマネージャとして応募するときでは、同じ経歴でも前面に出す部分や並べ方が違います。accord は、今回はどの側面で経歴をまとめるかを日付つきで記録し、そこから作る文書に、経歴に無い実績や古い売り文句が混ざっていないかを、出す前に確かめます。よい職務経歴書を書くためのプロンプトやエージェントではありません。
English: One résumé rarely fits every application: applying as an engineer and applying as a project manager call for different parts of the same history, in a different order. accord is a local MCP server that keeps the underlying career record consistent while you build résumés and profiles with an AI. It is not a prompt or an agent for writing good résumés. It records which facet you are presenting now, and catches unsupported claims and stale pitches before they go out. Run it with
uv sync,uv run pytest,uv run accord --list. The rest of this document is written in Japanese.
何をする道具か
経歴の元データは、3 種類の Markdown に分けて持ちます。
何ができるか(スキルの一覧)
何をしてきたか(職歴や案件の実績)
どう売るか/どう見せるか(スキルをどう組み合わせて、誰向けに何を前面に出すか。この組み合わせを、この README ではパッケージと呼びます)
困るのは、売り込み方(いまどの側面を前面に出すか。ツール名では positioning)を変えたときです。「今月からプロジェクトマネージャの仕事を前面に出す」と決めても、その決定は会話の中で終わってどこにも残りません。結果として、パッケージの説明が 1 か月前のまま放置されたり、もう前面に出していないパッケージを名乗ったプロフィールが何枚も残ったりします。ルールとしては書いてあるのに、文章を書くその瞬間には思い出せません。
accord は、そのルールを「読んで覚えておくもの」から「書く瞬間に返ってくるもの」に変えます。文章そのものは書きません。書くのは人か AI で、accord がするのは材料を渡すことと、食い違いをその場で止めることです。使い方は 2 通りで、Claude などの AI から MCP 経由で呼ぶか、自分で Python から呼んで手元のファイルを検査します。
ツールの引数や戻り値に出てくる ID は、経歴の項目 1 つ 1 つに付ける短い名前です(詳しくは下の「データの型とルール」)。
ツール | 何をするか |
| いまの売り込み方(何を前面に出しているか)を返す。まだ記録が無ければ「先に記録してください」と返す |
| 媒体(転職サイトやマッチングサービス)向けの文章を書くための材料をまとめて返す。中身は、いまの売り込み方、前面に出すパッケージの説明、その根拠になる実績の本文、その媒体の書き方の決まり(文字数など)、使わないと決めた言い回し。公開できない実績は除き、除いたことを知らせる |
| 「今日から何を前面に出すか」を日付つきで記録する。必須の項目が欠けていれば、欠けた項目と書き方の例を返して書き込まない |
| できることの一覧に 1 行足す。ID が形式に合わないか既に使われているか、根拠にした実績や公開記録の ID が実在しなければ、近い候補を返して書き込まない。分類が設定に無い語のときも同じで、手で書いた行に設定に無い分類が残っていれば検査でも挙げる |
| 公開記録(登壇・記事・リポジトリなど、外から確かめられる成果物)を 1 件記録する。必須の項目が欠けていたり、ID が形式に合わないか既に使われていたり、種類や役割が設定に無い語だったり、元になった仕事の ID が実在しなければ、書き込まずに次の一手を返す |
| パッケージ(スキルの組み合わせ)の説明を更新し、更新日を進める。一覧に無いスキルの ID を組み合わせに入れると、近いものを候補として返して書き込まない |
| 全ファイルをルールに照らし、食い違いを「どのファイルのどこを、何に合わせるか」つきで一覧にする |
資源 | データの型とルールの定義を、AI が読める形で返す。AI がセッションの最初に読んで前提を揃えるためのもので、利用者が何かする必要はない |
書き込む 4 つのツールは、ルールに通った入力だけを書き、通らない入力は書かずに「次に何をすればよいか」を返します。読むだけのツールと検査は、ファイルを一切変えません。
Related MCP server: OpenFateAI Assistant MCP
動くとこうなる
同梱の架空のサンプルデータ(samples/)のプロフィール 1 枚を、わざと古いパッケージ名を名乗った状態にして検査を呼ぶと、次の 1 件が返ります。出力の文は正本のファイルで使う短い呼び名で書かれていて、「看板」は前面に出しているパッケージ、「束」はパッケージ、「提示物」はプロフィールなどの文章のことです。
{
"constraint": "提示物の宣言と看板の一致",
"file": "presentations/tsukikusa/profile.md",
"location": "「宣言する束」の行",
"expected": "いまの看板は「requirements-and-progress(要件定義と進行管理)」(2026-09-10 の決め・適用範囲 全体)で、この文面は「data-platform-setup(データの置き場づくり)」を名乗っている。宣言する束を看板の ID に書き換える。この文面だけ合わせない理由があるなら、決めの「例外」欄にこのファイル名と理由を書く。",
"candidates": ["requirements-and-progress"]
}書き込みを断るときも同じ形で、断った理由と、次に呼ぶ操作・欠けた項目・書き方の例が返ります。
Python から直接呼ぶなら次の形です。
from pathlib import Path
from accord.vocabulary.settings import load_settings
from accord.services.consistency import ConsistencyService
settings = load_settings(Path("samples/accord.toml"))
report = ConsistencyService(settings).inspect() # 範囲を省くと全体
for v in report.violations:
print(v.constraint, v.file, v.expected)動かしてみる
Python 3.12 以上と uv が必要です。架空の人物と架空の案件で作ったサンプルデータを同梱しているので、設定なしでそのまま動きます。
uv sync # 依存パッケージを入れる
uv run pytest # テストが通ることを確かめる
uv run accord --list # ツール 7 つと資源 1 つの名前を表示する引数なしで uv run accord を実行すると、標準入出力で MCP サーバーとして起動します。画面には何も出ませんが、それで正常です(AI 側からの接続を待っています)。ネットワークは使いません。
自分のデータで使う
samples/accord.toml をコピーして書き換え、起動時に指定します。設定ファイルに書くのは、Markdown の置き場と、自分の言葉(媒体の名前、スキルの分類、パッケージの状態を表す語。たとえば「仮説のみ・検証中・実績あり」)です。
起動のしかたは 2 通りあります。手元に置いた accord をそのまま動かすなら、次の形です。--project で指した場所のソースが毎回そのまま動くので、accord のコードを直したら次の起動から反映されます。手元で直しながら使うなら、こちらを選んでください。
uv run --project /path/to/accord accord --config /path/to/your/accord.toml版を固定して入れて使うなら、次の形です。
uvx --from /path/to/accord accord --config /path/to/your/accord.tomlこちらには落とし穴があります。uvx は指したパスから組み立てた環境を version(pyproject.toml に書いた版番号)で覚えるので、版を上げないかぎり、ソースを直しても前の版が動き続けます(--refresh や --reinstall を付けても戻りません)。
Claude Code から使うときは、プロジェクトの .mcp.json に次のように書きます。
{
"mcpServers": {
"accord": {
"command": "uv",
"args": ["run", "--project", "/path/to/accord", "accord", "--config", "/path/to/your/accord.toml"]
}
}
}Markdown の形はサンプルを見るのが早く、たとえば売り込み方の記録は次の形です。
## 2026-09-10 全体
- 日付: 2026-09-10
- 適用範囲: 全体
- 前面に出す束: requirements-and-progress
- 根拠: 直近 3 件の引き合いが、作る前の整理と、決まったことを進める役の不在に集中していたため。
- 例外: なし自分の Markdown の書き方がサンプルと違っていても、見出しの深さ、項目を箇条書きで書くか表で書くか、項目名の言い換え、を設定の [reading] の節で指定すれば、ファイルを書き換えずに読めます。指定できる範囲と書き方は samples/README.md にあります。
思ったとおりの結果が出ないときは、check_consistency の戻り値の先頭(provenance)を見てください。読んだ設定ファイルの場所、適用した読み方の指定、いま動いているソースの置き場と版が出るので、古いままの accord が動いていないかをその場で見分けられます。
データの型とルール
accord が扱うデータの種類(型)と、型どうしのつながり(関係)と、守らせる決まり(ルール)は、src/accord/ontology.yaml という 1 つのファイルにまとめて定めてあります。中身は、型 8 つ、関係 8 種類、ルール 16 つです。関係のうち「裏づけ」は指す先の型が 3 つ(職歴の枠と受託案件と公開記録)、「由来」は 2 つ(職歴の枠と受託案件)あるので、下の図では矢印 11 本になります。Python の型のコードはこのファイルから自動生成し、資源 accord://ontology はこのファイルの中身を返します。この節の説明と定義のファイルがずれていないことは、テストで確かめています。
flowchart TD
subgraph sell [どう売るか/どう見せるか]
Positioning["売り方の決め"]
Package["パッケージ"]
end
subgraph can [何ができるか]
Capability["機能"]
end
subgraph done [何をしてきたか]
CareerFrame["職歴の枠"]
Engagement["受託案件"]
PublicRecord["公開記録"]
end
subgraph out [外に出すもの]
Presentation["提示物"]
ResumeLedger["職務経歴書の台帳"]
end
Positioning -->|前面に出す| Package
Package -->|束ねる| Capability
Capability -->|裏づけ| CareerFrame
Capability -->|裏づけ| Engagement
Capability -->|裏づけ| PublicRecord
PublicRecord -->|由来| CareerFrame
PublicRecord -->|由来| Engagement
Presentation -->|宣言する| Package
Presentation -->|未反映の注記| Engagement
Presentation -->|載せる| PublicRecord
ResumeLedger -->|出典の節| Engagement四角が型、矢印が関係です(同じ図を画像にしたものが docs/ontology.svg にあります。上の図が描画されない環境ではそちらを見てください)。四角に書いた名前は、ツールの戻り値や検査の結果にそのまま出てきます。矢印は一方向で、逆向き、つまり職歴や案件の側に「これはあのパッケージで使っている」と書き足すことはしません(これがルール「逆参照を書かない」)。下の表の 3 列目は、同梱のサンプルデータで対応するファイルです。自分のデータで使うときは accord.toml の [source.files] でこの対応を自分のファイル名に置き換えます。
型(ツールの出力に出る名前) | 何のこと | サンプルのファイル |
売り方の決め | いま何を前面に出して売るかを、日付つきで 1 件ずつ書き足す記録。この README で「売り込み方」と呼んでいるものです。 |
|
パッケージ | 機能をいくつか組み合わせて、誰に売るかまで決めた売り物の単位。プロフィールや応募文が名乗るのは、この名前です。 |
|
機能 | 提供できる仕事 1 つ。この README で「スキル」「できること」と呼んでいるもので、「これができる」と言える根拠の節を必ず持ちます。 |
|
職歴の枠 | 会社 1 社ぶん、またはフリーランス 1 期ぶんの職歴。 |
|
受託案件 | クライアント 1 社ぶんの仕事、または複数の案件にまたがる 1 つの話題。職歴の枠と並ぶ、実績の側のファイルです。 |
|
公開記録 | 外から確かめられる公開の成果物 1 件。登壇・記事・書籍・リポジトリ・第三者の掲載など、本人の申告ではなく URL や現物で確かめられるものを、1 件ずつ書きます。このファイルだけは、設定に書かなくても accord は動きます。 |
|
提示物 | 転職サイトの画面や添付に貼る文面 1 枚。どのパッケージを名乗るかを本文に書きます。媒体ごとの下位ディレクトリに置きます。 |
|
職務経歴書の台帳 | 職務経歴書の元になる、案件 1 件ぶんのブロック。台帳全体は、このブロックの並びで持ちます。 |
|
項目どうしをつなぐのは ID です。職歴・案件・公開記録・機能・パッケージの 5 つには、- ID: teramina-delivery のように短い ID を 1 行書き、ほかの項目からこれらを指すときは、見出しや名前ではなく、この ID を書きます。ID は人が付けます(見出しから自動では作りません)。決まりは 2 つだけで、形は英小文字・数字・ハイフンで 3〜40 字、先頭と末尾は英数字(正規表現なら ^[a-z0-9][a-z0-9-]{1,38}[a-z0-9]$)。重なりは、5 つの種類をまたいで全部のファイルの中で 1 つの項目にしか付けられません。
1 つの欄に複数の ID を書くとき(機能の「裏づけの節」と、パッケージの「束ねる機能」)は、半角のスラッシュ「/」で区切ります。たとえば teramina-delivery / yukinoha-quality です。「・」や読点などほかの記号でつなぐと、つないだ全体が 1 つの値として読まれ、ID の形に合わないものとして拒否されます。この区切りは設定では変えられません。ID の欄のラベルだけは [reading.labels] で自分の正本の言い方に読み替えられます(同梱の第 2 のサンプル samples/source_alt/ は「識別子」と書いています)。
ルール 16 つは次のとおりです。1 列目の名前は、検査の結果や、書き込みを断ったときの戻り値にそのまま出ます。3 列目は、そのルールがどこで効くかです。
ルール(検査の出力に出る名前) | 見ているもの | どう現れるか |
決めの必須欄 | 売り方の決めに、日付・適用範囲・前面に出す束(前面に出すパッケージの ID)・根拠の 4 つの欄がそろっているか。 | 拒否(書き込まずに、欠けた欄の名前と書き方の例を返す) |
パッケージ定義の鮮度 | パッケージの定義を最後に直した日が、適用される決めの日付より古くないか。 | 検出(検査の一覧に出る。読むときは警告) |
提示物の宣言と看板の一致 | 提示物が名乗っているパッケージが、決めで前面に出しているパッケージと一致するか。決めの「例外」欄に書いた提示物は見ない。 | 検出(検査の一覧に出る。読むときは警告) |
ID の形式 | 職歴の枠・受託案件・公開記録・機能・パッケージの項目が自分に付ける ID が、決めた形(英小文字・数字・ハイフンで 3〜40 字、先頭と末尾は英数字)に合うか。ほかの項目を指す値(根拠・元になった仕事・写し元・未反映の事実)が形に合わないときは、その値を見るそれぞれのルールの名前で出る。 | 拒否(書き込まずに、形の直し方を返す) |
ID の一意性 | 職歴の枠・受託案件・公開記録・機能・パッケージの項目が自分に付ける ID が、全部のファイルの中で 2 つ以上の項目に付いていないか。形に合わない ID は、形を直すまで重なりを見ない。 | 拒否(書き込まずに、同じ ID を持つ場所の両方を返す) |
裏づけ節名の実在 | 機能の根拠として書いた ID が、職歴の枠か受託案件か公開記録に実在するか。 | 拒否(書き込まずに、実在する ID のうち近いものを候補として返す。どの節のことかは、断りの文が表示名を添えて示す) |
束ねる機能名の一致 | パッケージが組み合わせる機能の ID が、機能の一覧にあるか。 | 拒否(書き込まずに、近い機能の候補と、先に |
注記と出典の節の実在 | 提示物に書いた未反映の事実が指す ID と、職務経歴書の台帳の写し元の節の ID が、受託案件に実在するか。 | 検出(検査の一覧に出る。実在する受託案件の ID の候補を返す) |
出典と裏づけの節の公開可否 | 職務経歴書の台帳の写し元の節と、機能の根拠の節が、外に出してよい節か。未反映の事実が指す節は、文面の材料に写さないので見ない。 | 検出(検査の一覧に出る。外に出せない節は材料から落とし、落としたことを警告に書く。機能を登記したときも、外に出せない根拠の節を警告に書く) |
公開記録の必須欄 | 公開記録に、ID・名前・種類・日付・発行元か主催・役割の 6 つの欄がそろっているか。 | 拒否(書き込まずに、欠けた欄の名前と書き方の例を返す) |
公開記録の種類の語彙 | 公開記録の種類が、設定ファイルに書いた種類の語の一覧にあるか。 | 拒否(書き込まずに、設定が持つ種類の語の一覧を返す)。accord を通さずに手で書いた語が一覧に無いときは、検査でも挙げる |
公開記録の役割の語彙 | 公開記録の役割が、設定ファイルに書いた役割の語の一覧にあるか。 | 拒否(書き込まずに、設定が持つ役割の語の一覧を返す)。accord を通さずに手で書いた語が一覧に無いときは、検査でも挙げる |
機能の分類の語彙 | 機能の分類(機能の台帳の節の見出し)が、設定ファイルに書いた分類の語の一覧にあるか。 | 拒否(書き込まずに、設定が持つ分類の語の一覧を返す)。accord を通さずに手で書いた分類が一覧に無いときは、検査でも挙げる |
由来の節の実在 | 公開記録の元になった仕事として書いた ID が、職歴の枠か受託案件に実在するか。 | 拒否(書き込まずに、実在する ID のうち近いものを候補として返す。どの節のことかは、断りの文が表示名を添えて示す) |
提示物の URL と公開記録の一致 | 提示物の本文に貼った URL が、公開記録の一覧にあるか。同じ場所を指しているのに経路の書き方だけが違うものも見る。見るのは、公開記録と同じホストの URL だけ。 | 検出(検査の一覧に出る。ファイル名と、近い URL の候補を返す) |
逆参照を書かない | 図の下にあるもの(職歴の枠・受託案件)が、上にあるもの(パッケージ・売り方の決め)を指す書き方をしていないか。 | 構造(実行時ではなく書き方で守る。モジュールの分け方とファイルの書き方で守るので、検査の違反の一覧には出ない) |
設計の考えと作り方
なぜこの作りにしたのかは docs/decisions/(決め 1 件ごとの記録)、いまの構造は ARCHITECTURE.md にあります。accord は、作者 1 人と AI(Claude Code)で作りました。
外から見える振る舞いを 1 件 1 文で書いた要件は docs/specs/ にあり、書き方と番号の決めはその案内にまとめてあります。要件とテストと実装の目印が番号で結ばれているかは python3 tools/check_req_coverage.py で確かめられ、同じ検査が変更のたびに自動でも走ります。検査を黙らせる印(lint の注記やテストを飛ばす印など)を置いた行に決めの記録の番号があり、その記録の 1 行が行のファイルと印を並べて名指ししているかを見る python3 tools/check_bypass.py も、変更のたびに走ります。許す理由が妥当かどうかは、この検査では見ません。
ライセンス
MIT License。全文は LICENSE にあります。
Available Tools
6 toolsassemble_materialC
媒体向けの文面を書くための材料を取り出す。公開不可の節は落として警告に書く。
| Name | Required | Description | Default |
|---|---|---|---|
| channel | Yes | ||
| package | No | ||
| opportunity | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| channel | Yes | 宛先の媒体 |
| package | No | 看板のパッケージ |
| evidence | No | 各機能の裏づけの節(公開可のものだけ。見出しと本文) |
| warnings | No | 旧い束の宣言、未反映の注記、落とした節の名前 |
| positioning | No | 適用される決め |
| capabilities | No | 束ねる機能 |
| channel_rules | No | 媒体の規約 |
| forbidden_phrases | No | 禁じた言い回し |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and it does disclose a non-obvious behavior: sections that cannot be published are dropped and written to a warning. This is useful, but it does not state whether the operation is read-only, whether authentication or permissions are required, or any other side effects.
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 single efficient sentence that leads with the purpose and adds a behavioral detail. There is no filler or repetition, though the extreme brevity leaves several important aspects underspecified.
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?
An output schema exists, so return values need not be described, but the tool has 3 parameters with zero schema descriptions, no annotations, and no usage or parameter guidance. For a tool with a required channel parameter and optional package and opportunity parameters, the description is too thin for an agent to confidently select and invoke it correctly.
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 mention channel, package, or opportunity at all. The agent receives no help understanding what these parameters mean or how they should be populated, so the description fails to compensate for the empty schema 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 verb and resource: extracting material for writing media-facing copy. It also adds a specific behavior, dropping non-publishable sections and recording them as warnings, which helps distinguish it from siblings such as get_positioning or check_consistency. However, it does not explicitly name alternatives or contrast itself with 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?
The phrase '媒体向けの文面を書くための' implies the tool is for assembling material when preparing media-facing content. There is no explicit guidance about when not to use it, prerequisites, or which sibling tool to choose in other scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_consistencyA
正本を制約に当て、違反の一覧を直し先つきで返す。正本は変えない。
範囲は、省略か「全体」で正本全体、媒体の名前でその媒体、提示物のファイル名でその 1 件。 実在しない名前を渡したときは、拒否ではなく実在する範囲の一覧が返る。
| Name | Required | Description | Default |
|---|---|---|---|
| scope | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | No | 違反ではない断り |
| scope | No | 検査した範囲 |
| violations | No | 違反の一覧 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well: it states the master document is not modified ('正本は変えない') and that nonexistent names return a list of existing scopes rather than an error. This discloses important edge-case behavior and the read-only character of the operation. It could add more about error conditions or the meaning of '直し先', but the core behaviors are covered.
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 compact and front-loaded: the primary action and non-mutation guarantee come first, followed by a concise scope specification. Every sentence earns its place, and the edge-case behavior is included without bloat.
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 low complexity, one optional parameter, and the presence of an output schema, this description is complete enough for an agent to call the tool correctly. It covers the parameter semantics, the non-destructive nature, and the unusual invalid-name behavior. No critical information appears to be missing.
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 schema tells the agent almost nothing about the scope parameter: it is simply a nullable string with a default. The description compensates fully by defining the exact accepted values, what each value selects, and the behavior for invalid names. This is exactly the kind of semantic enrichment the dimension asks for.
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 operation: apply the master document to constraints and return a list of violations with fix targets, while explicitly noting the master is not changed. This is specific and informative, but it does not explicitly distinguish this tool from its siblings such as get_positioning or revise_package.
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 gives clear guidance on the scope parameter values: omitted or '全体' means the whole master, a medium name selects that medium, and a presentation file name selects that item. It also explains the behavior for nonexistent names. It does not explicitly mention when to prefer this tool over alternatives, but the input guidance is strong.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_positioningA
いまの決め(看板)を読む。媒体を省くと全体に適用される決めを返す。
| Name | Required | Description | Default |
|---|---|---|---|
| channel | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| package | No | 前面に出す束のパッケージ |
| warnings | No | 決めが未登記などの断り |
| positioning | No | 適用される最新の決め |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of disclosing behavior. It does convey that the operation reads current positioning and that channel omission changes the result to the full-scope decision. It does not explicitly state side-effect freedom, error behavior, or what the returned object contains, though the output schema may cover some of this.
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 one short Japanese sentence that immediately states the core action and then clarifies the optional-parameter behavior. It contains no filler, repeated information, or 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?
The tool is simple: one optional parameter and an output schema is present, so return-value explanation is not necessary. The description covers the primary behavior and the effect of omitting the parameter, which is the main uncertain point for an agent. It could be slightly stronger by explicitly noting the absence of side effects, but given the tool's simplicity it is largely 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?
The schema provides no parameter descriptions, and schema description coverage is 0%, so the description must compensate. It does add meaning by mapping the 'channel' parameter to a medium ('媒体') and explaining that omitting it returns the decision applied to the whole. However, it does not clarify what valid channel values look like or what '全体' concretely means, leaving some ambiguity.
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 uses a specific verb ('読む' / read) and a clear resource ('いまの決め(看板)' / current decision), so an agent can tell this is a retrieval operation. It also explains the behavior when the optional channel is omitted, which adds precision. It does not explicitly differentiate itself from sibling tools like record_positioning, but the read-vs-write intent is reasonably clear.
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 indicates that the tool reads current positioning and that omitting the channel scopes the request to the overall setting. However, it does not state when to choose this tool over siblings such as record_positioning or check_consistency, nor does it mention any exclusion conditions. Usage context is implied rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
record_positioningA
売り方の決めを 1 ブロック登記する。必須の欄が欠けていれば書かずに拒否する。
日付は 2026-09-16 の形で渡す。登記が通ると、その場でパッケージ定義の鮮度と、
旧い束を宣言する提示物の件数(ファイル名つき)が返る。
| Name | Required | Description | Default |
|---|---|---|---|
| scope | Yes | ||
| rationale | Yes | ||
| decided_on | Yes | ||
| exceptions | No | ||
| headline_package | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| accepted | Yes | 正本に書き込んだかどうか |
| recorded | No | 登記した内容(拒否のときは空) |
| warnings | No | 書き込みは通ったが、後で直したほうがよいこと |
| rejection | No | 受け付けなかった理由と次の一手(通ったときは None) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears full behavioral burden. It discloses rejection behavior on missing required fields, atomic 'one block' registration, required date format, and a concrete return payload (package definition freshness and count of presentations with filenames). It omits permissions/reversibility, but the core behavior is well covered.
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 short, front-loaded with the primary action, and each sentence adds a distinct piece: action, rejection condition, date format, and return value. No filler is present.
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?
Despite having 5 parameters (4 required) and no annotations, the description does not explain how to populate the main fields, nor does it clarify what qualifies as an exception. It covers the return behavior, which helps, but the calling contract 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 0%, so the description must compensate. It only addresses the date parameter ('2026-09-16' format); it gives no semantics for scope, headline_package, rationale, or exceptions. An agent would have to guess the meaning of headline_package and scope 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?
Description opens with a specific verb+resource: 'register the sales-positioning decision as one block' (売り方の決めを1ブロック登記する). This clearly distinguishes from siblings like get_positioning (retrieval) and register_capability (capability, not positioning). It also states a behavioral guard: refuse without writing if required fields are missing.
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 context—register a positioning decision—and gives a date format rule, but it never states when to prefer this over siblings or mentions alternatives. There are no exclusions or routing cues beyond the resource type, so an agent could still be uncertain between record_positioning and register_capability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_capabilityB
機能の台帳に 1 行足す。必須欄・分類・裏づけの節が通らなければ書かずに拒否し、次の一手を返す。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| category | Yes | ||
| description | Yes | ||
| evidence_sections | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| accepted | Yes | 正本に書き込んだかどうか |
| recorded | No | 登記した内容(拒否のときは空) |
| warnings | No | 書き込みは通ったが、後で直したほうがよいこと |
| rejection | No | 受け付けなかった理由と次の一手(通ったときは None) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the burden of behavioral disclosure. It usefully reveals that failed validation leads to a refusal without writing and a 'next move' response. It does not, however, disclose success-path behavior, permission requirements, or whether entries are modifiable later, leaving important 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 compact sentences, front-loaded with the core action, then the failure behavior and resulting response. Every phrase earns its place and there is no filler.
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?
Despite having an output schema, the definition leaves substantial gaps: no parameter semantics, no sibling differentiation, no guidance on what valid categories or evidence sections look like, and no success-path description. An agent would likely struggle to invoke this correctly without additional context.
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 only alludes to 'required fields, classification, and evidence sections' without defining the four parameters (name, description, category, evidence_sections) or their validation criteria. This partial mapping does not compensate for the absent schema-level documentation.
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 states a specific verb ('adds a row') and resource ('capability ledger'), and adds refusal behavior. It is clear, but it does not explicitly distinguish this tool from siblings such as record_positioning, so it does not reach a 5.
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 the use case (registering a capability entry) and gives a conditional rule: if required fields, classification, or evidence sections fail, refuse without writing and return the next move. However, it provides no explicit guidance on when to use this tool versus the sibling tools or when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
revise_packageB
パッケージ定義を改訂する。台帳に無い機能名を束ねようとすれば書かずに拒否する。
通ると、その節を書き換えて最終更新日を今日に進める。節が無ければ新しく足す。
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | ||
| basis | No | ||
| buyer | Yes | ||
| source | No | ||
| capabilities | Yes | ||
| hypothesis_state | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| accepted | Yes | 正本に書き込んだかどうか |
| recorded | No | 登記した内容(拒否のときは空) |
| warnings | No | 書き込みは通ったが、後で直したほうがよいこと |
| rejection | No | 受け付けなかった理由と次の一手(通ったときは None) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of explaining side effects. It does this well: it warns that the tool refuses without writing if capabilities are not in the ledger, and it details what happens when the revision passes—rewriting the section, updating the last-updated date, and adding a section if absent.
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 tight sentences with no filler. The main purpose is front-loaded, followed by the refusal condition and then the write behavior. Every sentence adds information.
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 tool with 6 parameters, 0% schema description coverage, and no annotations, the description is too thin. The behavioral details are useful, but the missing parameter meanings and lack of usage context leave an agent guessing about how to construct a valid call.
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%, so the description must compensate, but it only implicitly refers to capabilities ('台帳に無い機能名') and the package name. Parameters like basis, buyer, source, and hypothesis_state remain completely unexplained.
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 ('改訂する' / revise) and the resource ('パッケージ定義' / package definition). It stops short of explicitly distinguishing this from sibling tools, but the revision framing is specific enough to be understood.
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?
There is no guidance on when to use revise_package versus get_positioning, record_positioning, or register_capability. The description explains the tool's behavior but not the conditions under which an agent should select it.
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.
6 tool updates
v0.1.0- First observed
assemble_material - First observed
check_consistency - First observed
get_positioning - First observed
record_positioning - First observed
register_capability - First observed
revise_package
TDQS
Scored across 6 tools
Each tool targets a distinct resource and action: reading or recording positioning, assembling material, registering capabilities, revising packages, and checking consistency. There is no meaningful overlap, and the descriptions leave no ambiguity about which tool to select.
All tool names follow a consistent lowercase snake_case verb_noun pattern: get_positioning, record_positioning, assemble_material, register_capability, revise_package, check_consistency. The verbs clearly indicate the action, and the nouns identify the target resource.
Six tools is well within the ideal scope for a focused domain. Each tool addresses a distinct part of the workflow—reading/writing positioning, preparing material, managing capabilities, editing packages, and validating consistency—without unnecessary redundancy or bloat.
The core positioning, package revision, and consistency-checking workflows are well covered, and the register_capability tool includes guardrails with next-step guidance. However, there is no direct tool to read or update the capability ledger, and delete operations are absent, which creates minor gaps for maintenance scenarios.
Maintenance
Related MCP Connectors
MCP server for generating rough-draft project plans from natural-language prompts.
Guarded MCP server for agent-readable business truth, provenance, readiness, and discovery.
MCP server for OnceAsk, the AI-native current-address layer for people and agents.
MCP server for mandates, delegation, policy-gated execution, credential grants, and audit.
Related MCP Servers
- AlicenseAqualityDmaintenanceAn MCP server that records decisions, rejected alternatives, and justifications, and retrieves them later to avoid re-litigating past choices. It stores data locally in SQLite and Markdown.2Apache 2.0
- AlicenseAqualityDmaintenanceA local, open-source MCP server that provides deterministic organizational tools for structured decisions, guided reflection, action planning, and transparent digital report outlines without requiring an API key.642 npmMIT
- AlicenseBqualityBmaintenanceA local MCP server for managing engineering context across Components, Repos, Tasks, and Governance entities. It enables capturing reusable context and composing it per-task with typed relationships and cross-cutting guidelines.361MIT
- AlicenseAqualityBmaintenanceLocal MCP server that manages a job search using Markdown files, enabling skills tracking, gap analysis, and offer pipeline management via Claude.852 npmMIT