{
  "markdown": "# TrustModel MCP Server\n\nA [Model Context Protocol](https://modelcontextprotocol.io/) (MCP) server that lets any AI agent call [TrustModel](https://trustmodel.ai) for trust evaluation, safety/bias analysis, and end-to-end agentic trace evaluation.\n\nWorks with Claude Code, Cursor, Windsurf, Claude Desktop, and any other MCP-compatible client.\n\n## Quick Start\n\n### 1. Get an API key\n\nSign up at [app.trustmodel.ai](https://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…`).\n\n### 2. Configure your MCP client\n\n#### Claude Code\n\n```bash\nclaude mcp add trustmodel \\\n  --env TRUSTMODEL_API_KEY=tm-prod-xxxx_yyyy \\\n  -- npx -y @trustmodel/mcp-server\n```\n\n#### Cursor / Windsurf\n\nAdd to your MCP configuration file (`.cursor/mcp.json` or equivalent):\n\n```json\n{\n  \"mcpServers\": {\n    \"trustmodel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@trustmodel/mcp-server\"],\n      \"env\": {\n        \"TRUSTMODEL_API_KEY\": \"tm-prod-xxxx_yyyy\"\n      }\n    }\n  }\n}\n```\n\n#### Claude Desktop\n\nAdd to `~/Library/Application Support/Claude/claude_desktop_config.json`:\n\n```json\n{\n  \"mcpServers\": {\n    \"trustmodel\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"@trustmodel/mcp-server\"],\n      \"env\": {\n        \"TRUSTMODEL_API_KEY\": \"tm-prod-xxxx_yyyy\"\n      }\n    }\n  }\n}\n```\n\n## Environment Variables\n\n| Variable | Required | Default | Description |\n|---|---|---|---|\n| `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. |\n| `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. |\n| `TRUSTMODEL_PROFILE` | No | `default` | Tool profile. `default` exposes only the daily-driver tools; `security` / `advanced` / `all` expose every tool. See **Tool profiles**. |\n| `TRUSTMODEL_ADVANCED_TOOLS` | No | `false` | Set `true` to expose all tools regardless of `TRUSTMODEL_PROFILE`. |\n| `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.) |\n\n## Tool profiles\n\nTo 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.\n\n**Default profile (6 tools)** — the daily drivers:\n`trustmodel_evaluate_local` · `trustmodel_score` · `trustmodel_trace_start` · `trustmodel_trace_step` · `trustmodel_trace_finalize` · `trustmodel_govern`\n\n**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**.\n\n```bash\nclaude mcp add trustmodel --env TRUSTMODEL_PROFILE=security -- npx -y @trustmodel/mcp-server\n```\n\n## Tools\n\nThe server exposes **18 tools** across six areas. Use this table to pick the right one; full input/output docs follow below.\n\n| Tool | Group | When to use |\n|---|---|---|\n| `trustmodel_evaluate` | Eval | Kick off a batch trust evaluation of a model (safety, bias, accuracy, …); returns an `id` to poll. |\n| `trustmodel_score` | Eval | Fetch status/scores for an evaluation created with `trustmodel_evaluate`. |\n| `trustmodel_credits` | Eval | Check remaining API credit balance. |\n| `trustmodel_trace_start` | Agentic Trace | Open a streaming trace session before an agent starts working. |\n| `trustmodel_trace_step` | Agentic Trace | Record one reasoning step, tool call, tool result, or response as the agent runs. |\n| `trustmodel_trace_finalize` | Agentic Trace | Close the session, upload the trace, and auto-create the agent evaluation run. |\n| `trustmodel_upload_trace` | Agentic Trace | One-shot: PUT a pre-assembled trace JSON when you didn't stream it. |\n| `trustmodel_evaluate_agent` | Agentic Trace | Create an agentic evaluation run against an already-uploaded trace `file_path`. |\n| `trustmodel_score_agent` | Agentic Trace | Fetch scores/grade for an agentic evaluation run. |\n| `trustmodel_mcp_scan_server` | Security | Security-scan a third-party MCP server's tool list for risky/abusable tools. |\n| `trustmodel_shadow_discovery_scan_paths` | Shadow Discovery | Scan local filesystem paths for unregistered/shadow AI usage. |\n| `trustmodel_shadow_discovery_fingerprint_keys` | Shadow Discovery | Detect & fingerprint OpenAI/Anthropic API keys found on disk. |\n| `trustmodel_redteam_evaluate` | Red Team | Launch an adversarial red-team evaluation against a model/endpoint. |\n| `trustmodel_redteam_results` | Red Team | Fetch results for a red-team evaluation. |\n| `trustmodel_redteam_list_probes` | Red Team | List available red-team probes/attack categories. |\n| `trustmodel_shadowai_scan` | Shadow AI | Start a Shadow AI scan to find unregistered AI use across an environment. |\n| `trustmodel_shadowai_results` | Shadow AI | Fetch results for a Shadow AI scan. |\n| `trustmodel_shadowai_events` | Shadow AI | Stream the detection events for a Shadow AI scan. |\n\n> **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.\n\n### Classic evaluation\n\n#### `trustmodel_evaluate`\n\nCreate 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`.\n\n**Inputs:**\n- `model_identifier` (string, required) — e.g. `\"gpt-4o\"`, `\"claude-sonnet-4-5\"`. Discover via `GET /sdk/v1/models/`.\n- `vendor_identifier` (string, required) — e.g. `\"openai\"`, `\"anthropic\"`, `\"google\"`.\n- `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.\n- `categories` (string[], optional) — Category names to evaluate. Only honored when `evaluation_type` is `\"Custom\"` or `\"Score Only\"`.\n- `evaluation_type` (string, optional, default `\"Custom\"`) — One of `\"Custom\"`, `\"Score Only\"`, `\"Comprehensive\"`, `\"Limited\"`, `\"Quick Scan\"`.\n- `application_type` (string, optional, default `\"generic\"`) — `chatbot`, `knowledge-agent`, `creation-tool`, `document-repository`, `analysis-tool`, `automation-agent`, `generic`.\n- `user_personas` (string[], optional, default `[\"external-customer\"]`) — Any of `external-customer`, `internal-employee`, `technical-user`, `domain-expert`, `vulnerable-groups`, `generic`.\n- `application_description` (string, optional).\n- `domain_expert_description` (string, optional) — When `user_personas` includes `\"domain-expert\"`. One of `\"cross-domain\"` (default), `\"medical\"`, `\"commercial_banking\"`.\n- `model_config_name` (string, optional) — Display name for this run.\n- `template_id` (UUID, optional), `template_name` (string, optional) — Reuse or rename an existing evaluation template.\n\n#### `trustmodel_score`\n\nFetch the detail (status, completion %, scores) for an evaluation created via `trustmodel_evaluate`.\n\n**Inputs:**\n- `evaluation_id` (integer or numeric string, required) — The `id` returned by `trustmodel_evaluate`.\n\n#### `trustmodel_credits`\n\nCheck remaining API credit balance. No inputs.\n\n### Agentic trace evaluation\n\nTrustModel 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`.\n\nThere are two ways to submit a trace — **streaming** (preferred for live agents) and **one-shot** (when you have a pre-assembled trace).\n\n#### Streaming capture (preferred)\n\nOpen a session, record steps as the agent works, finalize at the end. Finalize uploads to cloud storage and auto-creates the evaluation run.\n\n##### `trustmodel_trace_start`\n\nOpen a new trace session.\n\n**Inputs:**\n- `goal` (string, required) — What the agent is trying to achieve.\n- `name` (string, required) — Display name for the evaluation run.\n- `agent_framework` (string, required) — e.g. `\"langchain\"`, `\"crewai\"`, `\"claude-code\"`, `\"custom\"`.\n- `agent_model` (string, optional) — e.g. `\"gpt-4o\"`, `\"claude-sonnet-4-5\"`.\n- `user_query` (string, optional) — Original user prompt, if different from `goal`.\n- `expected_outcome` (string, optional).\n- `metadata` (object, optional) — Free-form passthrough metadata.\n\n**Returns:** `{ trace_id, started_at }`.\n\n##### `trustmodel_trace_step`\n\nAppend a single step to the active session. Call once per reasoning step, tool call, tool result, or user-facing response.\n\n**Inputs:**\n- `trace_id` (string, required) — From `trustmodel_trace_start`.\n- `step_type` (enum, required) — One of `thought`, `think`, `tool_call`, `tool_result`, `observation`, `decision`, `error`, `human_input`, `response`, `final_answer`.\n- `content` (string, required) — Human-readable text for the step. Empty string allowed.\n- `tool_name` (string, optional), `tool_args` (object, optional) — Use with `tool_call`.\n- `tool_result` (string or object, optional), `tool_call_success` (boolean, optional) — Use with `tool_result`.\n- `model_used` (string, optional), `input_tokens` / `output_tokens` (int, optional), `duration_ms` (int, optional), `timestamp` (ISO 8601, optional).\n\n**Returns:** `{ trace_id, step_number, steps_recorded }`. `step_number` is auto-assigned.\n\n##### `trustmodel_trace_finalize`\n\nClose the session, upload the trace, and auto-create the evaluation run.\n\n**Inputs:**\n- `trace_id` (string, required).\n- `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).\n- `goal` / `name` / `agent_framework` / `agent_model` / `expected_outcome` (all optional) — Override start-time metadata if the agent learned more at runtime.\n\n**Returns (happy path):** `{ trace_id, file_path, expires_in, step_count, evaluation_run_id, evaluation_status, evaluation_message }`.\n\n**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 })`.\n\n#### One-shot (pre-assembled trace)\n\n##### `trustmodel_upload_trace`\n\nPUT an already-built trace JSON object to cloud storage. Returns a `file_path` you then pass to `trustmodel_evaluate_agent`.\n\n**Inputs:**\n- `trace` (object, required) — Complete `AgentTrace` JSON.\n\n**Returns:** `{ file_path, expires_in }`.\n\n##### `trustmodel_evaluate_agent`\n\nCreate an agentic evaluation run against a previously-uploaded trace.\n\n**Inputs:**\n- `file_path` (string, required) — From `trustmodel_upload_trace` or `trustmodel_trace_finalize`.\n- `goal` / `name` / `agent_framework` (strings, required).\n- `agent_model` / `expected_outcome` / `actual_outcome` (string, optional).\n- `goal_achieved` (boolean, optional).\n\n**Returns:** `{ evaluation_run_id, status, message }`.\n\n##### `trustmodel_score_agent`\n\nFetch the detail (scores, grade, summary) for an agentic evaluation run.\n\n**Inputs:**\n- `evaluation_run_id` (integer or numeric string, required).\n\n### Security\n\n#### `trustmodel_mcp_scan_server`\n\nRun 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.\n\n**Inputs:**\n- `tools` (array, required) — The third-party server's tool definitions (`name`, `description`, optional input schema).\n\n**Returns:** A `ScanReport` with overall status (`ok` / `warning` / `blocked`), worst severity seen, and per-tool findings.\n\n### Shadow Discovery\n\n> Filesystem-touching. Returns a skip report unless `TRUSTMODEL_AGT_DISCOVERY_ENABLED=true`.\n\n#### `trustmodel_shadow_discovery_scan_paths`\n\nWalk 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.\n\n**Inputs:**\n- `paths` (string[], required) — Local paths to scan.\n- `registry` (array, optional) — Known agents (`did`, `name`, `owner`, …) to reconcile against.\n\n#### `trustmodel_shadow_discovery_fingerprint_keys`\n\nFingerprint 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.\n\n**Inputs:**\n- `keys` (string[], required) — API keys to probe.\n\n### Red Team\n\n#### `trustmodel_redteam_evaluate`\n\nRun 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.\n\n**Inputs:**\n- `model_name` (string, required) — e.g. `\"openai/gpt-oss-20b:free\"`.\n- `api_key` (string, required), `api_base_url` (string, required) — e.g. `\"https://openrouter.ai/api/v1\"`.\n- `categories` (string[], optional), `severities` (string[], optional), `metadata` (object, optional).\n\n**Returns:** The evaluation `id` — poll with `trustmodel_redteam_results`.\n\n#### `trustmodel_redteam_results`\n\nGet status, progress, overall score, per-category breakdown, and severity buckets for a red-team evaluation. Partial progress while running, full summary when completed.\n\n**Inputs:**\n- `evaluation_id` (integer or numeric string, required).\n\n#### `trustmodel_redteam_list_probes`\n\nBrowse the red-team probe library (metadata only — payloads are not exposed). Filter by category, severity, or tag.\n\n**Inputs:**\n- `category` (string, optional), `severity` (string, optional), `tag` (string, optional).\n\n### Shadow AI\n\n#### `trustmodel_shadowai_scan`\n\nKick 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.\n\n**Inputs:**\n- `github_orgs` (string[], optional), `github_repos` (string[] of `owner/name`, optional), `gcp_projects` (string[], optional), `metadata` (object, optional).\n\n**Returns:** The scan `id` — poll with `trustmodel_shadowai_results`, page discoveries with `trustmodel_shadowai_events`.\n\n#### `trustmodel_shadowai_results`\n\nGet status, scan filter, total event count, and discoveries-by-system-type / by-source aggregates for a Shadow AI scan.\n\n**Inputs:**\n- `scan_id` (integer or numeric string, required).\n\n#### `trustmodel_shadowai_events`\n\nPage 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`.\n\n**Inputs:**\n- `scan_id` (integer or numeric string, required), plus optional `system_type` / `source` filters and pagination.\n\n## Example — streaming agent capture\n\n```text\ntrustmodel_trace_start({\n  goal: \"Book a flight from NYC to SF\",\n  name: \"Flight booking agent\",\n  agent_framework: \"claude-code\",\n  agent_model: \"claude-sonnet-4-5\"\n})\n→ { trace_id: \"trace-abc123def456\", started_at: \"...\" }\n\ntrustmodel_trace_step({ trace_id, step_type: \"thought\",\n  content: \"Need to search flights first.\" })\n→ { step_number: 1, steps_recorded: 1 }\n\ntrustmodel_trace_step({ trace_id, step_type: \"tool_call\",\n  content: \"Searching flights\",\n  tool_name: \"flight_api.search\",\n  tool_args: { from: \"NYC\", to: \"SFO\", date: \"2026-04-20\" },\n  duration_ms: 500 })\n→ { step_number: 2, steps_recorded: 2 }\n\ntrustmodel_trace_step({ trace_id, step_type: \"tool_result\",\n  content: \"Found UA123 at $350\",\n  tool_name: \"flight_api.search\",\n  tool_result: { flight: \"UA123\", price: 350 },\n  tool_call_success: true })\n→ { step_number: 3, steps_recorded: 3 }\n\ntrustmodel_trace_step({ trace_id, step_type: \"final_answer\",\n  content: \"Booked UA123 for $350.\" })\n→ { step_number: 4, steps_recorded: 4 }\n\ntrustmodel_trace_finalize({ trace_id,\n  final_response: \"Booked UA123 for $350.\",\n  goal_achieved: true })\n→ {\n    file_path: \"agent-traces/<org>/<ts>_<uuid>.json\",\n    step_count: 4,\n    evaluation_run_id: 42,\n    evaluation_status: \"processing\"\n  }\n\ntrustmodel_score_agent({ evaluation_run_id: 42 })\n→ { status: \"processing\" | \"completed\", scores: [...], grade, overall_score, ... }\n```\n\n## Example — realistic agentic flow\n\nBelow 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.\n\n### Scenario: research agent\n\nPaste this prompt into Claude Code (or any MCP client with TrustModel connected):\n\n```text\nResearch the pros and cons of using WebSockets vs Server-Sent Events for\nreal-time notifications in a web app, while recording a TrustModel trace.\n\nBefore you start, call trustmodel_trace_start with:\n  goal: \"Research WebSockets vs SSE for real-time notifications\"\n  name: \"Research agent\"\n  agent_framework: \"claude-code\"\n\nAs you work, record a trustmodel_trace_step for each action:\n  - When you reason about the topic → step_type: \"thought\"\n  - When you search or fetch info  → step_type: \"tool_call\" with tool_name\n  - After getting results back      → step_type: \"tool_result\"\n  - When you draw a conclusion      → step_type: \"observation\"\n\nWhen done, call trustmodel_trace_finalize with your recommendation as\nfinal_response and goal_achieved: true.\n\nPrint the evaluation_run_id so I can check the trust report.\n```\n\n### What happens\n\nThe agent researches the topic while self-tracing every reasoning step, search, and conclusion. A typical session looks like:\n\n```text\ntrustmodel_trace_start({ goal: \"Research WebSockets vs SSE...\", name: \"Research agent\", ... })\n→ { trace_id: \"trace-9a2f71c3b84e\" }\n\ntrustmodel_trace_step({ step_type: \"thought\", content: \"I need to compare protocol differences, browser support, scaling cost, and typical use cases.\" })\n→ { step_number: 1 }\n\ntrustmodel_trace_step({ step_type: \"tool_call\", tool_name: \"WebSearch\", tool_args: { query: \"websockets vs server-sent events performance comparison\" } })\n→ { step_number: 2 }\n\ntrustmodel_trace_step({ step_type: \"tool_result\", content: \"Found 3 relevant articles comparing latency, connection limits, and HTTP/2 multiplexing...\" })\n→ { step_number: 3 }\n\ntrustmodel_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.\" })\n→ { step_number: 4 }\n\n... (more research, comparisons, trade-off analysis) ...\n\ntrustmodel_trace_step({ step_type: \"final_answer\", content: \"Recommendation: use SSE for one-way notifications, WebSockets only if you need client-to-server messaging.\" })\n→ { step_number: 10 }\n\ntrustmodel_trace_finalize({\n  trace_id: \"trace-9a2f71c3b84e\",\n  final_response: \"Recommendation: use SSE for one-way notifications...\",\n  goal_achieved: true\n})\n→ {\n    file_path: \"agent-traces/<org>/<timestamp>.json\",\n    evaluation_run_id: 42,\n    evaluation_status: \"processing\"\n  }\n```\n\n### The evaluation result\n\nPoll `trustmodel_score_agent({ evaluation_run_id: 42 })` after 1-2 minutes. TrustModel returns:\n\n```json\n{\n  \"status\": \"completed\",\n  \"overall_score\": 7.6,\n  \"grade\": \"C\",\n  \"scores\": [\n    { \"category\": \"tool_use_accuracy\",  \"score\": 100.0 },\n    { \"category\": \"reasoning_quality\",  \"score\": 60.0  },\n    { \"category\": \"goal_completion\",    \"score\": 70.0  },\n    { \"category\": \"safety_compliance\",  \"score\": 80.0  }\n  ],\n  \"summary\": {\n    \"trust_dimensions\": {\n      \"safety\": 9.0, \"fairness\": 7.0, \"privacy\": 10.0,\n      \"transparency\": 6.0, \"robustness\": 10.0, \"accountability\": 10.0\n    }\n  }\n}\n```\n\nA PDF/HTML report with detailed findings is also generated and accessible from the TrustModel dashboard.\n\n### Why this matters\n\nEvery 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.\n\n## Trace persistence\n\nActive 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).\n\nSessions idle more than 30 minutes are auto-evicted. Maximum 100 concurrent sessions per server.\n\n## Dashboard\n\nReports, evaluation history, and detailed PDF/HTML findings are available in the TrustModel dashboard at **[app.trustmodel.ai](https://app.trustmodel.ai)**.\n\n## Troubleshooting\n\n| Symptom | Fix |\n|---|---|\n| 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.ai](https://app.trustmodel.ai) → **Settings → API Keys**. |\n| `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. |\n| `npx` can't find the package | Ensure Node ≥ 20.19 and run `npx -y @trustmodel/mcp-server` so the latest version is fetched. |\n| Tool not listed by the client | Restart the MCP client after editing its config; confirm the `command`/`args` match the examples above. |\n\n## TrustModel open-source\n\nThis MCP server is part of the TrustModel OSS toolkit:\n\n- **CLI + SDK** — [`trustmodel`](https://github.com/karlmehta/trustmodel) on PyPI: local trust scoring, governance, and the cloud client. `pip install trustmodel`.\n- **MCP server (this repo)** — `@trustmodel/mcp-server` on npm: exposes TrustModel to any MCP client.\n\n## License\n\nMIT\n",
  "bytes": 23060,
  "sha": "5aa4bd659cb72a740398692c7714b49ba0b2505f590e8616b03aa31b0f25120d",
  "repo_slug": "karlmehta/trustmodel-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_karlmehta_trustmodel_mcp_d4a25be0/readme"
}