Skip to main content
Glama
karlmehta
by karlmehta

TrustModel MCP Server

A Model Context Protocol (MCP) server that lets any AI agent call TrustModel for trust evaluation, safety/bias analysis, and end-to-end agentic trace evaluation.

Works with Claude Code, Cursor, Windsurf, Claude Desktop, and any other MCP-compatible client.

Quick Start

1. Get an API key

Sign up at app.trustmodel.ai and create an API key under Settings → API Keys. Keys have the format tm-{env}-{keyid}_{secret} (e.g. tm-prod-abc12345_0123456789abcdef…).

2. Configure your MCP client

Claude Code

claude mcp add trustmodel \
  --env TRUSTMODEL_API_KEY=tm-prod-xxxx_yyyy \
  -- npx -y @trustmodel/mcp-server

Cursor / Windsurf

Add to your MCP configuration file (.cursor/mcp.json or equivalent):

{
  "mcpServers": {
    "trustmodel": {
      "command": "npx",
      "args": ["-y", "@trustmodel/mcp-server"],
      "env": {
        "TRUSTMODEL_API_KEY": "tm-prod-xxxx_yyyy"
      }
    }
  }
}

Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "trustmodel": {
      "command": "npx",
      "args": ["-y", "@trustmodel/mcp-server"],
      "env": {
        "TRUSTMODEL_API_KEY": "tm-prod-xxxx_yyyy"
      }
    }
  }
}

Related MCP server: maiat-protocol

Environment Variables

Variable

Required

Default

Description

TRUSTMODEL_API_KEY

No*

Your TrustModel API key (tm-{env}-{keyid}_{secret}). *Not needed for the local tools (trustmodel_evaluate_local, trustmodel_govern); required for calibrated cloud tools.

TRUSTMODEL_TRACE_DIR

No

~/.trustmodel-mcp/traces/

Where streaming trace sessions are persisted as append-only JSONL. Sessions survive server restarts via rehydrate-on-read.

TRUSTMODEL_PROFILE

No

default

Tool profile. default exposes only the daily-driver tools; security / advanced / all expose every tool. See Tool profiles.

TRUSTMODEL_ADVANCED_TOOLS

No

false

Set true to expose all tools regardless of TRUSTMODEL_PROFILE.

TRUSTMODEL_AGT_DISCOVERY_ENABLED

No

false

Enables the filesystem-touching Shadow Discovery tools (trustmodel_shadow_discovery_*). When unset, those tools return a skip report. (Only relevant when the advanced profile is on.)

Tool profiles

