Skip to main content
Glama
lluvr

frame-check-mcp

by lluvr

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"
    }
  }
}

클라이언트를 재시작하십시오. 그 후 대화 중에 "이 문서를 프레임 체크해 줄래?"라고 요청하세요. 전체 설치 및 검증 세부 정보는 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.py

49개 테스트 스위트, 약 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 서명이 필요합니다. 거버넌스는 GOVERNANCE.md를 따릅니다(표준 승인 결정을 위한 명명된 강제 기능을 갖춘 BDFL 모델). 외부 검토자 참여는 REVIEWERS.md를 참조하십시오.

이슈

https://github.com/lluvr/frame-check-mcp/issues

Available Tools

2 tools
frame_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.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_textYesThe document to analyse. English. 300-10,000 words. Markdown accepted. This is the text whose framing you want named.
source_textNoOptional. 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_versionNoOptional. 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_divergenceNoOptional. 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_hintNoOptional. 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_renderingNoOptional. 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_pinNoOptional. 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_contextNoOptional. 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_opportunitiesNoOptional. 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_goalNoOptional. 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_budgetNoOptional. 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

A4.4/5.0
Behavior5/5

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.

Conciseness3/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_a_textYesThe first document to compare. English. 300-10,000 words.
document_b_textYesThe 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_labelNoOptional short label for document A (e.g. 'Industry view' or 'Gemini response'). Used in the comparison narrative. Defaults to 'Document A'.
document_b_labelNoOptional short label for document B. Defaults to 'Document B'.

TDQS

A4.2/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness5/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines3/5

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.

  1. 2 tool updatesv0.1.0
    • First observedframe_check
    • First observedframe_compare

TDQS

A4.3/5.0

Scored across 2 tools

Disambiguation5/5

The two tools have clearly distinct purposes: one analyzes a single document, the other compares two documents. There is no ambiguity.

Naming Consistency5/5

Both tools follow the consistent 'frame_<verb>' pattern (frame_check, frame_compare). The naming is predictable and uniform.

Tool Count3/5

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.

Completeness4/5

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

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    31
    MIT
  • A
    license
    B
    quality
    C
    maintenance
    Enables revision-bound source audits with exact article fingerprinting, claim-to-source mapping, quotation verification, and immutable JSON evidence reports for prepublication review.
    9
    MIT