frame-check-mcp
Frame Check
文書が何を伝えていないかを確認します。
Frame Checkは、構造的フレーミング分析ツールです。文書がどのような視点を採用し、何を省略し、読者をどのように位置付けているかを明らかにします。数値的な主張については、情報源が存在する場合、信頼できるソースと照らし合わせてクロスチェックを行います。
クイックスタート (MCPサーバー)
PyPIパッケージ frame-check-mcp は、Model Context Protocolサーバーです。ローカルで実行され、MCP互換のAIクライアント(Claude Desktop、Cursor、Cline、Continue.devなど)に決定論的な構造的フレーミング分析をツールとして提供します。
pip install frame-check-mcp次に、インストールされたエントリポイントをMCPクライアントに指定します。Claude Desktopの場合は、claude_desktop_config.json に以下を追加します:
{
"mcpServers": {
"frame-check": {
"command": "frame-check-mcp"
}
}
}クライアントを再起動します。その後、会話の中で「この文書をframe-checkして」と入力してください。インストールと検証の詳細については MCP_SERVER.md を参照してください。
Related MCP server: Kluster.ai Verify MCP
機能
文書を渡すと、Frame Checkは以下を返します:
構造的フレーミングプロファイル:5つの分析的視点(原因、リスク、ステークホルダー、トレンド、不確実性)のうち、文書が何をカバーし、何を省略しているか、またそれぞれの密度。
声と認識的姿勢:文書が読者をどのように位置付けているか、また主張のどれだけが情報源に帰属しているか。
時間的指向:文書が結論の根拠を過去のデータ、現在の状況、予測のいずれに置いているか。
Frame Vocabulary Standard候補との一致:ルールベースのシグナルがテキストに反応する名前付きフレームパターン。それぞれに識別キューと具体例が含まれます。一致は候補レベルであり、マルチソースラベリングに対する精度は現在研究中の課題です。
ソースネットワーク検証:SEC EDGAR、FRED、世界銀行、REST Countries、Alpha Vantage、Wolfram Alphaなど、提供元がカバーしている範囲で数値的な主張をチェックします。
オプションのAIナラティブ:フレーミングを文章レベルで解釈します。読者が言語モデルの解釈と決定論的な測定を混同しないよう、明確にラベル付けされています。
アプローチ
構造的測定が基本です。ツールが行うすべてのフレーミングの主張は、決定論的なパターンマッチングから計算され、同じ入力に対しては常に同じ結果を返します。APIキーが設定されている場合は、AIによる解釈を補足として利用できますが、それらはラベル付けされ、構造的レイヤーの背後に隠されることはありません。
検証には制限があります。このツールは、その主張タイプに対して真のカバー範囲を持つプロバイダーに対してのみ数値的な主張を検証し、証拠なしに結論を断定するのではなく、独自のキャリブレーション結果(プロバイダーごとの精度、再現率、F1スコア)を表示します。
名前付きパターンの検出は、構造的プロファイルとは別の信頼性レイヤーです。事前登録された検証における専門家ラベラーに対する検出器のF1スコアは0.36であり、有用な閾値である0.4を下回っています。v0における重要な主張は、確信的なラベルではなく、構成の誠実さを表面化させること(未検出マーカー、密度の注意書き、信頼状態)に重点を置いています。読者支援研究(Track B、事前登録済み)では、この表面化が読者が本来見逃してしまうフレーミングを認識するのに役立つかどうかをテストしています。
誠実な限界と予想される対抗的な読み方は ANTICIPATED_CRITIQUES.md にカタログ化されています。
ドキュメント
METHODOLOGY.md— 完全な手法論文(v0.2ドラフト)MCP_SERVER.md— MCPサーバーリファレンス(ツール、リソース、プロンプト)MCP_CLIENT_CONFORMANCE_v1.md— インストールされたホイールに対する32/32の適合性ラウンドトリップFRAME_DIVERGENCE_v1.mdおよびFRAME_DIVERGENCE_v2.md— ダイバージェンスアーキテクチャdata/frame_library/— 具体例を含む20エントリーのFVSカタログANTICIPATED_CRITIQUES.md— 自己列挙された対抗的な読み方VALIDATION_PROGRAM.md— 観察的および形式的な検証計画
テストの実行
pip install -r requirements.txt
python3 run_tests.py49のテストスイート、約3分。test_mcp_adversarial.py に含まれる63の対抗的ディスパッチャーテストと、V4.2エンジンおよび分類器のカバー範囲を含みます。
ライセンス
コードはApache-2.0。FVSライブラリと具体例はCC-BY-4.0(ディレクトリごとの列挙については NOTICE を参照)。
引用
Frame Checkが業務に役立つ場合は、引用可能な形式について CITATION.cff を参照してください。Frame CheckはLovro Lucicによって作成されました。名前付きの著作者表記は、構成の誠実さの原則に基づいた、プロジェクトの主要な信頼性資産です。
貢献
CONTRIBUTING.md に基づくDCO(Developer Certificate of Origin)の署名が必要です。ガバナンスは GOVERNANCE.md に従います(カノン昇格の決定のための名前付き強制関数を備えたBDFLモデル)。外部レビュアーの関与については REVIEWERS.md を参照してください。
問題
Available Tools
2 toolsframe_checkA
Deterministic structural framing analysis. Returns analysis (measurements) + agent_guidance (composition discipline, scope-regime guidance, faithfulness rules) + provenance (versions, license, citation). When source_text is provided, also runs Layer 4 source_fidelity and Layer 11 grounding_decomposition with a Monte-Carlo-verified scope regime. When include_divergence=true (default at 0.8.0), the response carries a top-level divergence block sorted by signal_strength. The agent's role is to compose ONE insight grounded in the cited measurements (a reading the user could not see by reading their own document), not to walk the measurements one by one. The measurements are Frame Check's; the reading is the agent's. Cite measurements as Frame Check's; frame the reading as a reading ('the pattern reads as X'), never as a verdict ('the document is X'). Repeated calls with identical inputs return identical measurements; the agent's insight is a composition over them.
| Name | Required | Description | Default |
|---|---|---|---|
| document_text | Yes | The document to analyse. English. 300-10,000 words. Markdown accepted. This is the text whose framing you want named. | |
| source_text | No | Optional. The source material the document is supposed to ground in (research report, filing, primary source). Unlocks Layer 4 source_fidelity (digit-level match) and Layer 11 grounding_decomposition (sentence-level G/F/P) with a scope regime telling you which layer to trust on number-dense sources. Without this, only structural framing analysis runs. | |
| prefer_contract_version | No | Optional. Coverage contract version the client prefers. 1 (default): emit both v1 coverage and v2 coverage_v2 (Phase 1 compatibility window). 2: emit only coverage_v2 and omit v1 (for clients that have migrated and want to avoid payload duplication). See MCP_CONTRACT_V2_PROPOSAL.md and MCP_SERVER.md 'Contract versions' section. When Phase 3 activates, v1 will stop emitting regardless of this parameter. | |
| include_divergence | No | Optional. Frame divergence output per FRAME_DIVERGENCE_CONTRACT_v1 Part 2. When true (default at 0.8.0; was opt-in at 0.7.x), the response carries a top-level `divergence` block (absent_frames array sorted by signal_strength tier, FaithfulnessEnvelope with divergence_summary prose) and two `agent_guidance` additions (how_to_render_divergence, absence_is_not_prescription). MCP surface does not invoke any LLM for divergence; the caller's agent model completes the composition using the guidance + library resources. Set explicitly to false to receive the v0.7.x-shape response with no divergence block. Default: true. | |
| domain_hint | No | Optional. Hint about the document's domain used to filter absent frames for domain relevance. Only meaningful when include_divergence=true. If omitted, the envelope reports domain_inferred='unfiltered' and all absent frames are returned. Domain-metadata-based filtering is a future contract minor version; the current implementation echoes the hint to the envelope without field-level filtering (documented in envelope.limitations). | |
| divergence_rendering | No | Optional. How the caller wants absent-frame records decorated. Only affects AbsentFrameRecord decoration (teaching_question field present in 'teaching_questions' mode); all other modes return the same data. The caller's agent model renders per this preference with faithfulness guarantees from agent_guidance.how_to_render_divergence. Default: 'list'. | |
| catalog_version_pin | No | Optional. Pin the FVS catalog version used for absent-frame set difference. If omitted, the latest stable catalog version is used (currently library_v3 per commit 9abeb3d). Unsupported pins are coerced to library_v3 with a limitation note in envelope.limitations. | |
| user_context | No | Optional. The user's situation, role, or decision context in plain prose (e.g., 'I'm a startup founder making a hire decision in healthcare AI', 'reviewing a research paper on language model alignment', 'drafting a Substack post on agent safety'). When provided, agent_guidance.how_to_render_divergence is extended to instruct the caller's model to filter divergence relevance for this context. The MCP does NOT echo the value back into the response (privacy posture); the caller's agent has it from the call args. Discipline: the context personalizes RELEVANCE FILTERING; never PRESCRIPTION. The absence_is_not_prescription guarantee extends to contextual surfacing. Default: omitted (no contextual filtering). Maximum length 2000 chars. | |
| include_frame_opportunities | No | Optional. Opt-in flag for LLM-augmented frame-opportunity composition (Item 12 of the substrate-side composition roadmap). When true, divergence.frame_opportunities carries up to 3 document-specific questions composed by the LLM from absent-frame teaching questions plus the document's content. Each opportunity carries model_provenance with model name, cost_usd, and is_deterministic=false. The deterministic substrate (clusters, patterns, absences) is unchanged. Cost is bounded at ~0.001 USD per invocation (3 Gemini Flash calls max). Falls back to empty opportunities list with available=false if GEMINI_API_KEY is not set or the google.genai library is unavailable. Default: false (deterministic substrate only). | |
| user_goal | No | Optional. The user's stated goal for invoking Frame Check. One of 'decide', 'brainstorm', 'persuade', 'learn', 'audit'. When provided, absent_frames carry a goal_relevance dict for frames load-bearing for the chosen goal, and the absent_frames sort promotes goal-relevant entries within their signal_strength tier (goal precedes genre in the within-tier ranking). 'audit' is the default-equivalent posture: no goal-specific override is applied; the existing catalog/coverage/genre ranking stands. When omitted, behavior matches 'audit'. Substrate-side composition Item 11. | |
| compose_budget | No | Optional. Bound the substrate's output volume so an agent in a tight working-memory budget can request a compact reading without losing structural shape. 'minimal' = top-3 absent_frames, top-1 absence_cluster, top-1 frame_pattern. 'standard' = top-5 absent_frames, all clusters, all patterns. 'full' (default) = unfiltered. The envelope.tier_counts always reflects PRE-slice counts so the agent sees the truncation honestly; divergence.compose_budget_applied carries per-layer returned/total counts. Substrate-side composition L5 interface UX. Backwards-compatible: omit to preserve current behavior. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden and excels: it declares determinism, output structure, agent's role, and limitations (e.g., 'The measurements are Frame Check's; the reading is the agent's'). No contradictions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with purpose but becomes verbose with detailed instructions and repeated guidance. While well-structured, it could be trimmed by ~30% without losing meaning.
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 complexity (11 params, no output schema), the description covers response components and behavioral nuances well. Missing explicit field-level structure of divergence block, but agent_guidance hints at rendering instructions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by explaining defaults, version behavior, and interaction between parameters (e.g., domain_hint only meaningful when include_divergence=true). This exceeds the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Deterministic structural framing analysis' and lists output components (measurements, agent_guidance, provenance). It explicitly distinguishes from sibling 'frame_compare' by focusing on single-document analysis.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on when to use source_text (for layers 4 & 11), when include_divergence is default, and agent role. However, it does not explicitly exclude use cases or contrast with frame_compare, so it lacks explicit when-not advice.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
frame_compareA
Deterministic structural comparison of two documents on the same subject. Returns analysis (per-document summaries plus the cross-document comparison: shared blind spots, unique coverage gaps, voice / temporal / epistemic deltas, and a structured framing-differences narrative with per-dimension reader implications) + agent_guidance (what comparison tells and does not tell you, how to cite without implying a ranking) + provenance. Repeated calls with identical inputs return identical results. No LLM is invoked.
| Name | Required | Description | Default |
|---|---|---|---|
| document_a_text | Yes | The first document to compare. English. 300-10,000 words. | |
| document_b_text | Yes | The second document to compare. English. 300-10,000 words. Should be on the same subject as document_a_text for the comparison to be meaningful. | |
| document_a_label | No | Optional short label for document A (e.g. 'Industry view' or 'Gemini response'). Used in the comparison narrative. Defaults to 'Document A'. | |
| document_b_label | No | Optional short label for document B. Defaults to 'Document B'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the tool is deterministic, returns identical results for identical inputs, and does not invoke an LLM. It also explains what the output includes (analysis, agent_guidance, provenance), providing transparency beyond basic behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured, starting with the core purpose, then listing outputs, and finally additional traits (deterministic, no LLM). It is slightly long but each sentence adds value, and it front-loads the most important 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?
Given no output schema, the description thoroughly explains what the tool returns (analysis, agent_guidance, provenance). It covers parameter constraints (word count, language, same subject) and behavioral traits. The context is complete for an agent to understand when and how to use the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so baseline is 3. The description adds meaningful context: documents must be English, 300-10000 words, and on the same subject. It also clarifies that labels are optional and used in the narrative, which goes beyond the 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 tool does 'deterministic structural comparison of two documents on the same subject' and lists specific outputs (per-document summaries, cross-document comparison, etc.). It uses a specific verb ('compare') and resource ('two documents'), distinguishing it from the sibling tool 'frame_check'.
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 when to use (documents on same subject, deterministic comparison) but does not explicitly state when not to use or compare with alternatives. It notes that repeated calls return identical results and that no LLM is invoked, but lacks direct guidance on choosing this over the sibling tool.
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.
2 tool updates
v0.1.0- First observed
frame_check - First observed
frame_compare
TDQS
Scored across 2 tools
The two tools have clearly distinct purposes: one analyzes a single document, the other compares two documents. There is no ambiguity.
Both tools follow the consistent 'frame_<verb>' pattern (frame_check, frame_compare). The naming is predictable and uniform.
With only two tools, the server feels minimal. While the tools are well-scoped, a server for structural analysis might benefit from additional tools for tasks like batch comparison or result export.
The server covers the two core operations (single analysis and pairwise comparison). Minor gaps exist, such as lacking a tool for multi-document analysis or aggregation, but the main use cases are addressed.
Maintenance
Related MCP Connectors
Verify claims with verdict, confidence & cited sources; batch verify, source checks, daily brief.
Verify AI outputs against real sources. Returns a trust signal and permanent doc number.
Fact-checks generated content against your sources of truth showing what to trust, change, & verify.
AI document intelligence: extract, summarize, claim-check, notarize, and signed action receipts.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables analysis of claims, validation of sources, and detection of manipulation using multiple epistemological frameworks to ensure credible and ethical information.323MIT

Kluster.ai Verify MCPofficial
AlicenseNot gradedqualityNot gradedmaintenanceEnables fact-checking of AI responses against reliable sources and validation of responses against document content to ensure accuracy and reliability.-- AlicenseBqualityDmaintenanceEnables working with large documents of any size by intelligently segmenting them and using TF-IDF search to retrieve only relevant fragments, preventing context window saturation. Provides 31 domain-agnostic tools for document ingestion, semantic analysis, epistemological validation, and extraction verification across formats like PDF, EPUB, and HTML.31MIT
- AlicenseBqualityCmaintenanceEnables revision-bound source audits with exact article fingerprinting, claim-to-source mapping, quotation verification, and immutable JSON evidence reports for prepublication review.9MIT