To stay within the 5–8 tool best-practice budget (more tools degrade an agent's tool selection), the server exposes a small default set and keeps advanced tools opt-in.

Default profile (6 tools) — the daily drivers: trustmodel_evaluate_local · trustmodel_score · trustmodel_trace_start · trustmodel_trace_step · trustmodel_trace_finalize · trustmodel_govern

Advanced — set TRUSTMODEL_PROFILE=security (or advanced / all, or TRUSTMODEL_ADVANCED_TOOLS=true) to additionally expose: trustmodel_evaluate (cloud batch), trustmodel_credits, trustmodel_upload_trace, trustmodel_evaluate_agent, trustmodel_score_agent, trustmodel_mcp_scan_server, trustmodel_shadow_discovery_*, trustmodel_redteam_*, and trustmodel_shadowai_*20 tools total.

claude mcp add trustmodel --env TRUSTMODEL_PROFILE=security -- npx -y @trustmodel/mcp-server

Tools

The server exposes 18 tools across six areas. Use this table to pick the right one; full input/output docs follow below.

Tool

Group

When to use

trustmodel_evaluate

Eval

Kick off a batch trust evaluation of a model (safety, bias, accuracy, …); returns an id to poll.

trustmodel_score

Eval

Fetch status/scores for an evaluation created with trustmodel_evaluate.

trustmodel_credits

Eval

Check remaining API credit balance.

trustmodel_trace_start

Agentic Trace

Open a streaming trace session before an agent starts working.

trustmodel_trace_step

Agentic Trace

Record one reasoning step, tool call, tool result, or response as the agent runs.

trustmodel_trace_finalize

Agentic Trace

Close the session, upload the trace, and auto-create the agent evaluation run.

trustmodel_upload_trace

Agentic Trace

One-shot: PUT a pre-assembled trace JSON when you didn't stream it.

trustmodel_evaluate_agent

Agentic Trace

Create an agentic evaluation run against an already-uploaded trace file_path.

trustmodel_score_agent

Agentic Trace

Fetch scores/grade for an agentic evaluation run.

trustmodel_mcp_scan_server

Security

Security-scan a third-party MCP server's tool list for risky/abusable tools.

trustmodel_shadow_discovery_scan_paths

Shadow Discovery

Scan local filesystem paths for unregistered/shadow AI usage.

trustmodel_shadow_discovery_fingerprint_keys

Shadow Discovery

Detect & fingerprint OpenAI/Anthropic API keys found on disk.

trustmodel_redteam_evaluate

Red Team

Launch an adversarial red-team evaluation against a model/endpoint.

trustmodel_redteam_results

Red Team

Fetch results for a red-team evaluation.

trustmodel_redteam_list_probes

Red Team

List available red-team probes/attack categories.

trustmodel_shadowai_scan

Shadow AI

Start a Shadow AI scan to find unregistered AI use across an environment.

trustmodel_shadowai_results

Shadow AI

Fetch results for a Shadow AI scan.

trustmodel_shadowai_events

Shadow AI

Stream the detection events for a Shadow AI scan.

Shadow Discovery tools (trustmodel_shadow_discovery_*) touch the local filesystem. They are always listed, but return a skip report unless TRUSTMODEL_AGT_DISCOVERY_ENABLED=true is set on the server.

Classic evaluation

trustmodel_evaluate

Create a batch evaluation run against a specified AI model. The backend runs a comprehensive suite (safety, bias, accuracy, hallucination, reasoning, etc.) and returns an id you can poll with trustmodel_score.

Inputs:

  • model_identifier (string, required) — e.g. "gpt-4o", "claude-sonnet-4-5". Discover via GET /sdk/v1/models/.

  • vendor_identifier (string, required) — e.g. "openai", "anthropic", "google".

  • api_key (string, optional) — Vendor API key for BYOK. Omit to use TrustModel's platform key. Do not pass a TrustModel API key here — that goes in the TRUSTMODEL_API_KEY env var.

  • categories (string[], optional) — Category names to evaluate. Only honored when evaluation_type is "Custom" or "Score Only".

  • evaluation_type (string, optional, default "Custom") — One of "Custom", "Score Only", "Comprehensive", "Limited", "Quick Scan".

  • application_type (string, optional, default "generic") — chatbot, knowledge-agent, creation-tool, document-repository, analysis-tool, automation-agent, generic.

  • user_personas (string[], optional, default ["external-customer"]) — Any of external-customer, internal-employee, technical-user, domain-expert, vulnerable-groups, generic.

  • application_description (string, optional).

  • domain_expert_description (string, optional) — When user_personas includes "domain-expert". One of "cross-domain" (default), "medical", "commercial_banking".

  • model_config_name (string, optional) — Display name for this run.

  • template_id (UUID, optional), template_name (string, optional) — Reuse or rename an existing evaluation template.

trustmodel_score

Fetch the detail (status, completion %, scores) for an evaluation created via trustmodel_evaluate.

Inputs:

  • evaluation_id (integer or numeric string, required) — The id returned by trustmodel_evaluate.

trustmodel_credits

Check remaining API credit balance. No inputs.

Agentic trace evaluation

TrustModel evaluates AI agents by consuming their execution trace (thoughts, tool calls, tool results, responses) and scoring them across 4 categories: tool_use_accuracy, reasoning_quality, goal_completion, safety_compliance.

There are two ways to submit a trace — streaming (preferred for live agents) and one-shot (when you have a pre-assembled trace).

Streaming capture (preferred)

Open a session, record steps as the agent works, finalize at the end. Finalize uploads to cloud storage and auto-creates the evaluation run.

trustmodel_trace_start

Open a new trace session.

Inputs:

  • goal (string, required) — What the agent is trying to achieve.

  • name (string, required) — Display name for the evaluation run.

  • agent_framework (string, required) — e.g. "langchain", "crewai", "claude-code", "custom".

  • agent_model (string, optional) — e.g. "gpt-4o", "claude-sonnet-4-5".

  • user_query (string, optional) — Original user prompt, if different from goal.

  • expected_outcome (string, optional).

  • metadata (object, optional) — Free-form passthrough metadata.

Returns: { trace_id, started_at }.

trustmodel_trace_step

Append a single step to the active session. Call once per reasoning step, tool call, tool result, or user-facing response.

Inputs:

  • trace_id (string, required) — From trustmodel_trace_start.

  • step_type (enum, required) — One of thought, think, tool_call, tool_result, observation, decision, error, human_input, response, final_answer.

  • content (string, required) — Human-readable text for the step. Empty string allowed.

  • tool_name (string, optional), tool_args (object, optional) — Use with tool_call.

  • tool_result (string or object, optional), tool_call_success (boolean, optional) — Use with tool_result.

  • model_used (string, optional), input_tokens / output_tokens (int, optional), duration_ms (int, optional), timestamp (ISO 8601, optional).

Returns: { trace_id, step_number, steps_recorded }. step_number is auto-assigned.

trustmodel_trace_finalize

Close the session, upload the trace, and auto-create the evaluation run.

Inputs:

  • trace_id (string, required).

  • final_response (string, optional), actual_outcome (string, optional), goal_achieved (boolean, optional), success (boolean, optional), total_duration_ms (int, optional — computed from step durations if omitted).

  • goal / name / agent_framework / agent_model / expected_outcome (all optional) — Override start-time metadata if the agent learned more at runtime.

Returns (happy path): { trace_id, file_path, expires_in, step_count, evaluation_run_id, evaluation_status, evaluation_message }.

Returns (evaluate failed after successful upload): { trace_id, file_path, expires_in, step_count, evaluation_error }. You can retry evaluation without re-uploading via trustmodel_evaluate_agent({ file_path, goal, name, agent_framework }).

One-shot (pre-assembled trace)

trustmodel_upload_trace

PUT an already-built trace JSON object to cloud storage. Returns a file_path you then pass to trustmodel_evaluate_agent.

Inputs:

  • trace (object, required) — Complete AgentTrace JSON.

Returns: { file_path, expires_in }.

trustmodel_evaluate_agent

Create an agentic evaluation run against a previously-uploaded trace.

Inputs:

  • file_path (string, required) — From trustmodel_upload_trace or trustmodel_trace_finalize.

  • goal / name / agent_framework (strings, required).

  • agent_model / expected_outcome / actual_outcome (string, optional).

  • goal_achieved (boolean, optional).

Returns: { evaluation_run_id, status, message }.

trustmodel_score_agent

Fetch the detail (scores, grade, summary) for an agentic evaluation run.

Inputs:

  • evaluation_run_id (integer or numeric string, required).

Security

trustmodel_mcp_scan_server

Run AGT's MCP security scanner over a third-party MCP server's tool list to detect tool poisoning, typosquatting, hidden instructions, and rug-pull patterns. Static analysis — no LLM, no network, deterministic. Intended as a pre-registration check before an agent enables a third-party MCP server.

Inputs:

  • tools (array, required) — The third-party server's tool definitions (name, description, optional input schema).

Returns: A ScanReport with overall status (ok / warning / blocked), worst severity seen, and per-tool findings.

Shadow Discovery

Filesystem-touching. Returns a skip report unless TRUSTMODEL_AGT_DISCOVERY_ENABLED=true.

trustmodel_shadow_discovery_scan_paths

Walk local filesystem paths and detect agents in config files (agentmesh.yaml, crewai.yaml, mcp.json, claude_desktop_config.json, …), Dockerfiles/compose, and optionally source. Reconciles detections against a caller-supplied registry and returns the unregistered ones as shadow agents with AGT risk scoring + remediation. Static analysis only.

Inputs:

  • paths (string[], required) — Local paths to scan.

  • registry (array, optional) — Known agents (did, name, owner, …) to reconcile against.

trustmodel_shadow_discovery_fingerprint_keys

Fingerprint a batch of provider API keys (OpenAI / Anthropic) by calling each provider's read-only models endpoint — no inference is run. A reachable key is flagged high-risk (possible credential exposure); a revoked key is informational. Key material is never logged or returned — only a provider:****last4 fingerprint.

Inputs:

  • keys (string[], required) — API keys to probe.

Red Team

trustmodel_redteam_evaluate

Run an adversarial red-team evaluation against an OpenAI-compatible target. Probes cover 8 attack categories aligned with OWASP LLM Top 10 (2025) — prompt injection, jailbreak, PII extraction, bias elicitation, hallucination triggers, and more.

Inputs:

  • model_name (string, required) — e.g. "openai/gpt-oss-20b:free".

  • api_key (string, required), api_base_url (string, required) — e.g. "https://openrouter.ai/api/v1".

  • categories (string[], optional), severities (string[], optional), metadata (object, optional).

Returns: The evaluation id — poll with trustmodel_redteam_results.

trustmodel_redteam_results

Get status, progress, overall score, per-category breakdown, and severity buckets for a red-team evaluation. Partial progress while running, full summary when completed.

Inputs:

  • evaluation_id (integer or numeric string, required).

trustmodel_redteam_list_probes

Browse the red-team probe library (metadata only — payloads are not exposed). Filter by category, severity, or tag.

Inputs:

  • category (string, optional), severity (string, optional), tag (string, optional).

Shadow AI

trustmodel_shadowai_scan

Kick off a Shadow AI Discovery scan against GitHub orgs/repos and (optionally) GCP projects. Detects unregistered AI by sniffing source for LLM SDK usage (15 libraries) and listing Vertex AI endpoints, Cloud Run services with AI env vars, and BigQuery ML models.

Inputs:

  • github_orgs (string[], optional), github_repos (string[] of owner/name, optional), gcp_projects (string[], optional), metadata (object, optional).

Returns: The scan id — poll with trustmodel_shadowai_results, page discoveries with trustmodel_shadowai_events.

trustmodel_shadowai_results

Get status, scan filter, total event count, and discoveries-by-system-type / by-source aggregates for a Shadow AI scan.

Inputs:

  • scan_id (integer or numeric string, required).

trustmodel_shadowai_events

Page through individual discovery events — each is one discovered AI system with system_type, discovered_via, evidence, and a stable system_id fingerprint. Filter by system_type or source.

Inputs:

  • scan_id (integer or numeric string, required), plus optional system_type / source filters and pagination.

Example — streaming agent capture

trustmodel_trace_start({
  goal: "Book a flight from NYC to SF",
  name: "Flight booking agent",
  agent_framework: "claude-code",
  agent_model: "claude-sonnet-4-5"
})
→ { trace_id: "trace-abc123def456", started_at: "..." }

trustmodel_trace_step({ trace_id, step_type: "thought",
  content: "Need to search flights first." })
→ { step_number: 1, steps_recorded: 1 }

trustmodel_trace_step({ trace_id, step_type: "tool_call",
  content: "Searching flights",
  tool_name: "flight_api.search",
  tool_args: { from: "NYC", to: "SFO", date: "2026-04-20" },
  duration_ms: 500 })
→ { step_number: 2, steps_recorded: 2 }

trustmodel_trace_step({ trace_id, step_type: "tool_result",
  content: "Found UA123 at $350",
  tool_name: "flight_api.search",
  tool_result: { flight: "UA123", price: 350 },
  tool_call_success: true })
→ { step_number: 3, steps_recorded: 3 }

trustmodel_trace_step({ trace_id, step_type: "final_answer",
  content: "Booked UA123 for $350." })
→ { step_number: 4, steps_recorded: 4 }

trustmodel_trace_finalize({ trace_id,
  final_response: "Booked UA123 for $350.",
  goal_achieved: true })
→ {
    file_path: "agent-traces/<org>/<ts>_<uuid>.json",
    step_count: 4,
    evaluation_run_id: 42,
    evaluation_status: "processing"
  }

trustmodel_score_agent({ evaluation_run_id: 42 })
→ { status: "processing" | "completed", scores: [...], grade, overall_score, ... }

Example — realistic agentic flow

Below is a real-world scenario: you ask Claude Code to perform a task while instrumenting itself with TrustModel trace capture. At the end, TrustModel scores the agent across tool-use accuracy, reasoning quality, goal completion, and safety compliance — giving you a trust report before you ship the agent to production.

Scenario: research agent

Paste this prompt into Claude Code (or any MCP client with TrustModel connected):

Research the pros and cons of using WebSockets vs Server-Sent Events for
real-time notifications in a web app, while recording a TrustModel trace.

Before you start, call trustmodel_trace_start with:
  goal: "Research WebSockets vs SSE for real-time notifications"
  name: "Research agent"
  agent_framework: "claude-code"

As you work, record a trustmodel_trace_step for each action:
  - When you reason about the topic → step_type: "thought"
  - When you search or fetch info  → step_type: "tool_call" with tool_name
  - After getting results back      → step_type: "tool_result"
  - When you draw a conclusion      → step_type: "observation"

When done, call trustmodel_trace_finalize with your recommendation as
final_response and goal_achieved: true.

Print the evaluation_run_id so I can check the trust report.

What happens

The agent researches the topic while self-tracing every reasoning step, search, and conclusion. A typical session looks like:

trustmodel_trace_start({ goal: "Research WebSockets vs SSE...", name: "Research agent", ... })
→ { trace_id: "trace-9a2f71c3b84e" }

trustmodel_trace_step({ step_type: "thought", content: "I need to compare protocol differences, browser support, scaling cost, and typical use cases." })
→ { step_number: 1 }

trustmodel_trace_step({ step_type: "tool_call", tool_name: "WebSearch", tool_args: { query: "websockets vs server-sent events performance comparison" } })
→ { step_number: 2 }

trustmodel_trace_step({ step_type: "tool_result", content: "Found 3 relevant articles comparing latency, connection limits, and HTTP/2 multiplexing..." })
→ { step_number: 3 }

trustmodel_trace_step({ step_type: "observation", content: "SSE is simpler for server-to-client push and works over HTTP/2, but WebSockets are needed for bidirectional communication." })
→ { step_number: 4 }

... (more research, comparisons, trade-off analysis) ...

trustmodel_trace_step({ step_type: "final_answer", content: "Recommendation: use SSE for one-way notifications, WebSockets only if you need client-to-server messaging." })
→ { step_number: 10 }

trustmodel_trace_finalize({
  trace_id: "trace-9a2f71c3b84e",
  final_response: "Recommendation: use SSE for one-way notifications...",
  goal_achieved: true
})
→ {
    file_path: "agent-traces/<org>/<timestamp>.json",
    evaluation_run_id: 42,
    evaluation_status: "processing"
  }

The evaluation result

Poll trustmodel_score_agent({ evaluation_run_id: 42 }) after 1-2 minutes. TrustModel returns:

{
  "status": "completed",
  "overall_score": 7.6,
  "grade": "C",
  "scores": [
    { "category": "tool_use_accuracy",  "score": 100.0 },
    { "category": "reasoning_quality",  "score": 60.0  },
    { "category": "goal_completion",    "score": 70.0  },
    { "category": "safety_compliance",  "score": 80.0  }
  ],
  "summary": {
    "trust_dimensions": {
      "safety": 9.0, "fairness": 7.0, "privacy": 10.0,
      "transparency": 6.0, "robustness": 10.0, "accountability": 10.0
    }
  }
}

A PDF/HTML report with detailed findings is also generated and accessible from the TrustModel dashboard.

Why this matters

Every AI agent making decisions — reviewing code, processing claims, screening candidates — needs a trust baseline before going to production. This flow gives you that baseline with zero changes to your agent's core logic: just wrap it with trace_start, record steps as it works, and trace_finalize when it's done. TrustModel handles the rest.

Trace persistence

Active trace sessions are written as append-only JSONL at $TRUSTMODEL_TRACE_DIR/<trace_id>.jsonl (default ~/.trustmodel-mcp/traces/). Disk is the source of truth; the in-memory map is a cache that rehydrates lazily — so sessions survive an MCP server restart. On successful trustmodel_trace_finalize the local file is deleted (the trace is already in cloud storage).

Sessions idle more than 30 minutes are auto-evicted. Maximum 100 concurrent sessions per server.

Dashboard

Reports, evaluation history, and detailed PDF/HTML findings are available in the TrustModel dashboard at app.trustmodel.ai.

Troubleshooting

Symptom

Fix

Server exits immediately / TRUSTMODEL_API_KEY error

Set a valid key (tm-{env}-{keyid}_{secret}) in your client's env block. Get one at app.trustmodel.aiSettings → API Keys.

trustmodel_shadow_discovery_* returns a skip report

Set TRUSTMODEL_AGT_DISCOVERY_ENABLED=true on the server. These tools touch the local filesystem and are off by default.

npx can't find the package

Ensure Node ≥ 20.19 and run npx -y @trustmodel/mcp-server so the latest version is fetched.

Tool not listed by the client

Restart the MCP client after editing its config; confirm the command/args match the examples above.

TrustModel open-source

This MCP server is part of the TrustModel OSS toolkit:

  • CLI + SDKtrustmodel on PyPI: local trust scoring, governance, and the cloud client. pip install trustmodel.

  • MCP server (this repo)@trustmodel/mcp-server on npm: exposes TrustModel to any MCP client.

License

MIT

Available Tools

6 tools
trustmodel_evaluate_localA

Score AI output locally across the 10 TrustModel dimensions (safety, fairness, accuracy, privacy, transparency, robustness, accountability, explainability, compliance, reliability) and roll it into a 0-100 TrustScore. NO API key required — runs on this machine with a transparent heuristic judge. Returns trust_score, grade, per-dimension scores, and violations. Local scores are uncalibrated; use trustmodel_evaluate (cloud, needs a free TRUSTMODEL_API_KEY) for a calibrated, audit-ready score.

ParametersJSON Schema
NameRequiredDescriptionDefault
outputYesThe AI output text to score.
contextNoOptional context the output was produced in (improves judging).

TDQS

A5/5.0
Behavior5/5

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

Despite no annotations, the description fully discloses behavioral traits: it runs locally, requires no API key, uses a heuristic judge, and notes that local scores are uncalibrated. No contradictions.

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

Conciseness5/5

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

Description is concise with three focused sentences. It front-loads the purpose, then adds key details and comparison. No wasted words.

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

Completeness5/5

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

Given the tool's simplicity (2 params, no output schema), the description covers everything needed: what it does, return fields, and when to use alternatives. No gaps.

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

Parameters5/5

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

Schema coverage is 100%, but the description adds value by explaining that 'context' improves judging, which is not in the schema description. Params are clearly described.

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

Purpose5/5

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

The description clearly states it scores AI output locally across 10 dimensions and produces a TrustScore. It distinguishes itself from sibling tool 'trustmodel_evaluate' by specifying the local vs cloud nature.

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

Usage Guidelines5/5

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

The description explicitly states when to use this tool (local, no API key) and when to use the alternative (cloud, for calibrated scores). Provides clear usage context.

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

trustmodel_governA

Check text against a governance policy pack and decide allow/block, locally. NO API key required. policy is a built-in pack id — eu-ai-act (default), nist-ai-rmf, nyc-ll144, or owasp-llm. Returns allowed/blocked, the policy id, and the list of rule violations (pattern and dimension rules). Use before letting AI output reach a user or another tool.

ParametersJSON Schema
NameRequiredDescriptionDefault
textYesThe text/output to check against the policy.
policyNoPolicy pack id: eu-ai-act (default), nist-ai-rmf, nyc-ll144, owasp-llm.
contextNoOptional context the output was produced in.

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that the tool runs locally, returns allowed/blocked status, policy id, and rule violations. It does not explicitly state whether the tool has side effects (e.g., logging or state changes), so it misses full transparency.

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 two sentences long, front-loads the core purpose and unique benefit (local, no API key), and wastes no words. Perfectly concise.

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

Completeness5/5

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

For a tool with 3 parameters and no output schema, the description covers purpose, parameter meanings, return structure, and usage context. It is self-contained and leaves no obvious 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 descriptions cover 100% of parameters, baseline is 3. The tool description reinforces the policy pack list and clarifies the 'context' parameter, but adds limited new semantic information beyond the schema.

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

Purpose5/5

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

The description clearly states the action ('Check text'), resource ('against a governance policy pack'), and result ('decide allow/block'). It also differentiates from siblings by emphasizing 'locally' and 'NO API key required'.

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

Usage Guidelines4/5

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

The description explicitly tells when to use: 'Use before letting AI output reach a user or another tool.' It also notes 'NO API key required' as a key trait. However, it does not explicitly mention when not to use or compare to sibling tools.

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

trustmodel_scoreA

Get the current trust score / detail for a previous LLM evaluation created via trustmodel_evaluate. Takes an integer evaluation_id and returns the evaluation detail including scores.

ParametersJSON Schema
NameRequiredDescriptionDefault
evaluation_idYesInteger evaluation ID returned from a previous trustmodel_evaluate call.

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 full burden. It describes a read operation ('Get') with no side effects mentioned, which is appropriate. However, it lacks details on idempotency, rate limits, or potential errors. The description is clear but could be more transparent about behavioral traits.

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 two sentences with no redundancy: first states purpose, second covers input and output. Every word contributes value, and it is front-loaded. Very concise without being terse.

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 retrieval tool with one parameter and no output schema, the description is nearly complete. It explains purpose, input, and general output. It could mention possible error conditions or return format more precisely, but given the simplicity, it is adequate.

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% for the single parameter. The tool description adds context that the evaluation_id comes from a previous trustmodel_evaluate call, but this is already in the parameter's schema description. Thus, the description adds minimal extra meaning beyond the schema, fitting the baseline of 3.

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

Purpose5/5

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

The description clearly states the tool retrieves a trust score/detail for a previous evaluation, with specific verb 'Get' and resource 'trust score/detail'. It distinguishes from sibling tools like trustmodel_trace_* and trustmodel_evaluate_local by focusing on retrieval of past evaluation results.

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

Usage Guidelines3/5

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

The description implies use after calling trustmodel_evaluate by specifying it is for a previous evaluation created via that tool, but it does not explicitly state when to use this over alternatives nor provide exclusions. Guidance is adequate but minimal.

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

trustmodel_trace_finalizeA

Close an active trace session, serialize the captured steps, upload to TrustModel cloud storage, and auto-create an agentic evaluation run. Returns both a file_path (for record-keeping / retry) and an evaluation_run_id that can be polled with trustmodel_score_agent.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalNoOverride `goal` if the agent learned more at runtime.
nameNoOverride `name` provided at trace_start.
successNoWhether the run is considered successful overall.
trace_idYesTrace handle returned by trustmodel_trace_start.
agent_modelNoOverride `agent_model` provided at trace_start.
goal_achievedNoWhether the agent achieved its goal.
actual_outcomeNoOptional description of what actually happened.
final_responseNoThe final user-facing answer from the agent.
agent_frameworkNoOverride `agent_framework` provided at trace_start.
expected_outcomeNoOverride `expected_outcome` provided at trace_start.
total_duration_msNoTotal execution time in ms. If omitted, computed from step durations.

TDQS

A3.8/5.0
Behavior3/5

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

The description states that the active trace session is closed and an evaluation run is auto-created, implying irreversibility. However, it does not disclose side effects like whether data can be overwritten, any rate limits, or whether finalization can be repeated. Since no annotations are provided, the description should be more thorough.

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 sentence that front-loads the core action and lists subsequent steps efficiently. No wasted words 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?

Given the complexity (11 parameters, no output schema, no annotations), the description covers the main workflow and return values. It mentions how to use evaluation_run_id. However, it could be more complete by explicitly stating prerequisites (e.g., trace must be started) and explaining what 'agentic evaluation run' means. The schema handles parameter details well.

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?

The input schema has 100% description coverage, so each parameter is already explained. The tool description does not add further meaning to the parameters but provides context for return values (file_path and evaluation_run_id). Per guidelines, baseline is 3 when schema coverage is high.

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 uses specific verbs (close, serialize, upload, auto-create) and clearly identifies the resource (active trace session). It distinguishes itself from sibling tools like trustmodel_trace_start (opens session) and trustmodel_trace_step (logs steps), making its purpose 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?

The description implies the tool should be used after starting a trace (since it closes an active session) and mentions polling with trustmodel_score_agent, but it does not provide explicit guidance on when to choose this tool over alternatives like trustmodel_evaluate_local or trustmodel_govern. Lacks explicit usage conditions.

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

trustmodel_trace_startA

Open a new agent-trace capture session. Returns a trace_id that must be passed to every trustmodel_trace_step and the final trustmodel_trace_finalize. Capture steps (thoughts, tool calls, tool results, responses) as your agent executes; finalize when done to upload + auto-create an evaluation run.

ParametersJSON Schema
NameRequiredDescriptionDefault
goalYesWhat the agent is trying to achieve. Required; feeds the evaluation run.
nameYesDisplay name for the evaluation run (shown in TrustModel UI).
metadataNoFree-form passthrough metadata stored inside the trace file.
user_queryNoOriginal user prompt that triggered the run, if different from `goal`.
agent_modelNoUnderlying LLM the agent is using (e.g. 'gpt-4o', 'claude-sonnet-4-5').
agent_frameworkYesFramework the agent is built with (e.g. 'langchain', 'crewai', 'claude-code', 'custom').
expected_outcomeNoOptional description of the expected outcome.

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the tool returns a trace_id and outlines the capture session lifecycle, though it does not mention rate limits, errors, or auth needs.

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?

Two concise sentences with no wasted words, front-loaded with the primary action and outcome.

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?

The description covers the overall flow and return value, but without an output schema, some details about the trace_id are implied rather than explicit. Given the complexity, it is fairly 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 coverage is 100%, so baseline 3 is appropriate. The description does not add meaning beyond the schema's detailed parameter descriptions.

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

Purpose5/5

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

The description clearly states the tool opens a new agent-trace capture session and returns a trace_id, distinguishing it from sibling tools like trustmodel_trace_step and trustmodel_trace_finalize.

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

Usage Guidelines5/5

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

The description explains the required sequence: use this tool to start, pass the trace_id to step and finalize, and finalize to upload. This provides clear context for when to use this tool versus alternatives.

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

trustmodel_trace_stepA

Record a single step in an active trace session. Call once per reasoning step, tool call, tool result, or user-facing response. Step numbers are auto-assigned (1-based). Requires a trace_id from trustmodel_trace_start.

ParametersJSON Schema
NameRequiredDescriptionDefault
contentYesHuman-readable text for this step. Empty string allowed.
trace_idYesTrace handle returned by trustmodel_trace_start.
step_typeYesKind of step: 'thought'/'think' (reasoning), 'tool_call', 'tool_result', 'observation', 'decision', 'error', 'human_input', 'response'/'final_answer' (user-facing output).
timestampNoISO 8601 timestamp. Defaults to the current time if omitted.
tool_argsNoArguments passed to the tool (use with step_type='tool_call').
tool_nameNoName of the tool invoked (use with step_type='tool_call' or 'tool_result').
model_usedNoModel used for this step's reasoning.
duration_msNoHow long this step took, in milliseconds.
tool_resultNoResult returned by the tool (use with step_type='tool_result').
input_tokensNoInput token count for this step.
output_tokensNoOutput token count for this step.
tool_call_successNoWhether the tool call succeeded (use with step_type='tool_result').

TDQS

A3.9/5.0
Behavior3/5

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

Discloses auto-assigned step numbers (1-based) and default timestamp. No annotations provided, so description carries burden; however, it does not detail error handling, side effects, or behavior for invalid trace_id.

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?

Three concise sentences, front-loaded with purpose. Every sentence adds value without redundancy.

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?

Covers main usage and required parameter, but does not explain return value or error scenarios. Given high parameter count (12) and no output schema, additional context about success/failure would improve completeness.

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 parameters have descriptions. The description adds minimal extra meaning beyond the schema (e.g., step number auto-assignment). Baseline 3 is 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?

Description clearly states verb 'Record a single step' and resource 'active trace session'. Distinguishes from siblings (trace_start, trace_finalize) by specifying it is for step recording during an active session.

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

Usage Guidelines4/5

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

Explicitly describes when to call ('once per reasoning step, tool call, tool result, or user-facing response') and prerequisite ('Requires a trace_id from trustmodel_trace_start'). Lacks explicit when-not-to-use or alternatives, but context is sufficient.

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. 6 tool updatesv0.2.0
    • First observedtrustmodel_evaluate_local
    • First observedtrustmodel_govern
    • First observedtrustmodel_score
    • First observedtrustmodel_trace_finalize
    • First observedtrustmodel_trace_start
    • First observedtrustmodel_trace_step

TDQS

A4.1/5.0

Scored across 6 tools

Disambiguation5/5

Each tool serves a clear, distinct purpose: trace capture (start/step/finalize), local evaluation, governance check, and retrieval of cloud evaluation results. There is no overlapping functionality; a tool for one task cannot be easily confused with another.

Naming Consistency5/5

All tools follow a consistent 'trustmodel_verb[_modifier]' pattern using snake_case. Verbs like score, trace_start, trace_step, trace_finalize, evaluate_local, and govern are descriptive and follow a predictable convention.

Tool Count5/5

With 6 tools covering trace capture (3), evaluation (2 including retrieval), and governance (1), the count is well-scoped for an agentic evaluation and governance server. No tool is extraneous, and the set is not too sparse or bloated.

Completeness2/5

The set has notable gaps: trustmodel_trace_finalize references trustmodel_score_agent which does not exist, and trustmodel_score expects an evaluation_id from a missing trustmodel_evaluate tool. The cloud evaluation path is incomplete, leaving agents unable to retrieve scores from trace evaluations or perform cloud evaluations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers