Deterministic Japanese Parser MCP
The server exposes a single deterministic Japanese parser tool (analyze_japanese) that converts Japanese text into structured meaning, task, and safety representations.
Parse Japanese text into tokens, lexical candidates, entities, clauses, propositions, and predicate-argument structures.
Compute scope for negation, condition, modality, quotation attribution, and discourse relations.
Build a MeaningGraph (graph_version 2.3.0) with reading analysis, evidence, unresolved elements, and semantic hash.
Derive a TaskGraph with actions, targets, dependencies, constraints, and verification criteria from executable intent.
Return external-action safety via
execution_allowed, blocked reasons, ambiguities, missing information, and unsupported elements.Accept optional context: conversation history, known entities, protected elements, social context, and discourse state.
Support execution modes (
analysis,comparison,planning,external_action), analysis depths (auto,fast,deep), and deadline control.Run deterministically without LLM or runtime external dictionary APIs.
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., "@Deterministic Japanese Parser MCP障害の火消しをして、落ち着いてから穴を全部塞げ。最後にGitHubへ入れろ。"
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.
Deterministic Japanese Parser MCP
1. 概要
Deterministic Japanese Parser MCP(DJPMCP)は、日本語入力を生成AIや人間が判断する前段で、検証可能・再利用可能な構造へ変換する非AI・決定論的Parser / MCP Runtimeです。
目的は単純な辞書検索、Intent分類、命令検出、安全判定のどれか一つではありません。日本語が何を意味し、誰が何を何に対して述べ、何を要求・禁止・維持し、どの条件・例外・範囲・順序・依存が何へ作用するかを、後段AI/Astera/Agentが再読解・推測しなくても利用できる形へ構造化することです。
中心出力は MeaningGraph です。入力を単純なIntentラベルへ潰さず、語彙候補、Entity、Clause、Proposition、述語・項、係り関係、否定・条件・数量・モダリティ、引用帰属、照応、談話関係、語義候補、未解決要素などを保持します。命令・依頼などの実行候補がある場合は、その同じ意味解釈から TaskGraph と外部操作可否を導出します。
DJPMCPは次をしません。
RuntimeでLLMに意味を推測させる
根拠のない意味・主語・対象・因果を補う
Unknownを既知として扱う
曖昧な入力を無理に一意化する
Recovery結果だけを理由に外部操作を許可する
外部サービスそのものを操作する
曖昧なら曖昧、不足なら不足、未知なら未知として返し、判断材料を捏造しないことが設計の中心です。
Related MCP server: Project MCP
2. 最上位の製品条件
DJPMCPの最上位目的は、必要な完全読解結果を:
0.5秒以下で、LLM・生成AIによる推測に頼らず、決定論的に返すこと。
速度のために、以下を削ってはいけません。
読解精度
MeaningGraph
曖昧性保持
Reading Evidence
Fail Closed
External Action Safety
既存の target_latency_ms=10 や hard_deadline_ms=50 など、より厳しい値はHot-pathや局所Contractとして維持します。Recovery追加を理由に自動的に緩和しません。
Production Acceptanceでは、Hardware/CPU/RAM、warm/cold、入力長class、並列数、p50/p95/p99、MCP/HTTP境界、必要なPhase別Evidenceを明示します。p95だけを最上位0.5秒条件の代替にはしません。
3. 現在の実装と固定済みTarget Architectureを分けて読む
このRepositoryでは、現行実装と実装中の固定済みTarget Architectureを混同しません。
項目 | 状態 |
Package Version |
|
MCP Tool |
|
MCP Transport | stdio / Streamable HTTP |
Parser REST API |
|
Python API |
|
Python | 3.10以上 |
形態解析 | SudachiPy + SudachiDict Core |
Runtime LLM | 使用しない |
Runtime外部辞書API | 使用しない |
MeaningGraph |
|
TaskGraph / GraphGuard | 既存Coreとして再利用 |
Program License | MIT |
固定済みTarget Architecture
Original Authority
↓
Safe Normalize
↓
Sudachi Baseline
↓
Japanese-function Projection
↓
multi-lane Front Router
↓
必要IndexだけProgressive Retrieval
↓
Hard Constraint
↓
Soft Ranking
↓
Syntax / Sense Resolution
↓
必要時だけRecovery Zone
↓
bounded Candidate Lattice
↓
whole-sentence Top-K / Beam / Viterbi系Decode
↓
Margin / Evidence Gate
↓
Router再評価
↓
既存 MeaningGraph 2.3.0
↓
TaskGraph
↓
GraphGuardこのTargetの詳細正本は docs/PARSER_ARCHITECTURE.md です。
重要: 設計をRepositoryへ記載したことは実装完了の証拠ではありません。Target Architectureの各層は、Source・Test・Full Build/Audit・性能・Runtime readbackを個別に閉じて初めてPASSになります。
4. Architectureの最重要原則
Original is Authority
原文をAuthorityとして保持します。正規化・表記揺れ処理・誤字Recoveryが行われても、原文を上書きしません。
Evidence only
根拠がないものを補強して「もっともらしい意味」にしません。Sourceが意味を持たない補助Evidenceなら、そのEvidenceから語義を生成しません。
Ambiguity retention
候補が競合し、Evidence/Score marginが不足する場合は AMBIGUOUS / UNRESOLVED / INSUFFICIENT を維持します。新語や未知表現を自動的に誤字扱いしません。
Fail closed
execution_mode="external_action" では、安全に確定できない重要意味が残ると外部操作を止めます。RecoveryによりAction Predicate/Target/Intentが新しく成立した、または変化した場合も自動許可しません。
Source / rights / provenance separation
Source全体を一括で「利用可」とみなしません。意味・読み・用法・例文・Translation・Relation・Metric・Alias・Ranking Evidence・Provenance等はField-levelで由来と権利を管理するTargetです。
Runtime without LLM
候補生成、Routing、Lattice、Ranking、Safety Gateまで、Runtimeは非AI・決定論的に閉じます。
5. Canonical Dataと日本語機能別Projection
最新設計で対象とするCanonical processed setは 9,852,513 records です。
これを一つの巨大検索対象として毎回総当たりするのではなく、同じCanonical Authorityから日本語機能別のProjectionを構築します。
Primary lane:
Orthography/ReadingNoun-EntityPredicate-InflectionFunction WordsConnective-ModifierOnomatopoeiaMultiwordSyntax-Case-ClauseSense-Semantic RelationUsage-Context-PragmaticsDocument StructureEvidence-Provenance-Rights
Domain、translation、sentiment、temporal、frequency等はSecondary Facetです。Domain分類だけを主Routerにして意味解釈を決めません。
ProjectionはCanonical Recordの派生View/Indexであり、別の意味正本ではありません。
Buildでは少なくとも以下を固定・検証します。
Source Record identity
Canonical lineage
Projection assignment
Rejected / Unmapped accounting
Rights / Provenance
Deterministic Manifest / Hash
canonical_manifest_shaschema_versionprojection_policy_versionscoring_policy_version
互換しないBundle組合せは起動拒否し、Bundle切替はset単位でAtomic / Rollback可能にします。
6. Front multi-lane RouterとProgressive Retrieval
Front Routerは入力を見て、必要なLane・Facet・Indexを決定論的に選択します。
Routerの責務は意味を決めることではなく、何を検索すべきかを絞ることです。
単一Laneを早期に決め打ちせず、primary / secondary / fallback候補を保持します。
Router TraceのTarget:
detected input features
router_decisioncandidate_lanesselected_lanesskipped laneと理由
Secondary Facet
fallback_reasonRetrieval limit
Recovery候補の必要性
Router / Projection Version
exact=0 / OOV / segmentation suspicious / grammar conflict / syntax conflict 等ではFallbackまたはRecoveryへ昇格し、Recovery後はRouterを再評価します。
Progressive Retrievalは機能を削る仕組みではありません。必要なEvidenceから段階的に読み、解決できた時点で不要な深い検索を避ける仕組みです。
7. Purpose Routingの位置付け
Purpose Routingは残しますが、意味の正本にはしません。
Purpose / Source Roleが担当するもの:
Retrieval Hint
Role Mask
Consumer allow/deny
Permission境界
Provenance / Ranking / Evidence補助
Purpose Routingが担当しないもの:
最終意味の決定
Japanese-function Laneの代替
補助Evidenceからの語義生成
Field-level Rights Gateの迂回
Unknown Roleの暗黙許可
つまり、Purposeは「どの材料を誰が使えるか」の補助線であり、「この文はこの意味だ」と決めるAuthorityではありません。
8. Hard ConstraintとSoft Ranking
Hard Constraintは「候補として参加してよいか」、Soft Rankingは「参加可能な候補をどの順に評価するか」を担当します。
Hard Constraint例:
Source / Field Rights
Reading / POS不整合
Consumer Role禁止
Protected Element競合
Impossible Span / Segmentation
Provenance必須なのに欠落
External Action Safety
Soft Ranking例:
Exact Surface / Reading
Morphology
Segmentation / Connection
Syntax / Case / Clause
Sense / Context
Domain Facet
Source Quality / Evidence Strength
Recovery / Edit Cost
高ScoreでもHard Constraintを越えてはいけません。
9. 誤字・崩れ文・Noisy Input Recovery
誤字専用巨大DBは作らない
誤字の全組み合わせを事前登録する方式ではありません。また全文を常時Fuzzy化しません。
Target Recovery Flow:
Original Input
↓
Safe Normalization
↓
Exact / Normal Analysis
↓
未解決・OOV・異常分割・Grammar/Syntax ConflictのみRecovery Zone
↓
隣接境界を含むSpan候補
↓
Surface / Reading / Alias / Morphology / Split-Merge候補
↓
Deterministic Recovery Cost
↓
Bounded Candidate Lattice
↓
Whole-sentence Top-K / Beam / Viterbi系Decode
↓
Reading / POS / Segmentation / Syntax / Sense / Context / Facet / Evidenceで再評価
↓
Margin + Evidence Gate
├─ 十分 → Recovery採用 → Router再評価
└─ 不足 → AMBIGUOUS / UNRESOLVEDRecovery候補は、かな/カナ、濁点・半濁点、小書き、長音、送り仮名、縮約、文字挿入/削除/置換/転置、split/merge等の有限候補から生成し、Runtime Dataに実在するsurface/lemma/reading/aliasへ着地するものだけを昇格します。
beam width / max span / max candidates / max passes / recovery margin は推測値で永久固定せず、Golden / Noise / Latency Benchmarkで校正します。
Recoveryでは次を守ります。
原文を残す
Original SpanへEvidenceを紐づける
修正候補と採用理由を追跡できる
未知語を誤字と断定しない
Protected Elementを勝手に変えない
複数Meaningが成立しMargin不足なら曖昧を保持する
RecoveryでAction意味が新規成立・変化した場合はFail Closed
10. Existing MeaningGraph / TaskGraph / GraphGuard
Target Architectureは既存Coreを捨てません。
MeaningGraph 2.3.0
既存Coreは以下のような構造を保持します。
Entity
Clause
Proposition
Lexical Node
Scope Edge
Reading Analysis
Language Feature
Unresolved element
Decision state change
Evidence rule
Context version
Quality annotation
semantic_hash
Reading Analysis
主な構造:
predicate_framesdependency_arcsscope_operatorsattribution_framesdiscourse_relationsparagraph/document analysis
unresolved reading elements
TaskGraph
実行候補がある場合、意味解釈からTaskを構造化します。
Action
Target
Dependencies
Constraints
Completion criteria
Verification criteria
External-action flag
GraphGuard
External Action時の最終Semantic Safety境界です。
代表的Blocker:
対象未解決
重要Reference未解決
意味上重要なAmbiguity
Protected Elementとの衝突
Contradiction
Actionに影響するUnsupported要素
Deadline / Processing failure
Recoveryにより新規・変更されたAction意味がEvidence Gateを満たさない
RecoveryでAction Predicate/Target/Intentが新しく成立または変化した場合、RECOVERY_CHANGED_ACTION_SEMANTICS 相当でFail ClosedするTargetです。
Parserの execution_allowed は意味安全性判定であり、実システムの認可・承認そのものではありません。Provider/OS等の実Actionは呼出側の別Authorization / Approval境界を必須とします。
DJPMCP自身は外部サービスを変更しません。
11. semantic_hash互換性
現行 MeaningGraph は semantic_hash 自身を除くGraph内容をHash対象にしています。
そのため、MeaningGraphへDefault Fieldを追加しただけでも、既存入力のHashが変化する可能性があります。
Recovery / Interpretation Evidence、Router Trace、Field-level Evidence参照をGraphへ接続する前に、semantic_hash compatibility Gateを先に実装します。
許されるのは次のどちらかです。
既存Hash契約を変えずExtensionを保持できることをTestで証明する
Hash / Graph Version Migrationを明示的に設計・Test・Releaseする
意図しないHash driftは許可しません。
12. MCP Output Profile Target
MCPは同じSemantic Resultを用途別に運ぶため次のTransport Profileを持ちます。
McpAnalyzeRequest = AnalyzeRequest + transport-only output_profile
output_profile = compact | standard | full
Default = compactこれはCore AnalyzeRequest の意味入力ではなく、MCP Transport専用の設定です。
compact
Default。 Status、主要Reading / Proposition、重要Ambiguity / Missing、Action Safety、semantic_hash 等の軽量判断材料を返します。
内部MeaningGraphの完全性は削りません。
standard
Semantic Structure、Task、Reading Detail、Evidence関連情報を段階的に増やしつつ、最も重い転送DetailはSchema互換範囲で省きます。
full
既存の完全 AnalyzeResponse structured shapeを明示要求時に返します。
重要な互換条件
ProfileはParser意味解釈を変えない
Core
AnalyzeRequestへ混ぜないCache Identityを変えない
semantic_hashを変えないText SummaryはBackward Compatible
CacheにはFull Semantic Resultを保持しProfileごとの別Semantic Cacheを作らない
Profile最大Byte / Node / Candidate露出上限は実Context/Latency Benchmarkで決める
軽量化のために内部MeaningGraphを削らない
このREADME更新時点ではM0-1のTarget設計は固定済みですが、VPS Source/Runtimeへの実適用・targeted testは別Evidenceです。
13. 現行MCP / Python Interface
MCP Tool
analyze_japanese現行Core入力は AnalyzeRequest です。
Field | Required | Default | 内容 |
| Yes | — | 解析対象の日本語。空文字不可 |
| No |
| 会話文脈 |
| No |
| 既知Entity |
| No |
| 変更禁止対象 |
| No | empty | 話者・相手・社会文脈 |
| No |
| 呼出側が保持する談話状態 |
| No |
|
|
| No |
|
|
| No |
| 1–60,000ms |
M0-1ではMCP Transport側だけに output_profile を追加し、Core AnalyzeRequestへは渡しません。
Python API
from deterministic_japanese_parser_mcp import AnalyzeRequest, ParserEngine
response = ParserEngine().analyze(
AnalyzeRequest(
original_text="UIは維持する。APIだけ変更しろ。",
protected_elements=["UI"],
execution_mode="external_action",
deadline_ms=50,
)
)
print(response.meaning_graph)
print(response.task_graph)
print(response.execution_allowed)Python Core APIはMCP Output Profileに依存しません。
14. Public OSS / Self-host Quick Start
Linux / macOS
git clone https://github.com/seigo-gace/Deterministic-Japanese-Parser-MCP.git
cd Deterministic-Japanese-Parser-MCP
python -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
pip install -e .
djpmcp-validateWindows PowerShell
git clone https://github.com/seigo-gace/Deterministic-Japanese-Parser-MCP.git
cd Deterministic-Japanese-Parser-MCP
python -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install --upgrade pip
pip install -e .
djpmcp-validate開発用依存関係:
pip install -e ".[dev]"15. MCP stdio
Installed entrypoint:
djpmcpMCP Client例:
{
"mcpServers": {
"deterministic-japanese-parser": {
"command": "/absolute/path/Deterministic-Japanese-Parser-MCP/.venv/bin/djpmcp"
}
}
}Windows例:
C:\path\Deterministic-Japanese-Parser-MCP\.venv\Scripts\djpmcp.exeServing loopへ入る前にprewarmし、Sudachi lazy initialization、Schema、Rule Index、代表経路などをRuntime deadline外で準備します。
16. Streamable HTTP / REST
HTTP entrypoint:
djpmcp-httpAPI Key:
export DJPMCP_HTTP_API_KEY='replace-with-a-long-random-secret'
djpmcp-http既定:
Host: 127.0.0.1
Port: 8765
MCP endpoint: /mcp
Parser REST endpoint: /v1/analyze
Health: /healthz
Readiness: /readyz認証例:
Authorization: Bearer <DJPMCP_HTTP_API_KEY>または:
X-API-Key: <DJPMCP_HTTP_API_KEY>/healthz と /readyz 以外は認証対象です。
REST例:
curl -X POST http://127.0.0.1:8765/v1/analyze \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"original_text": "UIは維持する。APIだけ変更しろ。",
"protected_elements": ["UI"],
"execution_mode": "external_action",
"analysis_depth": "auto",
"deadline_ms": 50
}'Production境界は docs/PRODUCTION_HTTP_DEPLOYMENT.md を参照してください。
17. Canonical Data / Supply Chain
DJPMCPは、Raw Source、Canonical Data、Public View、Runtime Projection、Compiled Indexを同一物として扱いません。
概念上の流れ:
Frozen / Verified Source
↓
Source Adapter
↓
Schema / Provenance / Rights validation
↓
Review / Decision Ledger
↓
Canonical processed records
↓
Japanese-function Projection Compiler
↓
Runtime Bundles / IndexesTarget Architectureで使用するCanonical processed setは最新設計時点で 9,852,513 records です。
ただし、新Projection ArchitectureによるFull Build / All-record Auditは実行済みとは扱いません。
詳細:
18. Logical Runtime Bundles
Targetの初期Logical Bundle:
router_coregrammar_corelexical_semanticcontext_evidencerecovery_index
これは責務分割です。5 Bundle = 5 DBという意味ではありません。
物理DB/File数は以下で決めます。
build size
memory footprint
cold/warm latency
disk I/O
deploy atomicity
rollback
benchmark結果
19. Validation / Completion Gate
最終Architectureは次をEvidence付きで閉じるまで「完成」としません。
Contract
MCP output profile
semantic_hash compatibility
Router Trace
Recovery Interpretation Evidence
Field-level Rights / Provenance
Projection Manifest / Version compatibility
Data
9,852,513件 Full Build
All-record Audit
Input / Output / Rejected / Unresolved accounting
Rights / Provenance Audit
Deterministic rebuild / hash
Robustness
Clean Japanese
Noisy input
Typo
Broken / colloquial input
Segmentation ambiguity
Proper noun
Function word
Connective
Onomatopoeia
Multiword
Long text
Unknown / new expression
Router lane recall / false exclusion / OOV fallback
Recovery success
False-correction rate
Ambiguity retention
Recovery Action fail-closed
Field-rights integrity
MCP output size
Recovery latency
Clean GoldからSynthetic Noiseを決定論的に作り、Evidenceが十分ならClean/Noisyが同じMeaningへ収束し、解けない場合は正しく曖昧を保持することを確認します。Recovery成功率だけでPASSにせず、誤訂正率を必須指標にします。
Runtime
Targeted Tests
Existing MCP Boundary Tests
Existing Semantic Quality / Independent Holdout
Full Regression
Production-representative performance
Authorized deploy
Runtime readback
Process起動、HTTP 200、空配列、Build成功、Test runner終了、CI greenの一つだけではSemantic completionのPASSにしません。
20. 固定Implementation Order
M0-1 MCP compact / standard / full
↓
MCP targeted tests
↓
semantic_hash compatibility Gate
↓
Router Trace / Recovery Interpretation Evidence / Field-level Rights Contract
↓
Japanese-function Projection Compiler
↓
Front multi-lane Router
↓
Existing MeaningGraph接続
↓
Recovery Index / Lattice / Top-K
↓
Progressive Context / Evidence Retrieval
↓
9.85M Full Build / Audit
↓
Clean + Noisy + Typo + Broken Regression
↓
False-correction / Ambiguity-retention
↓
0.5秒以下の完全読解Performance Acceptance
↓
Full Regression
↓
Authorized Runtime readback途中工程のPASSから後段を推測でPASSにしません。
21. Target Architectureの現在Status
このREADME更新時点の境界です。
Area | Status |
MeaningGraph / TaskGraph / GraphGuard | 既存実装を再利用 |
MCP typed base | 既存実装を再利用 |
Semantic Quality / Holdout | 既存実装を再利用 |
Direct Final Manifest/Hash | 既存実装を再利用 |
Purpose Routing | PARTIAL |
MCP | DESIGN FIXED / SELF-TEST CANDIDATE PASS / VPS SOURCE+RUNTIME NOT YET VERIFIED |
semantic_hash compatibility Gate | NOT IMPLEMENTED |
Router Trace | NOT IMPLEMENTED |
Recovery Evidence / Index / Lattice / Top-K | NOT IMPLEMENTED |
Field-level Rights / Provenance Extension | NOT IMPLEMENTED |
Japanese-function Projection Compiler | NOT IMPLEMENTED |
Front multi-lane Router | NOT IMPLEMENTED |
Progressive Context Retrieval | NOT IMPLEMENTED |
9.85M Final Rebuild / Audit | NOT RUN |
Final Robustness | NOT RUN |
0.5秒以下 complete-reading Acceptance | NOT RUN |
Final Full Regression | NOT RUN |
Target Architecture Runtime Deploy | NOT DEPLOYED |
SELF-TEST CANDIDATE PASS はAssistant側でM0-1候補のContract/Projection/Cache identityを模擬検証した状態であり、VPS実Source TestやRuntime PASSを意味しません。
22. Public OSSとOfficial Hosted Service
Public OSS / Self-hostとAstera Hosted Commercial Serviceは、Parser Coreの機能を意図的に削る関係ではありません。
Public OSS
利用者がRepositoryを取得し、自分のPC / Server / Container / Private Network等で実行できます。
利用者側責務:
Infrastructure
Authentication
Monitoring
Scaling
Backup
Availability
Upgrade / Rollback
Astera Hosted Commercial Service
Project OwnerがDJPMCPをManaged Runtimeとして運用し、その外側にPlatform Control Planeを置く構成です。
flowchart LR
U[Customer / AsteraApp] --> G[Astera API Gateway]
G --> C[Auth / Metering / Credit / Billing / Rate Policy]
C --> P[DJPMCP Managed Runtime]
P --> M[MeaningGraph / TaskGraph]
M --> G
G --> UCommercial側の主責務:
Customer Account / Auth
API Credential Lifecycle
Authorization
Usage Metering
Credit / Quota
Billing / Plan
Rate limiting / Abuse protection
Tenant isolation
Monitoring
Version rollout / rollback
Support / Commercial Terms
Repositoryの POST /v1/analyze をそのままCustomer-facing有料APIとして固定しません。
詳細:
23. Documentation Map
最初に読むもの:
docs/PARSER_ARCHITECTURE.md— 固定済み総合Parser Architecture正本docs/README.md— Documentation Index
Parser / Data Contract:
Distribution / Operation:
docs/TGSERVER_ZERO_DEVELOPMENT_EVIDENCE.md— GitHub Development Probe / TGserver ZERO中央ReaderによるCHAT向けEvidence取得
24. License / Data / Brand Boundary
Program CodeのLicense、Third-party DataのSource License、Project Mark/Trademark、Hosted Service Termsは別の権利体系です。
Program Code:
LICENSEThird-party notice:
NOTICE.mdGovernance:
GOVERNANCE.mdTrademark:
TRADEMARK.md
Public Runtimeへ含められるDataかどうかは、Code Licenseだけでは決まりません。
25. Definition of Done
DJPMCPのTarget Architectureは、設計文書・Source・Test・Canonical Build/Audit・Robustness・Performance・Full Regression・許可されたRuntime readbackが一致したときだけ完成です。
それまでは各工程を PASS / FAIL / PARTIAL / BLOCKED / UNKNOWN / NOT_EXECUTED / NOT_VERIFIED と分けて管理し、未実施・未検証を完成扱いしません。
プロジェクトの管理方針と名称・ロゴの扱いはGOVERNANCE.mdとTRADEMARK.mdを参照してください。
Available Tools
1 toolanalyze_japaneseC
Deterministically read Japanese text and return lexical meaning, predicate-argument structure, negation/condition/modality scope, quotation attribution, discourse relations, a MeaningGraph, and downstream TaskGraph and external-action safety decisions.
| Name | Required | Description | Default |
|---|---|---|---|
| deadline_ms | No | ||
| original_text | Yes | ||
| analysis_depth | No | auto | |
| execution_mode | No | analysis | |
| known_entities | No | ||
| social_context | No | ||
| discourse_state | No | ||
| protected_elements | No | ||
| conversation_context | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| tasks | No | |
| tokens | No | |
| intents | No | |
| metrics | No | |
| timeouts | No | |
| versions | No | |
| metaphors | No | |
| references | No | |
| task_graph | No | |
| ambiguities | No | |
| analysis_path | Yes | |
| meaning_graph | No | |
| original_text | Yes | |
| contradictions | No | |
| overall_status | Yes | |
| blocked_reasons | No | |
| normalized_text | Yes | |
| execution_allowed | Yes | |
| missing_information | No | |
| unsupported_elements | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral burden. It does disclose that analysis is 'deterministic' and that execution_mode can trigger 'downstream TaskGraph and external-action safety decisions' — a meaningful safety-relevant trait. However, it says nothing about auth needs, latency implications of deadline_ms, failure modes, or what actually happens in external_action mode, so significant gaps remain.
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?
A single front-loaded sentence with no wasted words, but it degenerates into a long comma-separated list of outputs with no structure or prioritization. Adequate but not well-organized for a tool of this complexity.
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 explaining return values is unnecessary — yet the description spends every word on outputs and none on inputs. For a 9-parameter tool with nested objects and zero annotation coverage, the absence of any parameter or mode guidance leaves the agent under-equipped to 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% across 9 parameters including nested SocialContext and DiscourseState objects, so the description must compensate — and it adds no input-side meaning whatsoever. All of its content describes return artifacts, not parameters; the only semantic hints come from self-describing enum values (auto/fast/deep, analysis/comparison/planning/external_action) in the schema itself.
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 names a specific verb and resource ('read Japanese text') and enumerates the analytical artifacts returned: lexical meaning, predicate-argument structure, negation/condition/modality scope, quotation attribution, discourse relations, MeaningGraph, TaskGraph. It is far from a tautology, though it reads as an output inventory rather than a crisp statement of the tool's purpose, and the dense linguistics jargon requires domain knowledge to parse.
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 invoke this tool, when not to, or what to use instead. The existence of execution_mode values (analysis/comparison/planning/external_action) implies distinct usage contexts, but the description never routes the agent among them or states 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.
1 tool update
v0.1.1- Changed
analyze_japanese42 fields changed- added
Input schema / $defs / SocialContextAdded value: +{ + "properties": { + "addressee": { + "anyOf": [ + { + "$ref": "#/$defs/SocialParticipant" + }, + { + "type": "null" + } + ], + "default": null + }, + "addressee_group": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Addressee Group" + }, + "formality": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Formality" + }, + "mentioned_people": { + "items": { + "$ref": "#/$defs/SocialParticipant" + }, + "title": "Mentioned People", + "type": "array" + }, + "setting": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Setting" + }, + "speaker": { + "anyOf": [ + { + "$ref": "#/$defs/SocialParticipant" + }, + { + "type": "null" + } + ], + "default": null + }, + "speaker_group": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Speaker Group" + } + }, + "title": "SocialContext", + "type": "object" +} - added
Input schema / $defs / SocialParticipantAdded value: +{ + "properties": { + "entity_id": { + "title": "Entity Id", + "type": "string" + }, + "groups": { + "items": { + "type": "string" + }, + "title": "Groups", + "type": "array" + }, + "relation_to_addressee": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Relation To Addressee" + }, + "relation_to_speaker": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Relation To Speaker" + }, + "role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Role" + } + }, + "required": [ + "entity_id" + ], + "title": "SocialParticipant", + "type": "object" +} - changed
Input schema / properties / deadline_ms / defaultPrevious value: -2000New value: +50 - changed
Input schema / properties / deadline_ms / minimumPrevious value: -50New value: +1 - added
Input schema / properties / discourse_stateAdded value: +{ + "additionalProperties": true, + "title": "Discourse State", + "type": "object" +} - added
Input schema / properties / social_contextAdded value: +{ + "$ref": "#/$defs/SocialContext" +} - added
Output schema / $defs / ArgumentAdded value: +{ + "properties": { + "candidates": { + "items": { + "type": "string" + }, + "title": "Candidates", + "type": "array" + }, + "case_marker": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Case Marker" + }, + "entity_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Entity Id" + }, + "explicit": { + "default": true, + "title": "Explicit", + "type": "boolean" + }, + "role": { + "title": "Role", + "type": "string" + }, + "sense_candidates": { + "items": { + "$ref": "#/$defs/SenseCandidate" + }, + "title": "Sense Candidates", + "type": "array" + }, + "sense_confidence": { + "default": 0, + "maximum": 1, + "minimum": 0, + "title": "Sense Confidence", + "type": "number" + }, + "sense_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sense Id" + }, + "sense_label": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sense Label" + }, + "span": { + "anyOf": [ + { + "$ref": "#/$defs/OriginalSpan" + }, + { + "type": "null" + } + ], + "default": null + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "required": [ + "role", + "value" + ], + "title": "Argument", + "type": "object" +} - added
Output schema / $defs / ArgumentComponentAdded value: +{ + "properties": { + "clause_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Clause Id" + }, + "component_id": { + "title": "Component Id", + "type": "string" + }, + "component_type": { + "enum": [ + "claim", + "reason", + "evidence", + "explicit_premise", + "implicit_premise", + "counterargument", + "rebuttal", + "limitation" + ], + "title": "Component Type", + "type": "string" + }, + "confidence": { + "default": 1, + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "evidence_ids": { + "items": { + "type": "string" + }, + "title": "Evidence Ids", + "type": "array" + }, + "paragraph_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Paragraph Id" + }, + "related_component_ids": { + "items": { + "type": "string" + }, + "title": "Related Component Ids", + "type": "array" + }, + "source_span": { + "anyOf": [ + { + "$ref": "#/$defs/OriginalSpan" + }, + { + "type": "null" + } + ], + "default": null + }, + "status": { + "default": "DETERMINED", + "enum": [ + "DETERMINED", + "AMBIGUOUS" + ], + "title": "Status", + "type": "string" + }, + "text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Text" + } + }, + "required": [ + "component_id", + "component_type" + ], + "title": "ArgumentComponent", + "type": "object" +} - added
Output schema / $defs / ArgumentEdgeAdded value: +{ + "properties": { + "confidence": { + "default": 1, + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "edge_id": { + "title": "Edge Id", + "type": "string" + }, + "evidence_ids": { + "items": { + "type": "string" + }, + "title": "Evidence Ids", + "type": "array" + }, + "relation": { + "enum": [ + "supports", + "opposes", + "limits", + "conditions", + "rephrases" + ], + "title": "Relation", + "type": "string" + }, + "source_component_id": { + "title": "Source Component Id", + "type": "string" + }, + "status": { + "default": "DETERMINED", + "enum": [ + "DETERMINED", + "AMBIGUOUS" + ], + "title": "Status", + "type": "string" + }, + "target_component_id": { + "title": "Target Component Id", + "type": "string" + } + }, + "required": [ + "edge_id", + "source_component_id", + "target_component_id", + "relation" + ], + "title": "ArgumentEdge", + "type": "object" +} - added
Output schema / $defs / ArgumentationResultAdded value: +{ + "properties": { + "claims": { + "items": { + "$ref": "#/$defs/ArgumentComponent" + }, + "title": "Claims", + "type": "array" + }, + "confidence": { + "default": 0, + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "counterarguments": { + "items": { + "$ref": "#/$defs/ArgumentComponent" + }, + "title": "Counterarguments", + "type": "array" + }, + "edges": { + "items": { + "$ref": "#/$defs/ArgumentEdge" + }, + "title": "Edges", + "type": "array" + }, + "evidence": { + "items": { + "$ref": "#/$defs/ArgumentComponent" + }, + "title": "Evidence", + "type": "array" + }, + "explicit_premises": { + "items": { + "$ref": "#/$defs/ArgumentComponent" + }, + "title": "Explicit Premises", + "type": "array" + }, + "implicit_premise_candidates": { + "items": { + "$ref": "#/$defs/ArgumentComponent" + }, + "title": "Implicit Premise Candidates", + "type": "array" + }, + "limitations": { + "items": { + "$ref": "#/$defs/ArgumentComponent" + }, + "title": "Limitations", + "type": "array" + }, + "reasons": { + "items": { + "$ref": "#/$defs/ArgumentComponent" + }, + "title": "Reasons", + "type": "array" + }, + "rebuttals": { + "items": { + "$ref": "#/$defs/ArgumentComponent" + }, + "title": "Rebuttals", + "type": "array" + }, + "status": { + "default": "AMBIGUOUS", + "enum": [ + "DETERMINED", + "AMBIGUOUS" + ], + "title": "Status", + "type": "string" + }, + "unresolved": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Unresolved", + "type": "array" + } + }, + "title": "ArgumentationResult", + "type": "object" +} - added
Output schema / $defs / AttributionFrameAdded value: +{ + "properties": { + "attribution_id": { + "title": "Attribution Id", + "type": "string" + }, + "attribution_type": { + "title": "Attribution Type", + "type": "string" + }, + "clause_id": { + "title": "Clause Id", + "type": "string" + }, + "content_span": { + "$ref": "#/$defs/OriginalSpan" + }, + "related_frame_ids": { + "items": { + "type": "string" + }, + "title": "Related Frame Ids", + "type": "array" + }, + "reporting_predicate": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Reporting Predicate" + }, + "source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source" + }, + "source_span": { + "anyOf": [ + { + "$ref": "#/$defs/OriginalSpan" + }, + { + "type": "null" + } + ], + "default": null + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + } + }, + "required": [ + "attribution_id", + "clause_id", + "attribution_type", + "content_span" + ], + "title": "AttributionFrame", + "type": "object" +} - added
Output schema / $defs / ClauseAdded value: +{ + "properties": { + "clause_id": { + "title": "Clause Id", + "type": "string" + }, + "clause_type": { + "default": "main", + "title": "Clause Type", + "type": "string" + }, + "discourse_markers": { + "items": { + "type": "string" + }, + "title": "Discourse Markers", + "type": "array" + }, + "focus_entity_ids": { + "items": { + "type": "string" + }, + "title": "Focus Entity Ids", + "type": "array" + }, + "parent_clause_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Parent Clause Id" + }, + "proposition_ids": { + "items": { + "type": "string" + }, + "title": "Proposition Ids", + "type": "array" + }, + "relation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Relation" + }, + "source_span": { + "$ref": "#/$defs/OriginalSpan" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "text": { + "title": "Text", + "type": "string" + }, + "topic_entity_ids": { + "items": { + "type": "string" + }, + "title": "Topic Entity Ids", + "type": "array" + } + }, + "required": [ + "clause_id", + "text", + "source_span" + ], + "title": "Clause", + "type": "object" +} - added
Output schema / $defs / DecisionStateChangeAdded value: +{ + "properties": { + "change_type": { + "title": "Change Type", + "type": "string" + }, + "new_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "New State" + }, + "previous_state": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Previous State" + }, + "proposition_id": { + "title": "Proposition Id", + "type": "string" + }, + "target": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Target" + } + }, + "required": [ + "change_type", + "proposition_id" + ], + "title": "DecisionStateChange", + "type": "object" +} - added
Output schema / $defs / DependencyArcAdded value: +{ + "properties": { + "arc_id": { + "title": "Arc Id", + "type": "string" + }, + "clause_id": { + "title": "Clause Id", + "type": "string" + }, + "confidence": { + "default": 1, + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "dependent_token_index": { + "title": "Dependent Token Index", + "type": "integer" + }, + "head_token_index": { + "title": "Head Token Index", + "type": "integer" + }, + "marker": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Marker" + }, + "relation": { + "title": "Relation", + "type": "string" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + } + }, + "required": [ + "arc_id", + "clause_id", + "dependent_token_index", + "head_token_index", + "relation" + ], + "title": "DependencyArc", + "type": "object" +} - added
Output schema / $defs / DiscourseRelationAdded value: +{ + "properties": { + "confidence": { + "default": 1, + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "marker": { + "title": "Marker", + "type": "string" + }, + "relation": { + "title": "Relation", + "type": "string" + }, + "relation_id": { + "title": "Relation Id", + "type": "string" + }, + "source_clause_id": { + "title": "Source Clause Id", + "type": "string" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "target_clause_id": { + "title": "Target Clause Id", + "type": "string" + } + }, + "required": [ + "relation_id", + "source_clause_id", + "target_clause_id", + "relation", + "marker" + ], + "title": "DiscourseRelation", + "type": "object" +} - added
Output schema / $defs / EntityAdded value: +{ + "properties": { + "aliases": { + "items": { + "type": "string" + }, + "title": "Aliases", + "type": "array" + }, + "canonical": { + "title": "Canonical", + "type": "string" + }, + "entity_id": { + "title": "Entity Id", + "type": "string" + }, + "entity_type": { + "default": "unknown", + "title": "Entity Type", + "type": "string" + }, + "mentions": { + "items": { + "type": "string" + }, + "title": "Mentions", + "type": "array" + }, + "salience": { + "default": 0, + "title": "Salience", + "type": "integer" + }, + "source_spans": { + "items": { + "$ref": "#/$defs/OriginalSpan" + }, + "title": "Source Spans", + "type": "array" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + } + }, + "required": [ + "entity_id", + "canonical" + ], + "title": "Entity", + "type": "object" +} - added
Output schema / $defs / LanguageFeatureMatchAdded value: +{ + "properties": { + "candidate_ids": { + "items": { + "type": "string" + }, + "title": "Candidate Ids", + "type": "array" + }, + "entry_id": { + "title": "Entry Id", + "type": "string" + }, + "evidence_ids": { + "items": { + "type": "string" + }, + "title": "Evidence Ids", + "type": "array" + }, + "feature_type": { + "title": "Feature Type", + "type": "string" + }, + "interpretation": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Interpretation" + }, + "interpretation_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Interpretation Id" + }, + "parameters": { + "additionalProperties": true, + "title": "Parameters", + "type": "object" + }, + "register_profile": { + "additionalProperties": true, + "title": "Register Profile", + "type": "object" + }, + "risk_class": { + "default": "semantic", + "title": "Risk Class", + "type": "string" + }, + "source_span": { + "$ref": "#/$defs/OriginalSpan" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "surface": { + "title": "Surface", + "type": "string" + } + }, + "required": [ + "entry_id", + "feature_type", + "surface", + "source_span" + ], + "title": "LanguageFeatureMatch", + "type": "object" +} - added
Output schema / $defs / LexicalCandidateAdded value: +{ + "properties": { + "domains": { + "items": { + "type": "string" + }, + "title": "Domains", + "type": "array" + }, + "lemma": { + "title": "Lemma", + "type": "string" + }, + "match_type": { + "enum": [ + "surface", + "normalized", + "reading" + ], + "title": "Match Type", + "type": "string" + }, + "matched_text": { + "title": "Matched Text", + "type": "string" + }, + "no_kanji": { + "default": false, + "title": "No Kanji", + "type": "boolean" + }, + "part_of_speech": { + "items": { + "type": "string" + }, + "title": "Part Of Speech", + "type": "array" + }, + "readings": { + "items": { + "type": "string" + }, + "title": "Readings", + "type": "array" + }, + "record_id": { + "title": "Record Id", + "type": "string" + }, + "restricted_to": { + "items": { + "type": "string" + }, + "title": "Restricted To", + "type": "array" + }, + "source_dataset": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source Dataset" + }, + "source_license": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source License" + }, + "source_version": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source Version" + }, + "usage_labels": { + "items": { + "type": "string" + }, + "title": "Usage Labels", + "type": "array" + } + }, + "required": [ + "record_id", + "lemma", + "matched_text", + "match_type" + ], + "title": "LexicalCandidate", + "type": "object" +} - added
Output schema / $defs / LexicalNodeAdded value: +{ + "properties": { + "candidate_evidence": { + "additionalProperties": { + "items": { + "type": "string" + }, + "type": "array" + }, + "title": "Candidate Evidence", + "type": "object" + }, + "candidate_scores": { + "additionalProperties": { + "type": "integer" + }, + "title": "Candidate Scores", + "type": "object" + }, + "candidates": { + "items": { + "$ref": "#/$defs/LexicalCandidate" + }, + "title": "Candidates", + "type": "array" + }, + "lexical_node_id": { + "title": "Lexical Node Id", + "type": "string" + }, + "normalized": { + "title": "Normalized", + "type": "string" + }, + "pos": { + "items": { + "type": "string" + }, + "title": "Pos", + "type": "array" + }, + "reading": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Reading" + }, + "related_entity_ids": { + "items": { + "type": "string" + }, + "title": "Related Entity Ids", + "type": "array" + }, + "related_proposition_ids": { + "items": { + "type": "string" + }, + "title": "Related Proposition Ids", + "type": "array" + }, + "related_sense_ids": { + "items": { + "type": "string" + }, + "title": "Related Sense Ids", + "type": "array" + }, + "resolution_confidence": { + "default": 0, + "maximum": 1, + "minimum": 0, + "title": "Resolution Confidence", + "type": "number" + }, + "resolution_reason": { + "default": "no_candidates", + "title": "Resolution Reason", + "type": "string" + }, + "selected_record_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Selected Record Id" + }, + "source_span": { + "$ref": "#/$defs/OriginalSpan" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "AMBIGUOUS" + }, + "surface": { + "title": "Surface", + "type": "string" + } + }, + "required": [ + "lexical_node_id", + "surface", + "normalized", + "source_span" + ], + "title": "LexicalNode", + "type": "object" +} - added
Output schema / $defs / MeaningGraphAdded value: +{ + "properties": { + "clauses": { + "items": { + "$ref": "#/$defs/Clause" + }, + "title": "Clauses", + "type": "array" + }, + "context_version": { + "default": "", + "title": "Context Version", + "type": "string" + }, + "decision_state_changes": { + "items": { + "$ref": "#/$defs/DecisionStateChange" + }, + "title": "Decision State Changes", + "type": "array" + }, + "entities": { + "items": { + "$ref": "#/$defs/Entity" + }, + "title": "Entities", + "type": "array" + }, + "evidence_rule_ids": { + "items": { + "type": "string" + }, + "title": "Evidence Rule Ids", + "type": "array" + }, + "graph_version": { + "default": "2.3.0", + "title": "Graph Version", + "type": "string" + }, + "language_features": { + "items": { + "$ref": "#/$defs/LanguageFeatureMatch" + }, + "title": "Language Features", + "type": "array" + }, + "lexical_nodes": { + "items": { + "$ref": "#/$defs/LexicalNode" + }, + "title": "Lexical Nodes", + "type": "array" + }, + "propositions": { + "items": { + "$ref": "#/$defs/Proposition" + }, + "title": "Propositions", + "type": "array" + }, + "quality_annotations": { + "additionalProperties": true, + "title": "Quality Annotations", + "type": "object" + }, + "reading_analysis": { + "$ref": "#/$defs/ReadingAnalysis" + }, + "scope_edges": { + "items": { + "$ref": "#/$defs/ScopeEdge" + }, + "title": "Scope Edges", + "type": "array" + }, + "semantic_hash": { + "default": "", + "title": "Semantic Hash", + "type": "string" + }, + "unresolved": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Unresolved", + "type": "array" + } + }, + "title": "MeaningGraph", + "type": "object" +} - added
Output schema / $defs / ParagraphFrameAdded value: +{ + "properties": { + "clause_ids": { + "items": { + "type": "string" + }, + "title": "Clause Ids", + "type": "array" + }, + "confidence": { + "default": 1, + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "end_char": { + "title": "End Char", + "type": "integer" + }, + "paragraph_id": { + "title": "Paragraph Id", + "type": "string" + }, + "proposition_ids": { + "items": { + "type": "string" + }, + "title": "Proposition Ids", + "type": "array" + }, + "role": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Role" + }, + "sentence_spans": { + "items": { + "$ref": "#/$defs/OriginalSpan" + }, + "title": "Sentence Spans", + "type": "array" + }, + "source_span": { + "$ref": "#/$defs/OriginalSpan" + }, + "start_char": { + "title": "Start Char", + "type": "integer" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "text": { + "title": "Text", + "type": "string" + }, + "topic_sentence": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Topic Sentence" + }, + "topic_sentence_end": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Topic Sentence End" + }, + "topic_sentence_span": { + "anyOf": [ + { + "$ref": "#/$defs/OriginalSpan" + }, + { + "type": "null" + } + ], + "default": null + }, + "topic_sentence_start": { + "anyOf": [ + { + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Topic Sentence Start" + } + }, + "required": [ + "paragraph_id", + "text", + "start_char", + "end_char", + "source_span" + ], + "title": "ParagraphFrame", + "type": "object" +} - added
Output schema / $defs / ParagraphRelationAdded value: +{ + "properties": { + "confidence": { + "default": 1, + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "marker": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Marker" + }, + "relation": { + "title": "Relation", + "type": "string" + }, + "relation_id": { + "title": "Relation Id", + "type": "string" + }, + "source_paragraph_id": { + "title": "Source Paragraph Id", + "type": "string" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "target_paragraph_id": { + "title": "Target Paragraph Id", + "type": "string" + } + }, + "required": [ + "relation_id", + "source_paragraph_id", + "target_paragraph_id", + "relation" + ], + "title": "ParagraphRelation", + "type": "object" +} - added
Output schema / $defs / ParagraphStructureAdded value: +{ + "properties": { + "ambiguity_flag": { + "default": false, + "title": "Ambiguity Flag", + "type": "boolean" + }, + "boundary_method": { + "default": "explicit_blank_line", + "title": "Boundary Method", + "type": "string" + }, + "paragraphs": { + "items": { + "$ref": "#/$defs/ParagraphFrame" + }, + "title": "Paragraphs", + "type": "array" + }, + "relations": { + "items": { + "$ref": "#/$defs/ParagraphRelation" + }, + "title": "Relations", + "type": "array" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "unresolved": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Unresolved", + "type": "array" + } + }, + "title": "ParagraphStructure", + "type": "object" +} - added
Output schema / $defs / PredicateFrameAdded value: +{ + "properties": { + "arguments": { + "items": { + "$ref": "#/$defs/Argument" + }, + "title": "Arguments", + "type": "array" + }, + "aspect": { + "items": { + "type": "string" + }, + "title": "Aspect", + "type": "array" + }, + "clause_id": { + "title": "Clause Id", + "type": "string" + }, + "frame_id": { + "title": "Frame Id", + "type": "string" + }, + "modality": { + "items": { + "type": "string" + }, + "title": "Modality", + "type": "array" + }, + "polarity": { + "default": "positive", + "enum": [ + "positive", + "negative" + ], + "title": "Polarity", + "type": "string" + }, + "predicate": { + "title": "Predicate", + "type": "string" + }, + "predicate_token_index": { + "title": "Predicate Token Index", + "type": "integer" + }, + "related_proposition_ids": { + "items": { + "type": "string" + }, + "title": "Related Proposition Ids", + "type": "array" + }, + "source_span": { + "$ref": "#/$defs/OriginalSpan" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "surface_predicate": { + "title": "Surface Predicate", + "type": "string" + }, + "tense": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Tense" + }, + "voice": { + "items": { + "type": "string" + }, + "title": "Voice", + "type": "array" + } + }, + "required": [ + "frame_id", + "clause_id", + "predicate", + "surface_predicate", + "predicate_token_index", + "source_span" + ], + "title": "PredicateFrame", + "type": "object" +} - added
Output schema / $defs / PropositionAdded value: +{ + "properties": { + "arguments": { + "items": { + "$ref": "#/$defs/Argument" + }, + "title": "Arguments", + "type": "array" + }, + "aspect": { + "items": { + "type": "string" + }, + "title": "Aspect", + "type": "array" + }, + "captures": { + "additionalProperties": { + "type": "string" + }, + "title": "Captures", + "type": "object" + }, + "clause_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Clause Id" + }, + "deontic_force": { + "default": "none", + "enum": [ + "none", + "permission", + "obligation", + "prohibition" + ], + "title": "Deontic Force", + "type": "string" + }, + "directness": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Directness" + }, + "epistemic_status": { + "default": "asserted", + "title": "Epistemic Status", + "type": "string" + }, + "evidence_ids": { + "items": { + "type": "string" + }, + "title": "Evidence Ids", + "type": "array" + }, + "executable_candidate": { + "default": false, + "title": "Executable Candidate", + "type": "boolean" + }, + "force_level": { + "anyOf": [ + { + "maximum": 5, + "minimum": 1, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Force Level" + }, + "honorific_classes": { + "items": { + "type": "string" + }, + "title": "Honorific Classes", + "type": "array" + }, + "inference_sources": { + "items": { + "type": "string" + }, + "title": "Inference Sources", + "type": "array" + }, + "information_territory": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Information Territory" + }, + "intent_type": { + "title": "Intent Type", + "type": "string" + }, + "interaction_functions": { + "items": { + "type": "string" + }, + "title": "Interaction Functions", + "type": "array" + }, + "polarity": { + "default": "positive", + "enum": [ + "positive", + "negative" + ], + "title": "Polarity", + "type": "string" + }, + "politeness_level": { + "anyOf": [ + { + "maximum": 5, + "minimum": 0, + "type": "integer" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Politeness Level" + }, + "pragmatic_markers": { + "items": { + "type": "string" + }, + "title": "Pragmatic Markers", + "type": "array" + }, + "predicate": { + "title": "Predicate", + "type": "string" + }, + "proposition_id": { + "title": "Proposition Id", + "type": "string" + }, + "quote_source": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Quote Source" + }, + "quoted": { + "default": false, + "title": "Quoted", + "type": "boolean" + }, + "register_labels": { + "items": { + "type": "string" + }, + "title": "Register Labels", + "type": "array" + }, + "sense_candidates": { + "items": { + "$ref": "#/$defs/SenseCandidate" + }, + "title": "Sense Candidates", + "type": "array" + }, + "sense_confidence": { + "default": 0, + "maximum": 1, + "minimum": 0, + "title": "Sense Confidence", + "type": "number" + }, + "sense_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sense Id" + }, + "sense_label": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Sense Label" + }, + "sensory_features": { + "additionalProperties": true, + "title": "Sensory Features", + "type": "object" + }, + "sentence_mood": { + "default": "declarative", + "enum": [ + "declarative", + "interrogative", + "imperative" + ], + "title": "Sentence Mood", + "type": "string" + }, + "social_relation_status": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Social Relation Status" + }, + "source_span": { + "$ref": "#/$defs/OriginalSpan" + }, + "speaker_entity_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Speaker Entity Id" + }, + "speech_act": { + "default": "assertion", + "title": "Speech Act", + "type": "string" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "surface_predicate": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Surface Predicate" + }, + "tense": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Tense" + }, + "value": { + "title": "Value", + "type": "string" + }, + "voice": { + "items": { + "type": "string" + }, + "title": "Voice", + "type": "array" + } + }, + "required": [ + "proposition_id", + "predicate", + "intent_type", + "value", + "source_span" + ], + "title": "Proposition", + "type": "object" +} - added
Output schema / $defs / ReadingAnalysisAdded value: +{ + "properties": { + "analysis_version": { + "default": "1.0.0", + "title": "Analysis Version", + "type": "string" + }, + "argumentation": { + "anyOf": [ + { + "$ref": "#/$defs/ArgumentationResult" + }, + { + "type": "null" + } + ], + "default": null + }, + "attribution_frames": { + "items": { + "$ref": "#/$defs/AttributionFrame" + }, + "title": "Attribution Frames", + "type": "array" + }, + "dependency_arcs": { + "items": { + "$ref": "#/$defs/DependencyArc" + }, + "title": "Dependency Arcs", + "type": "array" + }, + "discourse_relations": { + "items": { + "$ref": "#/$defs/DiscourseRelation" + }, + "title": "Discourse Relations", + "type": "array" + }, + "paragraph_structure": { + "anyOf": [ + { + "$ref": "#/$defs/ParagraphStructure" + }, + { + "type": "null" + } + ], + "default": null + }, + "predicate_frames": { + "items": { + "$ref": "#/$defs/PredicateFrame" + }, + "title": "Predicate Frames", + "type": "array" + }, + "purpose": { + "const": "japanese_reading_comprehension", + "default": "japanese_reading_comprehension", + "title": "Purpose", + "type": "string" + }, + "scope_operators": { + "items": { + "$ref": "#/$defs/ScopeOperator" + }, + "title": "Scope Operators", + "type": "array" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "summary": { + "anyOf": [ + { + "$ref": "#/$defs/SummaryResult" + }, + { + "type": "null" + } + ], + "default": null + }, + "unresolved": { + "items": { + "additionalProperties": true, + "type": "object" + }, + "title": "Unresolved", + "type": "array" + } + }, + "title": "ReadingAnalysis", + "type": "object" +} - added
Output schema / $defs / ReferenceResolution / properties / candidate_scoresAdded value: +{ + "additionalProperties": { + "type": "integer" + }, + "title": "Candidate Scores", + "type": "object" +} - added
Output schema / $defs / ReferenceResolution / properties / resolution_reasonAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Resolution Reason" +} - added
Output schema / $defs / ScopeEdgeAdded value: +{ + "properties": { + "confidence": { + "default": 1, + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "edge_id": { + "title": "Edge Id", + "type": "string" + }, + "evidence_ids": { + "items": { + "type": "string" + }, + "title": "Evidence Ids", + "type": "array" + }, + "marker": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Marker" + }, + "relation": { + "title": "Relation", + "type": "string" + }, + "source_id": { + "title": "Source Id", + "type": "string" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "target_id": { + "title": "Target Id", + "type": "string" + } + }, + "required": [ + "edge_id", + "source_id", + "target_id", + "relation" + ], + "title": "ScopeEdge", + "type": "object" +} - added
Output schema / $defs / ScopeOperatorAdded value: +{ + "properties": { + "clause_id": { + "title": "Clause Id", + "type": "string" + }, + "marker": { + "title": "Marker", + "type": "string" + }, + "operand_spans": { + "items": { + "$ref": "#/$defs/OriginalSpan" + }, + "title": "Operand Spans", + "type": "array" + }, + "operator_id": { + "title": "Operator Id", + "type": "string" + }, + "operator_type": { + "title": "Operator Type", + "type": "string" + }, + "semantic_value": { + "title": "Semantic Value", + "type": "string" + }, + "source_span": { + "$ref": "#/$defs/OriginalSpan" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "target_frame_ids": { + "items": { + "type": "string" + }, + "title": "Target Frame Ids", + "type": "array" + } + }, + "required": [ + "operator_id", + "clause_id", + "operator_type", + "semantic_value", + "marker", + "source_span" + ], + "title": "ScopeOperator", + "type": "object" +} - added
Output schema / $defs / SenseCandidateAdded value: +{ + "properties": { + "evidence": { + "items": { + "type": "string" + }, + "title": "Evidence", + "type": "array" + }, + "label": { + "title": "Label", + "type": "string" + }, + "score": { + "title": "Score", + "type": "integer" + }, + "sense_id": { + "title": "Sense Id", + "type": "string" + } + }, + "required": [ + "sense_id", + "label", + "score" + ], + "title": "SenseCandidate", + "type": "object" +} - added
Output schema / $defs / SummaryResultAdded value: +{ + "description": "文章全体の要旨抽出結果。", + "properties": { + "candidates": { + "anyOf": [ + { + "items": { + "type": "string" + }, + "type": "array" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Candidates" + }, + "confidence": { + "default": 0, + "maximum": 1, + "minimum": 0, + "title": "Confidence", + "type": "number" + }, + "method": { + "default": "topic_sentence_aggregation", + "title": "Method", + "type": "string" + }, + "source_paragraph_indices": { + "items": { + "type": "integer" + }, + "title": "Source Paragraph Indices", + "type": "array" + }, + "status": { + "default": "AMBIGUOUS", + "enum": [ + "DETERMINED", + "AMBIGUOUS" + ], + "title": "Status", + "type": "string" + }, + "summary_text": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Summary Text" + } + }, + "title": "SummaryResult", + "type": "object" +} - added
Output schema / $defs / Task / properties / proposition_idAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Proposition Id" +} - added
Output schema / $defs / Task / properties / structured_constraintsAdded value: +{ + "items": { + "$ref": "#/$defs/TaskConstraint" + }, + "title": "Structured Constraints", + "type": "array" +} - added
Output schema / $defs / TaskConstraintAdded value: +{ + "properties": { + "constraint_type": { + "title": "Constraint Type", + "type": "string" + }, + "source_proposition_id": { + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Source Proposition Id" + }, + "source_span": { + "anyOf": [ + { + "$ref": "#/$defs/OriginalSpan" + }, + { + "type": "null" + } + ], + "default": null + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "value": { + "title": "Value", + "type": "string" + } + }, + "required": [ + "constraint_type", + "value" + ], + "title": "TaskConstraint", + "type": "object" +} - added
Output schema / $defs / TaskGraphAdded value: +{ + "properties": { + "constraints": { + "items": { + "$ref": "#/$defs/TaskConstraint" + }, + "title": "Constraints", + "type": "array" + }, + "edges": { + "items": { + "additionalProperties": { + "type": "string" + }, + "type": "object" + }, + "title": "Edges", + "type": "array" + }, + "graph_version": { + "default": "2.0.0", + "title": "Graph Version", + "type": "string" + }, + "status": { + "$ref": "#/$defs/ItemStatus", + "default": "RESOLVED" + }, + "tasks": { + "items": { + "$ref": "#/$defs/Task" + }, + "title": "Tasks", + "type": "array" + } + }, + "title": "TaskGraph", + "type": "object" +} - added
Output schema / $defs / Token / properties / lexical_candidate_totalAdded value: +{ + "default": 0, + "title": "Lexical Candidate Total", + "type": "integer" +} - added
Output schema / $defs / Token / properties / lexical_candidatesAdded value: +{ + "items": { + "$ref": "#/$defs/LexicalCandidate" + }, + "title": "Lexical Candidates", + "type": "array" +} - added
Output schema / $defs / Token / properties / lexical_statusAdded value: +{ + "default": "NO_MATCH", + "enum": [ + "MATCHED", + "AMBIGUOUS", + "NO_MATCH" + ], + "title": "Lexical Status", + "type": "string" +} - added
Output schema / $defs / Token / properties / readingAdded value: +{ + "anyOf": [ + { + "type": "string" + }, + { + "type": "null" + } + ], + "default": null, + "title": "Reading" +} - added
Output schema / properties / meaning_graphAdded value: +{ + "$ref": "#/$defs/MeaningGraph" +} - added
Output schema / properties / task_graphAdded value: +{ + "$ref": "#/$defs/TaskGraph" +}
1 tool update
v0.1.0- First observed
analyze_japanese
TDQS
Scored across 1 tool
Only one tool is exposed, so there is no overlapping purpose or selection ambiguity. Its purpose is clearly stated as deterministic Japanese text analysis.
The single tool name analyze_japanese follows a clear verb_noun snake_case convention. With only one tool, there are no deviations or competing conventions to assess.
One tool is borderline thin for a parser that claims to return lexical, syntactic, semantic, discourse, graph, and safety outputs. A single entry point can be reasonable, but the breadth suggests it could benefit from focused sub-tools.
The tool covers a broad parsing pipeline from lexical meaning through discourse relations and downstream task graphs. Minor gaps may exist for configuration, batch input, or custom dictionary handling, but the core parsing surface appears well covered.
Maintenance
Related MCP Connectors
Manual-review external execution in Japan for AI agents: human tasks, logistics, and verification.
- potto-japanOAuthapp.potto
Authoritative JLPT-graded Japanese dataset (kanji, vocab, grammar, history) via MCP and REST.
A Japanese shiritori (word-chain game) dictionary of 88,000+ nouns. Check whether a move is valid (including words ending in ん), suggest next words, and look up a word's reading — so an AI can play shiritori correctly.
Pickup orders at Japanese restaurants for AI agents: find stores, read menus, place orders. No auth.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables intelligent task management with status tracking, dependency resolution, and automatic next task discovery based on preconditions and priorities. Supports hierarchical task structures with subtasks and flexible JSON-based configuration.2ISC
- AlicenseAqualityBmaintenanceIntent-based project documentation server that automatically maps natural language queries to the right sources (plans, todos, roadmap, docs) and provides comprehensive task management with dependency tracking, backlog promotion, and archival workflows.4233 npm9MIT
- AlicenseAqualityAmaintenanceZero-dependency token optimizer, test-failure triage gate, and System 1.5 semantic guardrail for AI coding agents. Intercepts compiler errors, missing dependencies, and doom loops in < 500µs.641 PyPI12MIT
- AlicenseNot gradedqualityBmaintenanceEnables agents to break high-level business objectives into dependency-ordered sub-task graphs and then directly generate the finished deliverables, such as financial spreadsheets, executive presentations, and analytical reports. It runs as a zero-dependency Python MCP server over JSON-RPC stdio, adding deterministic authorization, role-boundary validation, and telemetry.7MIT