Skip to main content
Glama

Contradiction MCP

Autonomous Cross-Source Inconsistency & Contradiction Intelligence Engine for AI Agents

CI Pipeline License: MIT Node.js Version TypeScript MCP Specification Vitest Tests Security Audit Code Style


NOTE

Project Status: Active Development (v0.2.0)

Contradiction MCP is currently under active development. Core multi-format document ingestion (Markdown, RFC822 .eml, OpenXML .docx, and JSON) and cross-document contradiction discovery are operational and verified. Heuristic classifiers, deep JSON scoping, and public APIs are actively evolving prior to v1.0.0.


The Problem It Solves

Modern engineering ecosystems rely on fragmented, uncoordinated sources of truth:

  • Code Repositories: package.json, Dockerfile, CI/CD workflows (.github/workflows/*.yml)

  • Deployment Manifests: Kubernetes YAML, Helm values, cloud environment configurations

  • Technical Documentation: Architecture guides, runbooks, developer setup portals, READMEs

  • Public Endpoints: OpenAPI/Swagger schemas, status feeds, live web documentation

When these systems diverge—for example, a Kubernetes manifest deploying Node.js 22 while technical documentation instructs developers to run Node.js 18, or conflicting database engine versions across staging and production—silent regressions, deploy failures, and hallucinations in LLM reasoning occur.

Contradiction MCP bridges these silos through automated multi-source ingestion, context-aware contradiction reasoning, source authority and freshness scoring, human-in-the-loop review/resolution workflows, and immutable audit trails.


Related MCP server: SpecLock

Core Capabilities

  • Zero Mocks: Real embedded SQLite with Write-Ahead Logging (WAL), real filesystem I/O with directory containment guards, and real HTTP fetchers with pre-flight DNS validation.

  • Context-Aware Contradiction Engine: Eliminates false positives by understanding semantic contexts:

    • Environments: production vs staging vs development

    • Scopes: file vs deployment vs cluster

    • Roles: source_of_truth vs deployment vs documentation

  • Deterministic SemVer Mathematics: Employs rigorous version range satisfaction algebra rather than naive string comparisons.

  • Multi-Source Ingestion Pipeline:

    • GitHub Connector: Analyzes runtime engines, Dockerfiles, GitHub Actions workflows, and READMEs.

    • Document Connector: Extracts structured claims from JSON, YAML, Markdown, CSV, TXT, RFC822 (.eml), and OpenXML (.docx) documents with exact page- and line-numbered evidence citations.

    • Public Website Connector: Web crawler hardened with multi-layer SSRF protection against loopback, private IPv4/IPv6 CIDRs, and cloud metadata endpoints (169.254.169.254).

  • Scoring & Advisory Intelligence:

    • AuthorityScorer: Ranks conflicting claims based on source hierarchy and origin credibility.

    • FreshnessScorer: Applies exponential half-life time decay models.

    • EvidenceEvaluator: Quantifies citation directness and snippet quality.

    • ResolutionAdvisor: Generates actionable resolution recommendations without mutating state without operator consent.

  • Review & Resolution Workflows: Full lifecycle transitions (OPENREVIEWEDRESOLVED / DISMISSEDREOPENED) backed by append-only audit histories.

  • Dual Transport Architecture: Operates over standard Stdio (for Claude Desktop, Google Antigravity, Cursor) or Streamable HTTP/SSE with Bearer API key authentication and sliding rate limiting.


Limitations & Known Edge Cases

While Contradiction MCP is battle-tested on cross-document and cross-source consistency audits, users should be aware of current development limitations:

  1. Intra-Manifest Hierarchical Collisions (Deeply Nested JSON/YAML):

    • Behavior: Key-value extraction flattens object hierarchies into leaf tokens. In complex single manifests (such as Kubernetes deployments), parameters sharing identical leaf keys across distinct blocks (e.g., readinessProbe.initialDelaySeconds vs livenessProbe.initialDelaySeconds, or container resources.requests.cpu vs resources.limits.cpu) can trigger intra-file candidate comparisons and false-positive warnings.

    • Mitigation: Focus analysis on cross-document source verification or filter by external source boundaries. Hierarchical path-aware namespace isolation is currently under active development.

  2. Heading & Brand Entity Extraction:

    • Behavior: Document headings containing version-like keywords (e.g., "2. Node.js V8 Engine Upgrade") may occasionally extract the engine brand or section numeral as a software version string, triggering local version mismatch warnings against runtime version specifications.

    • Mitigation: Structure specifications using standard tables, key-value mappings, or explicit parameter declarations.

  3. Static Specifications vs Live Network State:

    • Behavior: The engine analyzes declared assertions across files, repositories, and documentation. It does not probe live runtime sockets, ephemeral cloud infrastructure, or running processes unless synced as structured state documents.

  4. Candidate Pair Scalability on Giant Monoliths:

    • Behavior: Files producing >1,000 claims increase pairwise combinations quadratically ($O(N^2)$ worst-case prior to similarity filtering).

    • Mitigation: Bounded file size guards (MAX_FILE_SIZE_BYTES, default 10MB) prevent memory exhaust. Partition giant monoliths into modular architecture specs.

  5. Language & Syntax Scope:

    • Behavior: Extraction heuristics, unit normalizers (e.g., GB, MB, ms), and predicate patterns are currently tuned for English documentation and standard DevOps/software configuration keys. Multi-lingual natural language extraction without standard keying is planned for future releases.


System Architecture

Visual Dataflow

flowchart TD
    subgraph Clients["MCP Clients & IDEs"]
        Claude["Claude Desktop"]
        AGY["Google Antigravity"]
        Cursor["Cursor IDE"]
        HTTP["Remote HTTP / SSE"]
    end

    subgraph Protocol["MCP Protocol Layer"]
        StdioT["StdioServerTransport"]
        HttpT["StreamableHttpTransport"]
        Router["21 Tools | 4 Resources | 2 Prompts"]
    end

    subgraph Core["Analysis & Intelligence Engine"]
        Engine["ContradictionEngine"]
        Classifier["ContradictionClassifier"]
        Authority["AuthorityScorer"]
        Freshness["FreshnessScorer"]
        Advisor["ResolutionAdvisor"]
    end

    subgraph Connectors["Ingestion Connectors"]
        GH["GitHub Connector"]
        DOC["Document Connector (PDF/YAML/JSON/MD)"]
        WEB["Website Connector (SSRF Guarded)"]
    end

    subgraph Storage["Storage Layer"]
        DB[(SQLite WAL Mode)]
        Audit["Immutable Audit Trail"]
        Backups["Online Live Backups"]
    end

    Claude --> StdioT
    AGY --> StdioT
    Cursor --> StdioT
    HTTP --> HttpT

    StdioT --> Router
    HttpT --> Router

    Router --> Engine
    Router --> Connectors

    Connectors --> DB
    Engine --> Classifier
    Engine --> Authority
    Engine --> Freshness
    Engine --> Advisor

    Engine --> DB
    DB --> Audit
    DB --> Backups

One-Command Quickstart (All IDEs)

Automatically configure Contradiction MCP into your favorite editor with a single command:

Universal CLI Setup

# Google Antigravity (configured in ~/.gemini/config/mcp_config.json and workspace)
npx -y contradiction-mcp install antigravity

# Cursor IDE (configured in ~/.cursor/mcp.json and workspace)
npx -y contradiction-mcp install cursor

# Claude Desktop App (configured in claude_desktop_config.json)
npx -y contradiction-mcp install claude

# Claude Code CLI (configured in ~/.claude.json & via claude mcp add)
npx -y contradiction-mcp install claude-code

# Windsurf IDE (configured in ~/.codeium/windsurf/mcp_config.json)
npx -y contradiction-mcp install windsurf

# Configure ALL detected IDEs simultaneously
npx -y contradiction-mcp install all

Local Setup from Cloned Source

git clone https://github.com/Daksh-create349/Contradiction-MCP.git
cd "Contradiction MCP/contradiction-mcp"
npm install
npm run build

# Automatically configure in your current environment:
npm run install-mcp

# Or target a specific IDE:
node bin/cli.js install [antigravity|cursor|claude|claude-code|windsurf|all]

Manual IDE Client Configuration

If you prefer manual configuration, add the following configuration block to your client settings:

1. Claude Desktop (claude_desktop_config.json)

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "contradiction": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/contradiction-mcp/dist/index.js"],
      "env": {
        "NODE_ENV": "production",
        "DATABASE_PATH": "/ABSOLUTE/PATH/TO/contradiction-mcp/data/contradiction.db",
        "MCP_TRANSPORT": "stdio",
        "LOG_LEVEL": "error"
      }
    }
  }
}

2. Google Antigravity (mcp_config.json)

  • Global: ~/.gemini/config/mcp_config.json

  • Workspace: <workspace-root>/.agents/mcp_config.json

{
  "mcpServers": {
    "contradiction": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/contradiction-mcp/dist/index.js"],
      "env": {
        "NODE_ENV": "production",
        "DATABASE_PATH": "/ABSOLUTE/PATH/TO/contradiction-mcp/data/contradiction.db",
        "MCP_TRANSPORT": "stdio",
        "LOG_LEVEL": "error"
      }
    }
  }
}

3. Cursor IDE (.cursor/mcp.json)

{
  "mcpServers": {
    "contradiction": {
      "command": "node",
      "args": ["/ABSOLUTE/PATH/TO/contradiction-mcp/dist/index.js"]
    }
  }
}

4. Streamable HTTP Remote Client

Connect distributed agents or team members to a centralized server daemon:

{
  "mcpServers": {
    "contradiction": {
      "url": "http://localhost:3000/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_SECRET_API_KEY"
      }
    }
  }
}

MCP Interface: 21 Tools, 4 Resources, 2 Prompts

Active MCP Tools (21)

Tool Name

Description

Key Arguments

health_check

Checks server runtime health, database latency, and entity counts

{}

analyze_claim_pair

Runs pairwise contradiction analysis between two claim IDs

claimIdA, claimIdB

scan_for_contradictions

Scans the full knowledge base for conflicting assertions

limit, minSeverity

scan_claim_for_contradictions

Incrementally scans candidate pairs for a specific claim

claimId

list_contradictions

Lists contradictions filtered by status and severity

status, severity, limit

get_contradiction

Retrieves detailed contradiction record with claims and sources

contradictionId

explain_claim_relationship

Explains contextual factors (env, scope, role, SemVer)

claimIdA, claimIdB

advise_resolution

Heuristically compares authority, freshness, and evidence

contradictionId

review_contradiction

Transitions contradiction to REVIEWED status

contradictionId, reviewedBy, notes

resolve_contradiction

Resolves contradiction by selecting canonical claim

contradictionId, resolvedBy, reason

dismiss_contradiction

Dismisses false positives or intentional differences

contradictionId, dismissedBy, reason

reopen_contradiction

Reopens a previously resolved or dismissed contradiction

contradictionId, reopenedBy, reason

get_contradiction_history

Returns chronological, immutable audit trail of transitions

contradictionId

get_claim_history

Returns value history and supersessions for a specific claim

externalId

list_connectors

Lists registered ingestion connectors and capabilities

{}

test_github_connection

Tests GitHub connectivity and rate-limit headroom

owner, repo

sync_github_repository

Ingests package.json, Dockerfile, README, and workflows

owner, repo, branch

sync_document

Ingests local JSON, YAML, MD, CSV, TXT, or PDF files

filePath, subject, sourceRole

sync_website

Ingests web URL with pre-flight SSRF protection

url, subject, maxDepth

sync_source

Synchronizes an existing registered source by ID

sourceId

sync_sources

Bounded-concurrency batch synchronization

sourceIds

Active MCP Resources (4)

  • health://metrics — Static snapshot of uptime, tool invocations, and contradiction tallies.

  • contradiction://{id} — Dynamic resource returning live contradiction state for a specific ID.

  • claim://{id} — Dynamic resource returning factual claim details, context, and provenance.

  • source://{id} — Dynamic resource returning source metadata, type, and trust score.

Active MCP Prompts (2)

  • investigate_contradiction — Interactive prompt guiding contradiction investigation, context analysis, and resolution.

  • review_source_consistency — Agent prompt guiding systematic cross-source consistency audits.


Example Tool Payloads & Responses

Request:

{
  "filePath": "/tmp/deployment_spec.json",
  "subject": "api-server",
  "scope": "deployment",
  "environment": "production",
  "sourceRole": "deployment"
}

Response:

{
  "success": true,
  "sourceId": "76be8d2f-1e3b-48fd-922f-1b499251ac2b",
  "claimsCreated": 2,
  "claimsUpdated": 0
}

Request:

{}

Response:

{
  "status": "completed",
  "claimsScanned": 4,
  "candidatePairs": 2,
  "contradictionsFound": 1,
  "contradictions": [
    {
      "contradictionType": "VERSION_MISMATCH",
      "severity": "HIGH",
      "confidence": 1.0,
      "explanation": "Both claims describe the node_version for 'api-server'. However, architecture_guide.md reports '18.0.0' while deployment_spec.json reports '22.0.0'. Classified as VERSION_MISMATCH with HIGH severity.",
      "priorityScore": 0.93,
      "contradictionId": "2f1691be-9c1f-4e93-a86a-ef0c0ba54f9d"
    }
  ]
}

Request:

{
  "contradictionId": "2f1691be-9c1f-4e93-a86a-ef0c0ba54f9d"
}

Response:

{
  "recommendedClaimId": "a779fa4b-c680-482c-8f31-daf470aaaab7",
  "recommendedValue": "22.0.0",
  "confidenceScore": 0.88,
  "reasoning": "Claim B represents a higher-confidence candidate for current truth because it carries higher operational authority (0.85 vs 0.65) as deployment configuration and is equally fresh.",
  "authorityScoreA": 0.65,
  "authorityScoreB": 0.85
}

Step-by-Step Hands-On Tutorial

Tutorial: Detecting Real Document Contradictions in 30 Seconds

cd contradiction-mcp

# 1. Create two contradictory specifications for the same service:
cat << 'EOF' > /tmp/deployment_spec.json
{
  "node_version": "22.0.0",
  "database": "postgres-16"
}
EOF

cat << 'EOF' > /tmp/architecture_guide.md
# Architecture Guide
node_version: 18.0.0
database: postgres-14
EOF

# 2. Run test script to ingest and scan via Stdio MCP client:
npx tsx -e '
import { StdioClientTransport } from "@modelcontextprotocol/client/stdio";
import { Client } from "@modelcontextprotocol/client";

async function main() {
  const client = new Client({ name: "tester", version: "1.0.0" }, { capabilities: {} });
  await client.connect(new StdioClientTransport({ command: "node", args: ["dist/index.js"] }));

  // Ingest Deployment Spec (role: deployment)
  await client.callTool({
    name: "sync_document",
    arguments: { filePath: "/tmp/deployment_spec.json", subject: "api-server", sourceRole: "deployment", environment: "production" }
  });

  // Ingest Architecture Guide (role: documentation)
  await client.callTool({
    name: "sync_document",
    arguments: { filePath: "/tmp/architecture_guide.md", subject: "api-server", sourceRole: "documentation", environment: "production" }
  });

  // Automatically scan knowledge base
  const scan = await client.callTool({ name: "scan_for_contradictions", arguments: {} });
  console.log("\nDISCOVERED CONTRADICTIONS:\n", JSON.stringify(JSON.parse(scan.content[0].text), null, 2));

  await client.close();
}
main();
'

Complete Command Reference

Command

Description

npm run build

Compiles TypeScript and packages SQL migration scripts

npm start

Launches compiled production server (node dist/index.js)

npm run dev

Runs development server with on-the-fly TypeScript execution

npm test

Runs complete Vitest test suite (169 tests across 23 files)

npm run test:coverage

Generates detailed V8 code coverage report

npm run verify

Runs all 62 end-to-end verification gates (protocol, security, heuristics)

npm run demo

Executes live 17-step end-to-end demonstration scenario

npm run smoke

Launches compiled server and verifies real MCP Stdio connectivity

npm run live-test

Runs stdio smoke tests followed by Streamable HTTP integration suite

npm run typecheck

Validates TypeScript static typing (tsc --noEmit) with 0 errors

npm run lint

Lints codebase with ESLint 9 Flat Config (0 errors, 0 warnings)

npm run format:check

Verifies code formatting against Prettier

npm run format

Auto-formats all code using Prettier

npm run install-mcp

Automatically configures MCP settings across Antigravity, Cursor, and Claude

npm run migrate

Executes pending SQLite database schema migrations

npm run seed

Seeds database with realistic demonstration claims and sources

npm run backup

Creates zero-downtime online SQLite backup in backups/

npm run restore <path>

Restores database from a designated backup archive

npm run health

Queries system health status and outputs operational JSON

npm run security:check

Runs npm audit to inspect dependency security vulnerabilities


Environment Variables

Variable

Default

Description

NODE_ENV

development

Runtime mode: development, test, or production

DATABASE_PATH

./data/contradiction.db

Path to SQLite database file or :memory:

MCP_TRANSPORT

stdio

Transport mode: stdio or http

HTTP_PORT

3000

Port for Streamable HTTP server when MCP_TRANSPORT=http

HTTP_HOST

127.0.0.1

Binding address for HTTP daemon (DNS rebinding guarded)

API_KEY

(optional)

Secret bearer token required for HTTP authentication

GITHUB_TOKEN

(optional)

Personal Access Token to prevent GitHub API rate limits

LOG_LEVEL

error

Logging level: debug, info, warn, error

ALLOWED_ROOTS

.

Comma-separated directory paths permitted for file ingestion

MAX_FILE_SIZE_BYTES

10485760 (10MB)

Maximum file size allowed for document ingestion

RATE_LIMIT_MAX

100

Maximum requests permitted per sliding time window

RATE_LIMIT_WINDOW_MS

60000 (1 min)

Sliding rate limiter window in milliseconds


Docker & Container Deployment

Run with Docker

# Build production container (multi-stage, non-root user):
docker build -t contradiction-mcp:latest .

# Run container with persistent data volume:
docker run -d \
  --name contradiction-mcp \
  -p 3000:3000 \
  -v contradiction-data:/app/data \
  -e MCP_TRANSPORT=http \
  -e HTTP_PORT=3000 \
  contradiction-mcp:latest

Run with Docker Compose

docker compose up -d
docker compose ps
docker compose logs -f

Documentation Index


License

This project is licensed under the MIT License.

MIT License
Copyright (c) 2026 Daksh Srivastava and Contradiction MCP Contributors

Free and open-source software — you are free to use, modify, distribute, sublicense, and deploy Contradiction MCP in personal and commercial environments.

Available Tools

22 tools
advise_resolutionB

Generates deterministic authority and freshness scoring comparison to advise an agent on which claim likely represents current truth.

ParametersJSON Schema
NameRequiredDescriptionDefault
contradictionIdYesThe unique ID of the contradiction record

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. The wording "Generates..." and "to advise" implies a non-mutating, read-only advisory operation and "deterministic" signals reproducible output, which is meaningful context. It does not state permissions, whether it modifies the contradiction record, or any side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

One dense, front-loaded sentence with no filler or repetition. It is slightly jargon-heavy ("authority and freshness scoring") but every clause contributes to the purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a single-parameter tool with no output schema and no annotations, the description should at least characterize the shape of the advice returned. It gestures at a "scoring comparison" but leaves the output form and the advisory-vs-actionable distinction underspecified.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the single contradictionId parameter is fully documented in the schema, so baseline is 3. The description adds no extra meaning about how the ID is used or what happens if it is unknown.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ("Generates") and a concrete mechanism ("deterministic authority and freshness scoring comparison") with the goal of advising which claim is current truth. It is clear on its own but never distinguishes itself from close siblings such as resolve_contradiction or explain_claim_relationship.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no statement of prerequisites (e.g., that a contradiction must already exist), and no routing to or away from resolve_contradiction or review_contradiction. The agent must infer that this is a pre-resolution advisory step.

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

analyze_claim_pairB

Analyzes two claims to determine whether they contradict each other, returning contradiction classification, severity, confidence score, and explanation.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimAIdYesThe unique ID of the first claim
claimBIdYesThe unique ID of the second claim

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations and no output schema, the description does add value by enumerating the return fields (classification, severity, confidence, explanation). But it omits key behavioral traits such as whether the result is read-only, whether it is persisted, idempotency, or any permission/cost constraints.

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?

A single front-loaded sentence that conveys the action and the returned artifacts with no wasted words. Efficient, though it carries no additional structure such as guidance or examples.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter analysis tool, the description covers the purpose and return contents, which partly compensates for the absent output schema. It remains incomplete on usage routing and behavioral/safety context, leaving the agent to infer when this tool is preferred over its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both claimAId/claimBId are fully documented in the schema, so the baseline is 3. The description adds nothing about parameter semantics beyond noting it operates on two claims.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb (analyzes) and resource (two claims) with the goal of detecting contradiction, which is clearer than a bare name restatement. However, it does not distinguish this tool from close siblings like scan_claim_for_contradictions or explain_claim_relationship, so an agent can't route confidently without reading schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this tool versus the many sibling scanning/analysis tools. No prerequisites or conditions are given; the agent must infer that a pairwise comparison is meant from the name alone.

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

dismiss_contradictionB

Dismisses a contradiction record as acceptable or non-actionable, preserving an audit record of the decision.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoAdditional notes
reasonYesReason why this contradiction is dismissed
dismissedByYesName or identifier of the actor dismissing this contradiction
contradictionIdYesThe unique ID of the contradiction record to dismiss

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It discloses one behavioral trait—that an audit record of the decision is preserved—but omits permissions required, reversibility, rate limits, and other side effects of the dismissal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is a single, front-loaded sentence that efficiently conveys the action and its audit-trail outcome. There is no wasted wording, and the core information is presented immediately.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no annotations and no output schema, the description must be self-sufficient, but it lacks details about authorization requirements, what happens to the contradiction record's status, and whether the action is reversible. It covers the core action and audit aspect but leaves substantive gaps for a mutation tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all four parameters fully. The description adds no parameter-level meaning beyond what the schema provides, making the baseline score of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Dismisses') and resource ('a contradiction record as acceptable or non-actionable'), making the action clear. However, it does not distinguish this tool from siblings like resolve_contradiction, review_contradiction, or reopen_contradiction, which an agent must differentiate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no explicit when-to-use guidance, nor does it name alternatives such as resolve_contradiction or review_contradiction. The phrase 'as acceptable or non-actionable' hints at a condition but does not constitute clear usage instructions or exclusions.

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

explain_claim_relationshipC

Explains why two claims do or do not contradict each other based on context dimensions including environment, scope, source role, temporal state, SemVer range compatibility, and set membership.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimAIdYesID of the first claim
claimBIdYesID of the second claim

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. 'Explains' implies a read-only analysis, but the description never confirms lack of side effects, required permissions, or what the explanation output contains, leaving real behavioral gaps.

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?

A single front-loaded sentence with no redundant filler, listing the context dimensions compactly. The dimension list is long but each item earns its place by signaling the analysis surface.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a two-ID, read-only analysis tool with full schema coverage the description is nearly sufficient, and listing the context dimensions hints at the analysis depth. Without an output schema or annotations, however, it should say more about the shape of the explanation returned.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (claimAId, claimBId) are documented with UUID format in the schema, so the baseline of 3 applies. The description adds no ordering or pairing semantics beyond what the schema states.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb (explains) tied to a specific resource (the relationship/contradiction status between two claims) plus the reasoning dimensions used. It is far from a tautology, but it never distinguishes itself from the sibling 'analyze_claim_pair', which an agent could easily mistake for the same operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no preconditions, and no mention of alternatives such as analyze_claim_pair or scan_claim_for_contradictions. The agent must infer that this is the explanatory counterpart to the scanning tools.

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

get_claim_historyB

Retrieves the chronological value transition history for a specific factual claim, tracking updates and superseded values.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimIdYesThe unique ID of the claim

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. 'Retrieves' implies a read operation and 'tracking updates and superseded values' conveys return semantics, but it omits pagination, ordering guarantees, and explicit read-only confirmation for a history tool.

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?

One tight, front-loaded sentence with no filler. It is efficient, though the phrase 'tracking updates and superseded values' is slightly redundant with 'value transition history'.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a low-complexity, single-parameter read tool with no output schema, the description is adequate: it names the resource and hints at the returned content (chronological transitions, superseded values). It does not describe the shape of the history or ordering details an agent might need.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter at 100% schema description coverage, so the schema already defines claimId fully. The description adds no format or meaning beyond what the schema provides, making the baseline of 3 appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Retrieves) and a well-defined resource: the chronological value transition history for a factual claim. This is clearly distinct from the contradiction-focused siblings and get_contradiction_history, though it never names those alternatives directly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description only says what the tool does; it gives no guidance on when to reach for it versus get_contradiction_history or the scan_* tools, and states no prerequisites or exclusions. Usage must be inferred from the one-line purpose.

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

get_contradictionA

Retrieves a single contradiction by ID, including its complete claim and source records for in-depth agent investigation.

ParametersJSON Schema
NameRequiredDescriptionDefault
contradictionIdYesThe unique ID of the contradiction record

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are supplied, so the description carries the full burden. It does disclose useful return content ('complete claim and source records'), which implies a read-only operation, but says nothing about permissions, error behavior for an unknown ID, or whether contradictions can be in different states. Partial disclosure only.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

A single sentence that front-loads the operation and ID scope, with the return-content clause earning its place. No filler.

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?

With no output schema and no annotations, the description usefully states what is returned (claim plus source records), which compensates for the missing output schema. It is slightly thin on error/state behavior but adequate for a simple single-record fetch.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter, and the schema documents it fully at 100% coverage ('The unique ID of the contradiction record'). The description's 'by ID' adds no syntax or format detail beyond the schema, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a specific verb+resource ('Retrieves a single contradiction by ID') and distinguishes itself from the list_* siblings through the 'single' scope. It stops short of naming an alternative tool, but the resource and cardinality are unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: the ID-based lookup and the phrase 'for in-depth agent investigation' suggest this is the detail/drill-down step after list_contradictions, but no explicit when-to-use or when-not-to-use guidance is given relative to siblings like list_contradictions or get_contradiction_history.

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

get_contradiction_historyA

Retrieves the chronological audit history of review and resolution actions performed on a contradiction record.

ParametersJSON Schema
NameRequiredDescriptionDefault
contradictionIdYesThe unique ID of the contradiction record

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It usefully discloses that results are chronological and cover review/resolution actions, but says nothing about permissions, pagination, or truncation behavior for what is presumably an unbounded audit log.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

A single well-formed sentence that front-loads the core purpose with no filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple single-parameter read tool with no output schema and no annotations, the description covers what is retrieved and its ordering. Only minor gaps remain (log size/pagination expectations), which are not critical for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage ('The unique ID of the contradiction record'), so the schema does the work. The description adds no format or source hints for the ID beyond what the schema already provides; baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (retrieves) and resource (chronological audit history of review and resolution actions on a contradiction record). This clearly distinguishes it from siblings like get_contradiction (current state) and review/resolve/dismiss_contradiction (mutations), though no sibling is named explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied — an agent can infer you call this to audit a contradiction's action trail, but there is no explicit when-to-use guidance, no mention of the analogous get_claim_history sibling, and no exclusions or prerequisites.

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

health_checkA

Checks the operational status of Contradiction MCP, including database connectivity and server metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the disclosure burden and does useful work: it names the specific subsystems probed (DB connectivity, server metrics). A health check is inherently a safe read, so the safety profile is self-evident, but latency, failure semantics, and whether a failing check returns an error vs. an unhealthy status are not covered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

A single sentence of roughly 15 words with the verb and scope front-loaded and no filler. Nothing could be removed without losing meaning.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description must stand in for the return contract. It hints at what is measured (connectivity, metrics) but not how results are shaped (healthy/unhealthy status, per-subsystem flags, or a thrown error on failure), leaving an agent unable to anticipate the response.

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?

The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. No parameter text is needed or expected.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource ('Checks the operational status of Contradiction MCP') and even enumerates the checked subsystems (database connectivity, server metrics). It is trivially distinguishable from the contradiction-handling siblings, though it never names them explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is strongly implied by the tool's nature — a diagnostic/readiness probe — but the description never states when to invoke it (startup, troubleshooting, connectivity failure) or that it is the only non-contradiction-domain tool. Adequate for a zero-param probe, but no explicit guidance.

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

list_connectorsB

Lists all available external source connectors with their capabilities, authentication requirements, and statuses.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations exist, so the description carries the full burden. It discloses the shape of the return content (capabilities, authentication requirements, statuses), which is genuinely useful given there is no output schema, but it says nothing about safety, required auth to call the tool, or whether results are cached or paginated.

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?

A single well-formed sentence with no filler, and the verb and resource are front-loaded. It could be slightly tighter but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter list tool with no output schema, the description adequately explains what comes back, but it omits practical details such as result volume, ordering, or whether connector statuses are live or cached. Adequate rather than complete.

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?

The tool takes zero parameters, so per the rubric the baseline is 4. There is no parameter semantics to clarify and nothing omitted.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Lists') and resource ('external source connectors') and enumerates the fields returned (capabilities, auth requirements, statuses). It is clearly distinguishable from the scan/sync/contradiction siblings, though it does not explicitly name an alternative the way a routing tool would.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description says what the tool does but gives no guidance on when to call it versus alternatives (e.g., sync_source, sync_sources) or what a caller should do with the result. With no parameters there is little room for misuse, but no explicit usage context is provided.

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

list_contradictionsB

Queries stored contradiction records from the database with optional filtering by status, severity, type, and confidence.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoFilter by contradiction type string
limitNoMaximum number of records to return (default: 50)
offsetNoPagination offset (default: 0)
statusNoFilter by contradiction status (OPEN, REVIEWED, RESOLVED, DISMISSED)
severityNoFilter by severity level (LOW, MEDIUM, HIGH, CRITICAL)
minConfidenceNoFilter by minimum confidence threshold

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full behavioral burden. It does not say the operation is read-only, mention default/max result sizes, pagination behavior, sorting, or any permission requirements; it only characterizes the fields a record carries, which the schema already implies.

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?

A single efficient sentence with no filler, and the filterable dimensions are listed up front. It is appropriately sized, though it is a flat statement rather than sharply front-loaded with the most decision-relevant information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only list tool with 100% schema coverage and no output schema, the description is minimally adequate but leaves gaps: no return format, no ordering or pagination guidance, and no mention that all filters are optional (zero required parameters).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all six parameters (including the enums for status and severity and the limit/offset defaults) are already documented. The description merely restates the filter dimensions, adding no syntax, default, or interaction detail beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('queries') and resource ('stored contradiction records') plus the filter dimensions. The word 'stored' implicitly separates it from scan_* siblings that discover contradictions, but it never names those alternatives explicitly, so sibling differentiation is left to inference.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'stored' records suggests retrieving existing data rather than scanning for new contradictions. There is no explicit guidance on when to call this versus get_contradiction for a single record or the various scan_* tools.

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

reopen_contradictionA

Reopens a previously resolved or dismissed contradiction back to OPEN status with audit trail logging.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoAdditional notes
reasonNoReason for reopening
reopenedByYesName or identifier of the actor reopening this contradiction
contradictionIdYesThe unique ID of the contradiction record to reopen

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It usefully discloses the resulting status and that audit trail logging occurs, but omits whether reopening is reversible, what permissions or actor identity are required, and how existing resolution metadata is handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

A single front-loaded sentence with no filler; the state transition and audit logging are both stated economically and every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with full schema coverage and no output schema, the description covers the core operation, target states, and audit behavior. It stops short of the authorization/prerequisite detail an agent might want before mutating a record, but the essentials are present.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (contradictionId, reopenedBy, reason, notes) are already documented in the schema. The description adds no syntax, format, or constraint detail beyond that, so the baseline 3 applies.

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?

States a specific verb (reopens), resource (contradiction), and the exact state transition (resolved/dismissed -> OPEN), plus a side effect (audit trail logging). This distinguishes it from siblings like resolve_contradiction, dismiss_contradiction, and review_contradiction, which move records into the states this tool reverses.

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 phrase 'previously resolved or dismissed' implies the precondition for use, so an agent can infer this applies only to non-open records. However, it never explicitly contrasts with resolve_contradiction/dismiss_contradiction or states when-not to use it (e.g., already-open records), leaving routing to inference.

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

resolve_contradictionC

Resolves a contradiction record, recording the authoritative chosen claim (optional), resolution reason, and audit trail.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoAdditional resolution notes
reasonYesDetailed explanation of why and how this contradiction was resolved
resolvedByYesName or identifier of the resolver
chosenClaimIdNoID of the claim accepted as authoritative (optional)
contradictionIdYesThe unique ID of the contradiction record to resolve

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It mentions recording the chosen claim, reason, and audit trail, but does not disclose permissions required, whether the action is reversible, or what side effects occur (e.g., changing status, notifications).

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 a single, front-loaded sentence with no wasted words. It efficiently communicates the core action and recorded outputs.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given this is a mutation tool with no annotations, no output schema, and many similar siblings, the description is incomplete. It does not explain the resolution process, its effects, or how it differs from other contradiction management tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds little beyond what is in the schema, only summarizing what gets recorded. Baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Resolves a contradiction record.' This is clear, but it does not distinguish the tool from siblings like dismiss_contradiction or review_contradiction, which also act on contradiction records.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as dismiss_contradiction, reopen_contradiction, or advise_resolution. The description provides no context or exclusions.

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

review_contradictionB

Marks a contradiction record as REVIEWED, recording the reviewer identity and optional notes in the persistent audit trail.

ParametersJSON Schema
NameRequiredDescriptionDefault
notesNoReview findings or triage notes
reviewedByYesName or identifier of the reviewer / agent
contradictionIdYesThe unique ID of the contradiction record to review

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries extra weight, and it does add real value: it discloses the side effect (writes into a persistent audit trail) and that reviewer identity plus notes are recorded. It still omits whether the transition is idempotent, what happens if the record is already reviewed, or whether permissions are required.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

A single, front-loaded sentence with no filler; the state change is stated first and the audit-trail consequence follows.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no annotations and no output schema, the description covers the essential behavior: the state transition and the audit-trail write. It is nearly complete, missing only lifecycle signaling (idempotency, prior-state requirements) relative to its many sibling transition tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters are already documented structurally — baseline 3. The description restates 'reviewer identity' and 'optional notes' without adding format, constraints, or usage nuance beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Specific verb+resource: 'Marks a contradiction record as REVIEWED' clearly states the state transition and target entity. However, it does not distinguish itself from siblings with overlapping semantics such as resolve_contradiction, dismiss_contradiction, and reopen_contradiction, which an agent must disambiguate.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance is given. The description never says when to pick 'review' over 'resolve', 'dismiss', or 'reopen' — a significant omission given four sibling tools operate on the same contradiction lifecycle.

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

scan_claim_for_contradictionsB

Performs an incremental scan for a single claim against relevant candidate claims in the database and persists new contradictions.

ParametersJSON Schema
NameRequiredDescriptionDefault
claimIdYesThe unique ID of the claim to scan
minConfidenceNoMinimum confidence threshold between 0.0 and 1.0 (default: 0.35)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It usefully discloses that the operation is incremental and that it persists new contradictions (a write side effect), but says nothing about permissions, rate limits, or what happens to pre-existing contradictions, leaving real behavioral gaps for a mutating tool.

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?

A single front-loaded sentence with no filler; the scan target and write behavior come first. Efficient, though it could incorporate usage routing without much added length.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema and no annotations, so the description should carry more. It conveys scope and that contradictions are persisted, but omits any sense of what the scan returns or how results are surfaced, which an agent selecting this tool would benefit from.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters (claimId, minConfidence) are fully documented in the schema, so the description needn't compensate. It adds no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (scan), scope (single claim), and resource (contradictions), plus a key qualifier (incremental). This implicitly distinguishes it from scan_for_contradictions and scan_source_for_contradictions, though it never names those siblings explicitly.

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?

"Incremental scan for a single claim" implies the usage context relative to the batch/source siblings, but there is no explicit when-to-use or when-not-to-use guidance and no named alternative. The routing must be inferred.

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

scan_for_contradictionsB

Scans all claims in the database using deterministic candidate grouping, detects contradictions, persists them without duplicates, and returns a summary report.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of contradiction results to return (default: 50)
minConfidenceNoMinimum confidence threshold between 0.0 and 1.0 (default: 0.35)
includeDismissedNoWhether to include previously dismissed contradictions (default: false)

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose useful behavior: deterministic candidate grouping, persistence, duplicate avoidance, and a summary return. However, it omits permissions requirements, performance/cost implications of a full-database scan, and any reversibility notes.

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?

A single well-formed sentence that front-loads the scan action and packs in behavior without filler. It is slightly overloaded with clauses but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description covers the core mechanics but leaves gaps: the summary report's contents are unspecified and side effects/permissions are not discussed. Adequate but not complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (limit, minConfidence, includeDismissed) are already documented in the schema with defaults. The description adds no parameter-level detail, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a clear verb and resource (scans all claims, detects contradictions) and adds real scope information — whole-database rather than a single claim or source. It implicitly separates itself from scan_claim_for_contradictions and scan_source_for_contradictions via the 'all claims' scope, but never explicitly contrasts them, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no explicit when-to-use or when-not-to-use guidance, and no sibling is named. The bulk scope is only inferable from the phrase 'all claims,' which an agent must interpret on its own.

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

scan_source_for_contradictionsA

Scans all claims from a specific source, file, or repository for contradictions against all other claims in the database.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNoMaximum number of contradictions to return (default: 50)
sourceIdYesThe unique ID, name, URI, or file path of the source to scan
minConfidenceNoMinimum confidence threshold between 0.0 and 1.0 (default: 0.35)
includeDismissedNoWhether to include previously dismissed contradictions (default: false)

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It usefully discloses the comparison scope ('against all other claims in the database'), but says nothing about whether the scan persists/creates contradiction records, how long a scan may take, or cost/N+1 behavior. The persistence question is a real gap for a scan tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

A single tight sentence with the action, the scoped input, and the comparison target front-loaded. Nothing is wasted or buried.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema and no annotations, so the description should carry more of the operational picture. It omits any indication of the return shape (e.g., ranked contradiction pairs with confidence scores) and whether the scan mutates stored state, leaving an agent guessing about results and side effects.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all four parameters (sourceId, limit, minConfidence, includeDismissed) are already documented in the schema. The description adds no parameter-level detail such as what a sourceId may be or how minConfidence affects results, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (scans) and resource (all claims from a specific source/file/repository) plus the comparison baseline (all other claims in the database). The scope wording implicitly separates it from the sibling scan_claim_for_contradictions (single claim) and scan_for_contradictions (whole DB), though neither sibling is named explicitly.

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 scoping phrase 'from a specific source, file, or repository' implies when to reach for this over the global or single-claim scanners, but there is no explicit when-to-use, when-not-to-use, or named alternative. Usage must be inferred from the scope description alone.

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

sync_documentB

Synchronizes a local document file (Markdown, text, JSON, YAML, CSV), extracts claims with exact line provenance, and discovers contradictions.

ParametersJSON Schema
NameRequiredDescriptionDefault
scopeNoScope of the document (default: file)
subjectNoSubject entity name for extracted claims (default: filename)
filePathYesAbsolute or relative file path on disk
sourceNameNoOptional friendly name for this source
sourceRoleNoSource role (e.g. deployment, configuration, documentation)
environmentNoEnvironment context (e.g. production, development)
runDiscoveryNoWhether to trigger automatic contradiction discovery (default: true)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description carries the full behavioral burden. It discloses the three-stage pipeline (sync → extract claims with line provenance → discover contradictions), which is genuinely useful, but says nothing about whether syncing is idempotent, whether it mutates or creates records, what permissions/connectors are required, or what runDiscovery does on repeat runs.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

A single dense sentence that front-loads the action and the resource, then lists formats and outcomes in the order the agent will need them. No filler, no restatement of the name.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a seven-parameter, zero-annotation, no-output-schema tool the description covers the pipeline shape adequately but leaves the mutation semantics and return shape entirely unaddressed. An agent knows roughly what it does but not what it changes or gets back.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every one of the seven parameters is already documented in the schema, and the baseline is therefore 3. The description adds only the format list, which loosely relates to filePath, and nothing about scope, subject, sourceName, sourceRole, environment, or runDiscovery semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a concrete verb (synchronizes) and a concrete resource (a local document file), and enumerates the accepted formats, which separates it from sibling syncers such as sync_github_repository and sync_website. It is clear, but it never names the closest sibling (sync_source) so an agent must infer the boundary itself.

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 format list implies 'use this for local files, not for remote repositories or websites', which is a reasonable inference against the sibling set. There is no explicit when-to-use statement, no mention of prerequisites (must the file exist? is a connector needed?) and no stated alternative for the overlapping sync_source tool.

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

sync_github_repositoryA

Ingests a real GitHub repository, extracts factual claims (runtimes, dependencies, ports), idempotently persists them in SQLite, and runs automatic contradiction discovery on touched claims.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesThe repository name
ownerYesThe GitHub organization or username owning the repository
branchNoOptional git branch or tag name (defaults to repository default branch)
runDiscoveryNoWhether to automatically trigger incremental contradiction discovery after sync (default: true)

TDQS

A3.9/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 and does well: it discloses the multi-stage behavior, that persistence is idempotent (safe to re-run), and that contradiction discovery runs automatically on touched claims. Gaps remain on auth requirements, network/rate-limit behavior, and failure handling, so it falls short of a 5.

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?

A single front-loaded sentence with no filler; every clause (ingest, extract, persist idempotently, discover contradictions) adds signal. It is dense and slightly run-on, which keeps it just below a 5.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no output schema and no annotations, the description covers what the operation does and its main side effects (persistence, automatic discovery). It stops short of describing the return value or what happens to pre-existing claims, but the core behavior is complete enough to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents owner, repo, branch, and runDiscovery. The description mentions extracted fields (runtimes, dependencies, ports) but adds no syntax, defaults, or constraints beyond what the schema provides, making the baseline 3 appropriate.

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 names a specific verb (ingests/syncs) and a specific resource (GitHub repository), then enumerates the pipeline stages it performs: claim extraction, idempotent SQLite persistence, and contradiction discovery. The 'GitHub repository' scope cleanly distinguishes it from sync_website, sync_document, and sync_source siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the resource scope (use this to ingest a GitHub repo), but there is no explicit when-to-use guidance, no mention of prerequisites such as a configured GitHub connector or token, and no routing between this tool and siblings like test_github_connection or sync_sources.

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

sync_sourceA

Unified ingestion tool: synchronizes any registered source connector (github, document, website), idempotently extracts claims, and runs automatic contradiction discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputYesConnector-specific input parameters
connectorYesThe connector identifier (e.g. github, document, website)
runDiscoveryNoWhether to trigger automatic contradiction discovery (default: true)

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does usefully disclose idempotency ('idempotently extracts claims') and the side effect of automatic contradiction discovery, which is real behavioral value. It omits important traits for an ingestion/write tool: whether existing claims are mutated or deleted, required permissions, failure/partial-failure behavior, and whether repeated calls are cheap.

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?

A single dense sentence with no filler, front-loaded with the identity ('Unified ingestion tool') followed by verbs and effects. It could be split for scannability but every clause earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with a nested, connector-dependent input object and no output schema, the description covers the what but not the how: it never explains where to obtain valid connector-specific input payloads or what the sync returns. Adequate but leaves real gaps for an agent assembling the nested 'input' argument.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents connector, input, and runDiscovery; baseline 3 applies. The description only restates the connector examples already present in the schema and does not clarify the shape of the free-form, connector-specific 'input' object.

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?

States a specific verb (synchronizes) plus the resource (any registered source connector) and enumerates the supported connector types, which distinguishes it from the singular siblings sync_document, sync_website, and sync_github_repository. It also names the two downstream effects (claim extraction, contradiction discovery), so an agent knows exactly what this call does without opening the schema.

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 word 'unified' implies this is the generic entry point that covers any connector type, which suggests when to prefer it over the per-connector siblings. However, no explicit when-to-use/when-not-to-use guidance or prerequisite (e.g. connector must be registered/listed first) is stated, and nothing tells the agent how this relates to the plural sync_sources sibling.

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

sync_sourcesB

Batch ingestion tool: synchronizes multiple external sources with bounded concurrency, failure isolation, and unified contradiction discovery.

ParametersJSON Schema
NameRequiredDescriptionDefault
sourcesYesList of source synchronization requests
concurrencyNoMax concurrent workers (default: 3)
runDiscoveryNoWhether to run discovery after synchronization (default: true)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden and does disclose meaningful traits: bounded concurrency, failure isolation (partial failures don't abort everything), and post-sync contradiction discovery. It does not cover auth requirements, rate limits, what a partial failure returns, or whether the operation is idempotent — gaps for a batch mutation with no output schema.

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?

A single front-loaded sentence that packs the batch framing first and the behavioral traits after. Dense but not bloated; "failure isolation" and "unified" are slightly opaque adjectives rather than concrete detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a batch tool taking an array of connector/input objects with no output schema and no annotations, the description explains the overall behavior but omits return semantics, error/partial-failure reporting, and how contradiction discovery results surface. Adequate but with clear gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the baseline is 3. The description loosely echoes the concurrency ("bounded concurrency") and runDiscovery ("contradiction discovery") parameters, but adds no new format or constraint detail beyond the schema and says nothing about the per-source connector/input structure.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description gives a clear verb+resource ("synchronizes multiple external sources") and the leading "Batch ingestion tool" label distinguishes it from the singular siblings like sync_source, sync_document, and sync_website. It does not name those alternatives directly, but "batch"/"multiple" makes the scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: an agent can infer this is for syncing several sources at once rather than one. There is no explicit when-to-use/when-not guidance, no statement of prerequisites, and no routing to the sibling single-source tools.

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

sync_websiteB

Fetches an explicit public web page with strict SSRF defenses, extracts factual claims, and discovers contradictions.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesPublic web page URL (http or https only)
sourceNameNoFriendly name for the website
runDiscoveryNoWhether to trigger automatic contradiction discovery (default: true)

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full disclosure burden. It usefully notes strict SSRF defenses and that claim extraction and contradiction discovery happen as part of the call, which hints at side effects. It omits whether this persists data, what happens on re-sync/duplicates, auth requirements, and rate limits, so coverage is partial.

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?

A single front-loaded sentence with the primary action first and no filler. It is appropriately sized, though the comma-separated clause list slightly underspecifies rather than overexplains.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 3-parameter tool with no output schema or annotations, the description covers the input action and the SSRF safety posture but omits persistence/side effects, expected return, and failure behavior. It is minimally adequate rather than complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all three parameters (url, sourceName, runDiscovery) are already documented, including the runDiscovery default. The description adds no syntax, format, or constraint detail beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names concrete verbs and resources: fetches a public web page, extracts factual claims, and discovers contradictions. This makes the tool's job clear without opening the schema. It stops short of distinguishing itself from siblings like sync_source or scan_source_for_contradictions, which overlap on the extraction/contradiction behavior.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by 'explicit public web page' and the SSRF caveat, telling the agent this is for public web URLs only. However, it never says when to prefer this over sync_source, sync_document, or the scan_* contradiction tools, leaving the routing decision to inference.

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

test_github_connectionA

Tests connectivity to GitHub and validates accessibility of a specific repository without exposing credentials.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesThe repository name
ownerYesThe GitHub organization or username owning the repository

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full behavioral burden. It usefully discloses that credentials are not exposed, which is a security-relevant trait, but it does not specify authentication prerequisites, failure behavior, side effects, or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

A single sentence with zero waste, front-loading the core purpose and including the notable credential-safety behavior without unnecessary detail.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter diagnostic with no output schema and no annotations, the description covers purpose and a key security trait. It would be stronger if it mentioned authentication prerequisites or expected failure modes, but it is largely complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so both owner and repo are already fully documented. The description adds only the idea of a 'specific repository' and does not elaborate on parameter meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Tests connectivity') and resource ('GitHub' and 'a specific repository'), and it distinguishes itself from the sibling sync_github_repository by clearly being a diagnostic rather than a data transfer operation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied: validate GitHub connectivity and repository access before other operations or when troubleshooting. However, it does not explicitly state when to use this tool versus the health_check sibling or when not to use it, so guidance remains inferential.

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. 22 tool updatesv0.1.0
    • First observedadvise_resolution
    • First observedanalyze_claim_pair
    • First observeddismiss_contradiction
    • First observedexplain_claim_relationship
    • First observedget_claim_history
    • First observedget_contradiction
    • First observedget_contradiction_history
    • First observedhealth_check
    • First observedlist_connectors
    • First observedlist_contradictions
    • First observedreopen_contradiction
    • First observedresolve_contradiction
    • First observedreview_contradiction
    • First observedscan_claim_for_contradictions
    • First observedscan_for_contradictions
    • First observedscan_source_for_contradictions
    • First observedsync_document
    • First observedsync_github_repository
    • First observedsync_source
    • First observedsync_sources
    • First observedsync_website
    • First observedtest_github_connection

TDQS

B3.3/5.0

Scored across 22 tools

Disambiguation3/5

Several tools overlap heavily: sync_source, sync_sources, sync_github_repository, sync_document, and sync_website all ingest sources, with the unified sync_source making specialized syncs ambiguous; similarly scan_for_contradictions, scan_claim_for_contradictions, and scan_source_for_contradictions differ mainly in scope. Descriptions help, but an agent could still misselect among sync/scan variants.

Naming Consistency4/5

Nearly all names use snake_case verb_noun or verb_noun_phrase patterns such as list_contradictions, resolve_contradiction, and sync_website, with a minor exception like health_check. The convention is predictable, though scan_for_contradictions slightly breaks the verb_noun shape.

Tool Count3/5

22 tools is borderline heavy for the scope; the contradiction domain is complex, but several source-sync and scan tools could be consolidated. It earns most places, yet the count sits at the upper edge of reasonable.

Completeness4/5

The server covers ingestion, contradiction detection, pair analysis, resolution lifecycle, audit history, and connector health. Gaps remain around direct claim/source management such as listing, getting, or deleting claims and sources, but core contradiction workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers