← Back to search
ai.plith/plith

ai.plith/plith

AI agent infrastructure: dedup, cost prediction, validation, governance, failure intelligence.

EXECUTIVE VERDICT

Executive verdict

Production trust decision: Allow with approval
Reason: write/exec approval gaps + high-risk tools need review
Next action: export policy, configure alerts, require approval for writes
Status
Healthy
Score
72.7
Transport
streamable-http
Tools
15

Current trust snapshot

Snapshot ID
trustsnap_f07ce5ff40b3c5f2
Use this ID to compare server page, report, policy, MCP, homepage, ranking, and shortlist surfaces.
Snapshot generated
May 13, 2026 05:59:16 PM UTC
All page, report, policy, and MCP surfaces use this same server-detail snapshot shape.
Last validated
May 13, 2026 02:42:04 PM UTC
Age: 3.29h • freshness band: Verified in last 24h • display score: 72.71
Production trust decision
Allow with approval
write/exec approval gaps + high-risk tools need review
Readiness class
Safe for evaluation
The server is suitable for evaluation, but remaining gaps should be resolved before broad production use.
SERVER OWNER FUNNEL

Own this MCP?

Claim ownership, prove control with a GitHub, DNS, or HTTP token challenge, revalidate now, publish a badge, and configure monitoring.

1. Claim
unclaimed
Start owner claim with GitHub, DNS, or HTTP challenge instructions.
2. Revalidate
POST /v1/servers/ai.plith/plith/revalidate
Verified owners get priority queueing after proof succeeds.
3. Badge
Verified by MCP Verify badge
Verified by MCP Verify - score 72.7 - last checked May 13, 2026
4. Monitor
Continuous Verify plan is self-serve: choose a tier, configure watches, add authenticated validation, trigger revalidation, and use the badge.
Badge embed
[![Verified by MCP Verify](https://verify.sentinelsignal.io/badge/ai.plith/plith.svg)](https://verify.sentinelsignal.io/servers/ai.plith/plith)

MCP TrustOps

TrustOps turns this report into operational controls: freshness SLAs, authenticated validation, semantic benchmarks, policy exports, alert subscriptions, badges, cost/compliance metadata, and runtime routing. Fresh trusted index decisions stay separate from long-tail inventory so stale scores do not masquerade as current evidence.

Freshness band
Verified in last 24h
Policy SLA: 168.0h • confidence-weighted score: 57.3 • stale score suppressed:
Policy exports
Formats: json, rego, yaml, github_action, gateway_config, client_report
Runtime routing
/v1/route
Returns allowed tools, blocked tools, approval requirement, and reason.
Authenticated validation
Premium publisher feature: paid authenticated runs verify scopes, write-action safeguards, and authorized tool execution.
Active trust badges
Freshly Validated Claude Remote MCP Ready No Critical Risk
Semantic benchmarks
available
Templates cover GitHub, database, healthcare, web search, and CRM least-privilege jobs.
Supply chain
metadata signal
Deep scan checks are marked separately from public metadata signals.
Compliance metadata
Terms, privacy, SOC 2, HIPAA, GDPR, retention, deletion, and audit-log fields are tracked as enterprise metadata.
Alert subscription types
Status changes Score drops or recovers Freshness SLA breach Validation schema drift OAuth or auth behavior changes Tool surface changes New or changed write tool Supply-chain signal changes Legal or compliance metadata changes

Production readiness class

Production readiness class
Safe for evaluation
The server is suitable for evaluation, but remaining gaps should be resolved before broad production use.
Critical alerts
0
Production verdicts degrade quickly when critical alerts are active.

Evidence confidence

Confidence score
78.8
Based on 3 recent validations, 26 captured checks, and validation age of 3.3 hours.
Live checks captured
26
More direct checks increase trust in the current verdict.
Validation age
3.3h
Lower age means fresher evidence.

Recommended for

Claude Desktop
Claude Desktop is marked compatible with score 83.
Smithery
Smithery is marked compatible with score 80.
Generic Streamable HTTP
Generic Streamable HTTP is marked compatible with score 100.

Client compatibility verdicts

Client compatibility only means the server shape can work with a client. Production trust decision and write-action publishing are evaluated separately so a client-compatible server can still be blocked for production.

Client compatibility: ChatGPT
Partially client-compatible
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; Transport compliance should be in good shape.
Confidence: high (78.75)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history, server_card
Disagreements: none
  • initializeOK
  • tools_listOK
  • transport_compliance_probeError
  • step_up_auth_probeMissing
  • connector_replay_probeOK — Frozen tool snapshots must survive refresh.
  • request_association_probeWarning — Roots, sampling, and elicitation should stay request-scoped.
Client compatibility: Claude
Client-compatible
Transport behavior should match Claude-compatible HTTP expectations.
Confidence: high (78.75)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history, server_card
Disagreements: none
  • initializeOK
  • tools_listOK
  • transport_compliance_probeError
Write-action publishing
Publishing blocked
Blocked until safeguards and confirmation semantics are verified for write, exec, or destructive tools.
Confidence: high (78.75)
Evidence provenance
Winner: live_validation
Supporting sources: live_validation, history
Disagreements: none
  • action_safety_probeError
Snapshot churn risk
Low
No material tool-surface churn detected in the latest comparison.
Confidence: high (78.75)
Evidence provenance
Winner: history
Supporting sources: history, live_validation
Disagreements: none
  • tool_snapshot_probeOK
  • connector_replay_probeOK

Why compatibility is limited by client

ChatGPT custom connector
Partial
Remediation checklist
  • No explicit blockers recorded.
Claude remote MCP
Ready
Remediation checklist
  • No explicit blockers recorded.
Write-safe publishing
Blocked
Remediation checklist
  • No explicit blockers recorded.

Verdict traces

Production verdict
Safe for evaluation
The server is suitable for evaluation, but remaining gaps should be resolved before broad production use.
Confidence: high (78.75)
Winning source: live_validation
Triggering alerts
  • No active alert triggers.
Client verdict trace table
VerdictStatusChecksWinning sourceConflicts
openai_connectors Partially client-compatible initialize, tools_list, transport_compliance_probe, step_up_auth_probe, connector_replay_probe, request_association_probe live_validation none
claude_desktop Client-compatible initialize, tools_list, transport_compliance_probe live_validation none
unsafe_for_write_actions Publishing blocked action_safety_probe live_validation none
snapshot_churn_risk Low tool_snapshot_probe, connector_replay_probe history none

Publishability policy profiles

ChatGPT custom connector compatibility
Compatible with review
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; Transport compliance should be in good shape. Compatibility is not a production approval; company knowledge and Messages API gates remain separate.
  • Search Fetch Only: No
  • Write Actions Present: Yes
  • Oauth Configured: No
  • Admin Refresh Required: No
  • Safe For Company Knowledge: No
  • Safe For Messages Api Remote Mcp: No
Claude remote MCP compatibility
Connector-compatible
Transport behavior should match Claude-compatible HTTP expectations. Compatibility is not a production approval; company knowledge and Messages API gates remain separate.
  • Search Fetch Only: No
  • Write Actions Present: Yes
  • Oauth Configured: No
  • Admin Refresh Required: No
  • Safe For Company Knowledge: No
  • Safe For Messages Api Remote Mcp: No

Compatibility fixtures

ChatGPT custom connector fixture
Degraded
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; Transport compliance should be in good shape.
  • remote_http_endpoint: Passes
  • oauth_discovery: Degraded
  • frozen_tool_snapshot_refresh: Passes
  • request_association: Passes
Anthropic remote MCP fixture
Degraded
Transport behavior should match Claude-compatible HTTP expectations.
  • remote_transport: Passes
  • tool_discovery: Passes
  • auth_connect: Passes
  • safe_write_review: Degraded

Authenticated validation sessions

Public validation is free. Authenticated validation is paid and proves scoped behavior, write-action safeguards, and authenticated tool execution.

Latest profile
remote_mcp
Authenticated session used
Public score isolation
Preview endpoint
/v1/verify
CI preview endpoint
/v1/ci/preview

Public server reputation

Validation success 7d
1.0
Validation success 30d
1.0
Mean time to recover
n/a
Breaking diffs 30d
0
Registry drift frequency 30d
0
Snapshot changes 30d
0

Incident & change feed

TimestampEventDetails
May 13, 2026 02:42:04 PM UTC Latest validation: healthy Score 72.7 with status healthy.
May 13, 2026 02:42:04 PM UTC Score changed Score delta +0.4 versus the previous run.
May 13, 2026 02:40:51 AM UTC Score changed Score delta +2.3 versus the previous run.

Capabilities

Use-case taxonomy
development database search productivity

Security posture

Tools analyzed
15
High-risk tools
2
Destructive tools
1
Exec tools
3
Egress tools
1
Secret tools
3
Bulk-access tools
2
Risk distribution
low:3, medium:10, high:2

Tool capability & risk inventory

ToolCapabilitiesRiskFindingsNotes
dedupq_check read Low none No explicit safeguard hints detected.
dedupq_complete write Medium none No explicit safeguard hints detected.
burnrate_estimate secrets Medium secret material access No explicit safeguard hints detected.
burnrate_track read write network secrets Medium secret material access No explicit safeguard hints detected.
burnrate_optimize read write network secrets High arbitrary network egress secret material access No explicit safeguard hints detected.
burnrate_budget read admin export Medium bulk data access No explicit safeguard hints detected.
qualitygate_validate write exec Medium command execution No explicit safeguard hints detected.
guardrail_check other Low none No explicit safeguard hints detected.
guardrail_create_policy read write delete network filesystem admin High destructive operation filesystem mutation admin mutation No explicit safeguard hints detected.
pitfalldb_query read exec Medium command execution No explicit safeguard hints detected.
pitfalldb_report other Low none No explicit safeguard hints detected.
rigor_plan read network admin Medium none No explicit safeguard hints detected.
rigor_execute read network admin Medium none No explicit safeguard hints detected.
rigor_status exec Medium command execution No explicit safeguard hints detected.
rigor_workflows read write admin export Medium bulk data access admin mutation Safeguards hinted in metadata.

Write-action governance

Governance status
Error
Safe to publish
Auth boundary
public_or_unclear
Blast radius
High
High-risk tools
2
Confirmation signals
none
Safeguard count
1

Status detail: 2 high-risk tool(s), 1 destructive tool(s), 3 exec-capable tool(s) are exposed without a clear auth boundary; 1 safeguard(s) and 0 confirmation signal(s) detected.

ToolRiskFlagsSafeguards
burnrate_optimize High arbitrary network egress secret material access no
guardrail_create_policy High destructive operation filesystem mutation admin mutation no

Action-controls diff

Snapshot changed
no
Disabled-by-default candidates
none
Manual review candidates
none
New actions
ActionRiskFlags
No newly added actions.
Changed actions
ActionChange typesRisk
No materially changed actions.

Why this score?

Access & Protocol
31/44
Connectivity, auth, and transport expectations for common clients.
Interface Quality
40/56
How well the tool/resource interface communicates and behaves under automation.
Security Posture
22.2/36
How safely the exposed tool surface handles destructive actions, egress, execution, secrets, and risky inputs.
Reliability & Trust
22.81/24
Operational stability, consistency, and trustworthiness over time.
Discovery & Governance
20.5/28
How well the server is documented, listed, and governed in public registries.
Adoption & Market
6/8
Adoption clues and public evidence that the server is intended for external use.

Algorithmic score breakdown

Auth Operability
2/4
Measures whether auth discovery and protected access behave predictably for clients.
Error Contract Quality
0/4
Grades machine-readable error structure, status alignment, and remediation hints.
Rate-Limit Semantics
2/4
Checks whether quota/throttle responses are deterministic and automation-friendly.
Schema Completeness
3/4
Completeness of tool descriptions, parameter docs, examples, and schema shape.
Backward Compatibility
4/4
Stability score across tool schema/name drift relative to prior validations.
SLO Health
4/4
Availability, latency, and burst-failure profile across recent validation history.
Security Hygiene
3/4
HTTPS posture, endpoint hygiene, and response-surface hardening checks.
Task Success
4/4
Can an agent reliably initialize, enumerate tools, and execute core MCP flows?
Trust Confidence
3.8/4
Confidence-adjusted reliability score that penalizes low evidence volume.
Abuse/Noise Resilience
4/4
How well the server preserves core behavior in the presence of noisy traffic patterns.
Prompt Contract
3/4
Quality of prompt metadata, argument shape, and prompt discoverability for clients.
Resource Contract
4/4
How completely resources and resource templates describe URIs, types, and usage shape.
Discovery Metadata
3/4
Homepage, docs, icon, repository, support, and license coverage for directory consumers.
Registry Consistency
2/4
Agreement between stored registry metadata, live server-card data, and current validation output.
Installability
4/4
How cleanly a real client can connect, initialize, enumerate tools, and proceed through auth.
Session Semantics
4/4
Determinism and state behavior across repeated MCP calls, including sticky-session surprises.
Tool Surface Design
3/4
Naming clarity, schema ergonomics, and parameter complexity across the tool surface.
Result Shape Stability
3/4
Stability of declared output schemas across validations, with penalties for drift or missing shapes.
OAuth Interop
3/4
Depth and client compatibility of OAuth/OIDC metadata beyond the minimal protected-resource check.
Recovery Semantics
0/4
Whether failures include actionable machine-readable next steps such as retry or upgrade guidance.
Maintenance Signal
3/4
Versioning, update recency, and historical validation cadence that indicate active stewardship.
Adoption Signal
3/4
Directory presence and distribution clues that suggest the server is intended for external use.
Freshness Confidence
3/4
Confidence that recent validations are current enough and dense enough to trust operationally.
Transport Fidelity
4/4
Whether declared transport metadata matches the observed endpoint behavior and response formats.
Spec Recency
4/4
How close the server’s claimed MCP protocol version is to the latest known public revision.
Session Resume
3/4
Whether Streamable HTTP session identifiers and resumed requests behave cleanly for real clients.
Step-Up Auth
3/4
Whether OAuth metadata and WWW-Authenticate challenges support granular, incremental consent instead of broad upfront scopes.
Transport Compliance
0/4
Checks session headers, protocol-version enforcement, session teardown, and expired-session behavior.
Utility Coverage
3/4
Signals support for completions, pagination, and task-oriented utility surfaces that larger clients increasingly expect.
Advanced Capability Coverage
3/4
Coverage of newer MCP surfaces like roots, sampling, elicitation, structured output, and related metadata.
Connector Publishability
3/4
How ready the server looks for client catalogs and managed connector programs.
Tool Snapshot Churn
4/4
Stability of the tool surface across recent validations, including add/remove and output-shape drift.
Connector Replay
4/4
Whether a previously published frozen connector snapshot would remain backward compatible after the latest tool refresh.
Request Association
2/4
Whether roots, sampling, and elicitation appear tied to active client requests instead of arriving unsolicited on idle sessions.
Interactive Flow Safety
3/4
Whether prompts and docs steer users toward safe auth flows instead of pasting secrets directly.
Action Safety
2/4
Risk-weighted view of destructive, exec, egress, and confirmation semantics across the tool surface.
Official Registry Presence
4/4
Whether the server appears directly or indirectly in the official MCP registry.
Provenance Divergence
4/4
How closely official registry metadata, the live server card, and public repo/package signals agree with each other.
Safety Transparency
2/4
Clarity of docs, auth disclosure, support links, and other trust signals visible to integrators.
Tool Capability Clarity
4/4
How clearly the tool surface communicates whether each action reads, writes, deletes, executes, or exports data.
Destructive Operation Safety
2/4
Penalizes delete/revoke/destroy style tools unless auth and safeguards reduce blast radius.
Egress / SSRF Resilience
2/4
Assesses arbitrary URL fetch, crawl, webhook, and remote-request exposure on the tool surface.
Execution / Sandbox Safety
0.5/4
Evaluates shell, code, script, and command-execution exposure and whether that surface appears contained.
Data Exfiltration Resilience
3.4/4
Assesses export, dump, backup, and bulk-read behavior against the surrounding auth and safeguard signals.
Least Privilege Scope
2/4
Rewards scoped auth metadata and penalizes broad or missing scopes around privileged tools.
Secret Handling Hygiene
3.4/4
Assesses secret-bearing tools, token leakage risk, and whether the public surface avoids obvious secret exposure.
Supply Chain Signal
2.5/4
Public metadata signal for repository, changelog, license, versioning, and recency that supports supply-chain trust.
Input Sanitization Safety
3/4
Penalizes risky freeform string inputs when schemas do not constrain URLs, code, paths, queries, or templates.
Tool Namespace Clarity
4/4
Measures naming uniqueness and ambiguity across the tool namespace to reduce collision and confusion risk.

Compatibility profiles

OpenAI Connectors
66.7
partial
OpenAI connectors expect OAuth for remote server auth.; Dynamic client registration materially improves connector setup.; Transport compliance should be in good shape.
Connector URL: https://plith.ai/api/mcp
# No OAuth metadata detected.
# Server: ai.plith/plith
Claude Desktop
83.3
compatible
Transport behavior should match Claude-compatible HTTP expectations.
{
  "mcpServers": {
    "plith": {
      "command": "npx",
      "args": ["mcp-remote", "https://plith.ai/api/mcp"]
    }
  }
}
Smithery
80.0
compatible
Machine-readable failure semantics should be present.
smithery mcp add "https://plith.ai/api/mcp"
Generic Streamable HTTP
100.0
compatible
No major blockers detected.
curl -sS https://plith.ai/api/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'

Actionable remediation

SeverityRemediationWhy it mattersRecommended action
High Add confirmation and dry-run semantics for risky actions High-risk write, delete, exec, or egress tools should communicate safeguards clearly. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
High Align session and protocol behavior with Streamable HTTP expectations Clients increasingly rely on MCP-Protocol-Version, session teardown, and expired-session semantics. Align MCP-Protocol-Version, MCP-Session-Id, DELETE teardown, and expired-session handling with the transport spec.
Playbook
  • Return `Mcp-Session-Id` and `Mcp-Protocol-Version` headers consistently on streamable HTTP responses.
  • Honor `DELETE` session teardown and return `404` when a deleted session is reused.
  • Reject invalid protocol-version headers with `400 Bad Request`.
High Associate roots, sampling, and elicitation with active client requests Modern MCP guidance expects roots, sampling, and elicitation traffic to be tied to an active client request instead of arriving unsolicited on idle sessions. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
High Expose /.well-known/oauth-protected-resource Without a protected-resource document, OAuth clients cannot discover auth requirements reliably. Serve /.well-known/oauth-protected-resource and point it at your authorization server metadata.
Playbook
  • Serve `/.well-known/oauth-protected-resource` from the same host as the MCP endpoint.
  • Point it at the authorization server metadata URL.
  • Confirm clients receive consistent auth hints before tool execution.
High Publish OAuth authorization-server metadata Clients need authorization-server metadata to discover issuer, endpoints, and DCR support. Publish /.well-known/oauth-authorization-server from your issuer and include registration_endpoint when supported.
Playbook
  • Publish `/.well-known/oauth-authorization-server` from the issuer.
  • Add `registration_endpoint` if DCR is supported.
  • Verify issuer, authorization, token, and jwks metadata are all reachable.
High Stop asking users to paste secrets directly Public MCP servers should prefer OAuth or browser-based auth guidance over in-band secret collection. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Medium Adopt a current MCP protocol revision Older protocol revisions reduce compatibility with newer clients and registry programs. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Medium Close connector-publishing gaps Connector catalogs care about protocol recency, session behavior, auth clarity, and tool-surface stability. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Medium Document minimal scopes and return cleaner auth challenges Modern clients expect granular scopes and step-up auth signals such as WWW-Authenticate scope hints. Return granular scopes and WWW-Authenticate challenge hints instead of forcing overly broad auth upfront.
Playbook
  • Advertise the narrowest viable scopes in OAuth metadata.
  • Return `WWW-Authenticate` challenges with scope or insufficient-scope hints when additional consent is needed.
  • Revalidate with both public discovery and auth-required flows.
Medium Publish OpenID configuration OIDC metadata improves token validation and client compatibility. Expose /.well-known/openid-configuration with issuer, jwks_uri, and supported grants.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.
Medium Support resumable HTTP sessions cleanly Modern MCP clients increasingly expect resumable session behavior on streamable HTTP transports. Inspect the latest validation evidence and resolve the client-visible regression.
Playbook
  • Inspect the latest validation evidence.
  • Resolve the highest-severity client-facing gap first.
  • Revalidate and confirm the score and verdict improve.

Point loss breakdown

ComponentCurrentPoints missing
Transport Compliance 0/4 -4.0
Recovery Semantics 0/4 -4.0
Error Contract 0/4 -4.0
Execution Sandbox Safety 0.5/4 -3.5
Safety Transparency 2/4 -2.0
Request Association 2/4 -2.0
Registry Consistency 2/4 -2.0
Rate Limit Semantics 2/4 -2.0
Least Privilege Scope 2/4 -2.0
Egress SSRF Resilience 2/4 -2.0
Destructive Operation Safety 2/4 -2.0
Auth Operability 2/4 -2.0

Validation diff

Score delta
0.44
Summary changed
no
Tool delta
0
Prompt delta
0
Auth mode changed
no
Write surface expanded
no
Protocol regressed
no
Registry drift changed
no

Regressed checks: none

Improved checks: none

ComponentPreviousLatestDelta
trust_confidence_score2.943.810.87

Tool snapshot diff & changelog

Snapshot changed
no
Added tools
none
Removed tools
none
Required-argument changes
ToolAdded required argsRemoved required args
No required-argument changes detected.
Output-schema drift
ToolPrevious propertiesLatest properties
No output-schema drift detected.

Connector replay

Status
OK
Backward compatible
Would break after refresh
Added tools
none
Removed tools
none
Additive output changes
none
Required-argument replay breaks
ToolAdded required argsRemoved required args
No required-argument replay breaks detected.
Output-schema replay breaks
ToolRemoved propertiesAdded properties
No output-schema replay breaks detected.

Transport compliance drilldown

Probe status
Error
Transport
streamable-http
Session header
no
Protocol header
no
Bad protocol response
200
DELETE teardown
n/a
Expired session retry
n/a
Last-Event-ID visible
no

Issues: missing_session_id, missing_protocol_header, bad_protocol_not_rejected

Request association

Status
Warning
Advertised capabilities
roots
Observed idle methods
none
Violating methods
none
Probe HTTP status
n/a
Issues
none

Utility coverage

Probe status
OK
Completions
advertised
Completion probe target: { "argument_name": "task_description", "name": "try-rigor-free", "type": "prompt" }
Pagination
supported
No nextCursor evidence.
Tasks
Error
Advertised: yes

Benchmark tasks

Benchmark taskStatusEvidence
Discover tools Passes
  • initializeOK
  • tools_listOK
Read-only fetch flow Passes
  • resource_readOK
  • read_only_tool_surfaceOK
OAuth-required connect Degraded
  • oauth_protected_resourceError
  • step_up_auth_probeMissing
Safe write flow with confirmation Likely to fail
  • action_safety_probeError

Registry & provenance divergence

Probe status
OK
Direct official match
yes
Drift fields
none
FieldRegistryLive server card
Titlen/aPlith
Versionn/a1.0.0
Homepagen/an/a

Active alerts

No active alerts for the current server state.

Aliases & registry graph

IdentifierSourceCanonicalScore
ai.plith/plith official_registry yes 72.71

Alias consolidation

Canonical identifier
ai.plith/plith
Duplicate aliases
0
Registry sources
official_registry
Homepages
none
Source disagreements
FieldWhat differsObserved values
No source disagreements detected.

Install snippets

Openai Connectors
Connector URL: https://plith.ai/api/mcp
# No OAuth metadata detected.
# Server: ai.plith/plith
Claude Desktop
{
  "mcpServers": {
    "plith": {
      "command": "npx",
      "args": ["mcp-remote", "https://plith.ai/api/mcp"]
    }
  }
}
Smithery
smithery mcp add "https://plith.ai/api/mcp"
Generic Http
curl -sS https://plith.ai/api/mcp -H 'content-type: application/json' -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"mcp-verify","version":"0.1.0"}}}'

Agent access & tool surface

Live server tools
dedupq_check dedupq_complete burnrate_estimate burnrate_track burnrate_optimize burnrate_budget qualitygate_validate guardrail_check
Observed from the latest live validation against https://plith.ai/api/mcp. This is the target server surface, not Verify's own inspection tools.
Live capability counts
15 tools • 6 prompts • 6 resources
Counts come from the latest tools/list, prompts/list, and resources/list checks.
Inspect with Verify
search fetch search_servers recommend_servers get_server_report compare_servers
Use Verify itself to search, recommend, compare, and fetch the full report for ai.plith/plith.
Direct machine links

Claims & monitoring

Server ownership

No verified maintainer claim recorded.

Watch subscriptions
0
Teams: none

Alert routing

Active watches
0
Generic webhooks
0
Slack routes
0
Teams routes
0
Email routes
0
WatchTeamChannelsMinimum severity
No active watch destinations.

Maintainer analytics

Validation Run Count
3
Average Latency Ms
1748.62
Healthy Run Ratio Recent
1.0
Registry Presence Count
1
Active Alert Count
0
Watcher Count
0
Verified Claim
False
Taxonomy Tags
development, database, search, productivity
Score Trend
72.71, 72.27, 69.99
Remediation Count
11
High Risk Tool Count
2
Destructive Tool Count
1
Exec Tool Count
3

Maintainer response quality

Score
16.67
Verified claim
Support contact
Changelog present
Incident notes present
Tool changes documented
Annotation history
Annotation count
0

Maintainer annotations

No maintainer annotations have been recorded yet.

Maintainer rebuttals & expected behavior

No maintainer rebuttals or expected-behavior overrides are recorded yet.

Latest validation evidence

Latest summary
Healthy
Validation profile
remote_mcp
Started
May 13, 2026 02:42:03 PM UTC
Latency
1572.2 ms

Failures

Checks

CheckStatusLatencyEvidence
action_safety_probe Error n/a 2 high-risk, 1 destructive, 3 exec-capable tool(s); no clear auth boundary; safeguards=1; confirmation=none.
advanced_capabilities_probe OK n/a 5 capability signal(s): completions, prompts, resource links, resources, +1 more.
connector_publishability_probe Warning n/a Publishability blockers: transport compliance, action safety.
connector_replay_probe OK n/a Backward compatible with no breaking tool-surface changes.
determinism_probe OK 101.7 ms Check completed
initialize OK 173.1 ms Protocol 2024-11-05
interactive_flow_probe Missing n/a Check completed
oauth_authorization_server Missing n/a no authorization server
oauth_protected_resource Error 22.9 ms Client error '404 Not Found' for url 'https://plith.ai/.well-known/oauth-protected-resource' For more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404
official_registry_probe OK n/a Check completed
openid_configuration Missing n/a no authorization server
probe_noise_resilience OK 11.0 ms Fetched https://plith.ai/robots.txt
prompt_get OK 58.2 ms 1 prompt message(s) returned
prompts_list OK 160.1 ms 6 prompt(s) exposed
protocol_version_probe Warning n/a Claims 2024-11-05; 3 release(s) behind 2025-11-25.
provenance_divergence_probe OK n/a Check completed
request_association_probe Warning n/a Advertised=roots; observed=none.
resource_read OK 43.8 ms 1 resource content item(s) returned
resources_list OK 103.4 ms 6 resource item(s) exposed
server_card OK 366.1 ms 6 prompt(s) exposed
session_resume_probe Warning n/a no session id
step_up_auth_probe Missing n/a No OAuth or incremental-scope signals detected.
tool_snapshot_probe OK n/a Check completed
tools_list OK 202.5 ms 15 tool(s) exposed
transport_compliance_probe Error 155.2 ms Issues: missing session id, missing protocol header, bad protocol not rejected (bad protocol=200).
utility_coverage_probe OK 37.2 ms Completions advertised; pagination supported; tasks error.

Raw evidence view

Show raw JSON evidence
{
  "checks": {
    "action_safety_probe": {
      "details": {
        "auth_present": false,
        "confirmation_signals": [],
        "safeguard_count": 1,
        "summary": {
          "bulk_access_tools": 2,
          "capability_distribution": {
            "admin": 5,
            "delete": 1,
            "exec": 3,
            "export": 2,
            "filesystem": 1,
            "network": 5,
            "other": 2,
            "read": 9,
            "secrets": 3,
            "write": 6
          },
          "destructive_tools": 1,
          "egress_tools": 1,
          "exec_tools": 3,
          "high_risk_tools": 2,
          "risk_distribution": {
            "critical": 0,
            "high": 2,
            "low": 3,
            "medium": 10
          },
          "secret_tools": 3,
          "tool_count": 15
        }
      },
      "latency_ms": null,
      "status": "error"
    },
    "advanced_capabilities_probe": {
      "details": {
        "capabilities": {
          "completions": true,
          "elicitation": false,
          "prompts": true,
          "resource_links": true,
          "resources": true,
          "roots": true,
          "sampling": false,
          "structured_outputs": false
        },
        "enabled": [
          "completions",
          "prompts",
          "resource_links",
          "resources",
          "roots"
        ],
        "enabled_count": 5,
        "initialize_capability_keys": [
          "prompts",
          "resources",
          "tools"
        ]
      },
      "latency_ms": null,
      "status": "ok"
    },
    "connector_publishability_probe": {
      "details": {
        "blockers": [
          "transport_compliance",
          "action_safety"
        ],
        "criteria": {
          "action_safety": false,
          "auth_flow": true,
          "connector_replay": true,
          "initialize": true,
          "protocol_version": true,
          "remote_transport": true,
          "request_association": true,
          "server_card": true,
          "session_resume": true,
          "step_up_auth": true,
          "tool_surface": true,
          "tools_list": true,
          "transport_compliance": false
        },
        "high_risk_tools": 2,
        "tool_count": 15,
        "transport": "streamable-http"
      },
      "latency_ms": null,
      "status": "warning"
    },
    "connector_replay_probe": {
      "details": {
        "added_tools": [],
        "additive_output_changes": [],
        "backward_compatible": true,
        "output_breaks": [],
        "removed_tools": [],
        "required_arg_breaks": [],
        "would_break_after_refresh": false
      },
      "latency_ms": null,
      "status": "ok"
    },
    "determinism_probe": {
      "details": {
        "attempts": 2,
        "baseline_signature": "e6ecc389e235b81e8bb884060a2ba5c72e0a0d4acfa599054bfa6c3961233886",
        "errors": [],
        "matches": 2,
        "stable_ratio": 1.0,
        "successful": 2
      },
      "latency_ms": 101.67,
      "status": "ok"
    },
    "initialize": {
      "details": {
        "headers": {
          "content-type": "application/json",
          "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
        },
        "http_status": 200,
        "payload": {
          "id": 1,
          "jsonrpc": "2.0",
          "result": {
            "capabilities": {
              "prompts": {},
              "resources": {},
              "tools": {}
            },
            "protocolVersion": "2024-11-05",
            "serverInfo": {
              "name": "plith",
              "version": "1.0.0"
            }
          }
        },
        "url": "https://plith.ai/api/mcp"
      },
      "latency_ms": 173.13,
      "status": "ok"
    },
    "interactive_flow_probe": {
      "details": {
        "oauth_supported": false,
        "prompt_available": true,
        "risk_hits": [],
        "safe_hits": []
      },
      "latency_ms": null,
      "status": "missing"
    },
    "oauth_authorization_server": {
      "details": {
        "reason": "no_authorization_server"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "oauth_protected_resource": {
      "details": {
        "error": "Client error '404 Not Found' for url 'https://plith.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
        "url": "https://plith.ai/.well-known/oauth-protected-resource"
      },
      "latency_ms": 22.95,
      "status": "error"
    },
    "official_registry_probe": {
      "details": {
        "direct_match": true,
        "official_peer_count": 1,
        "registry_identifier": "ai.plith/plith",
        "registry_source": "official_registry"
      },
      "latency_ms": null,
      "status": "ok"
    },
    "openid_configuration": {
      "details": {
        "reason": "no_authorization_server"
      },
      "latency_ms": null,
      "status": "missing"
    },
    "probe_noise_resilience": {
      "details": {
        "headers": {
          "content-type": "text/html; charset=utf-8",
          "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
        },
        "http_status": 404,
        "url": "https://plith.ai/robots.txt"
      },
      "latency_ms": 11.03,
      "status": "ok"
    },
    "prompt_get": {
      "details": {
        "headers": {
          "content-type": "application/json",
          "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
        },
        "http_status": 200,
        "payload": {
          "id": 4,
          "jsonrpc": "2.0",
          "result": {
            "description": "Plan a Rigor workflow at zero cost",
            "messages": [
              {
                "content": {
                  "text": "Call rigor_plan with task_description: '' and preferences: { rigor_level: 'standard' }. Review the returned plan \u2014 it shows the workflow steps, estimated cost, and alternatives. This call is free.",
                  "type": "text"
                },
                "role": "user"
              }
            ]
          }
        },
        "prompt_arguments": [
          {
            "description": "Describe the task you want a deliverable for (e.g., 'Design a caching layer for our API gateway')",
            "name": "task_description",
            "required": true
          },
          {
            "description": "Quality tier: quick, standard, or thorough. Affects step count and review depth.",
            "name": "rigor_level",
            "required": false
          }
        ],
        "prompt_name": "try-rigor-free",
        "url": "https://plith.ai/api/mcp"
      },
      "latency_ms": 58.16,
      "status": "ok"
    },
    "prompts_list": {
      "details": {
        "headers": {
          "content-type": "application/json",
          "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
        },
        "http_status": 200,
        "payload": {
          "id": 3,
          "jsonrpc": "2.0",
          "result": {
            "prompts": [
              {
                "arguments": [
                  {
                    "description": "Describe the task you want a deliverable for (e.g., 'Design a caching layer for our API gateway')",
                    "name": "task_description",
                    "required": true
                  },
                  {
                    "description": "Quality tier: quick, standard, or thorough. Affects step count and review depth.",
                    "name": "rigor_level",
                    "required": false
                  }
                ],
                "description": "Explore what Rigor would do for your task at zero cost. Returns the full workflow plan, step descriptions, cost estimate, and alternatives without executing anything.",
                "name": "try-rigor-free"
              },
              {
                "arguments": [
                  {
                    "description": "The task to produce a deliverable for",
                    "name": "task_description",
                    "required": true
                  },
                  {
                    "description": "Quality tier: quick, standard, or thorough",
                    "name": "rigor_level",
                    "required": false
                  }
                ],
                "description": "Plan a Rigor workflow, review the estimated cost, then execute it. Your agent receives structured deliverable output from each step \u2014 requirements, research, analysis, the deliverable, and quality review.",
                "name": "plan-and-execute"
              },
              {
                "arguments": [
                  {
                    "description": "The task your agent is about to execute",
                    "name": "task_description",
                    "required": true
                  },
                  {
                    "description": "Category of task (e.g., code_generation, data_analysis, web_search)",
                    "name": "task_type",
                    "required": false
                  }
                ],
                "description": "Before executing any agent task: check for duplicate work, query known failure patterns, and verify budget policy. Prevents redundant LLM calls and known mistakes.",
                "name": "agent-preflight"
              },
              {
                "arguments": [
                  {
                    "description": "LLM model name (e.g., claude-sonnet-4-6, gpt-4o)",
                    "name": "model",
                    "required": true
                  },
                  {
                    "description": "Expected input token count",
                    "name": "estimated_input_tokens",
                    "required": true
                  },
                  {
                    "description": "Expected output token count",
                    "name": "estimated_output_tokens",
                    "required": true
                  }
                ],
                "description": "Estimate the cost of an LLM call before making it, then log the actual cost after execution. Builds calibration data that improves future estimates over time.",
                "name": "cost-aware-execution"
              },
              {
                "arguments": [
                  {
                    "description": "The agent output to validate",
                    "name": "content",
                    "required": true
                  },
                  {
                    "description": "Validation rules object with must_include, must_not_include, max_length, or custom directives",
                    "name": "rules",
                    "required": false
                  }
                ],
                "description": "After completing a task, validate the output against quality rules before shipping. Returns a structured verdict with score \u2014 not just pass/fail.",
                "name": "output-validation"
              },
              {
                "arguments": [
                  {
                    "description": "Name for your policy (e.g., 'budget-cap', 'no-delete-actions')",
                    "name": "policy_name",
                    "required": true
                  },
                  {
                    "description": "Type of policy: budget, action_blocklist, rate_limit",
                    "name": "policy_type",
                    "required": true
                  }
                ],
                "description": "Define a governance policy for your agent, then check actions against it. Two steps: create the policy once with guardrail_create_policy, then call guardrail_check on every action.",
                "name": "setup-guardrails"
              }
            ]
          }
        },
        "url": "https://plith.ai/api/mcp"
      },
      "latency_ms": 160.07,
      "status": "ok"
    },
    "protocol_version_probe": {
      "details": {
        "claimed_version": "2024-11-05",
        "lag_days": 385,
        "latest_known_version": "2025-11-25",
        "releases_behind": 3,
        "validator_protocol_version": "2025-03-26"
      },
      "latency_ms": null,
      "status": "warning"
    },
    "provenance_divergence_probe": {
      "details": {
        "direct_official_match": true,
        "drift_fields": [],
        "metadata_document_count": 2,
        "registry_homepage": null,
        "registry_repository": null,
        "registry_title": null,
        "registry_version": null,
        "server_card_homepage": null,
        "server_card_repository": null,
        "server_card_title": "Plith",
        "server_card_version": "1.0.0"
      },
      "latency_ms": null,
      "status": "ok"
    },
    "request_association_probe": {
      "details": {
        "advertised_capabilities": [
          "roots"
        ],
        "protocol_version": "2024-11-05",
        "reason": "no_session_id_for_idle_observation"
      },
      "latency_ms": null,
      "status": "warning"
    },
    "resource_read": {
      "details": {
        "headers": {
          "content-type": "application/json",
          "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
        },
        "http_status": 200,
        "payload": {
          "id": 6,
          "jsonrpc": "2.0",
          "result": {
            "contents": [
              {
                "mimeType": "application/json",
                "text": "[\n  {\n    \"task_type\": \"bug_diagnosis\",\n    \"description\": \"Bug Diagnosis\",\n    \"example_input\": \"debug, diagnose the bug, analyze the bug\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"bug_fix\",\n    \"description\": \"Bug Fix & Diagnosis\",\n    \"example_input\": \"fix the bug, fix this bug, broken\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"code_implementation\",\n    \"description\": \"Code Implementation\",\n    \"example_input\": \"implement, code, build\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"code_review\",\n    \"description\": \"Code Review & Security Audit\",\n    \"example_input\": \"code review, review code, security audit\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"codebase_reconciliation\",\n    \"description\": \"Codebase Reconciliation\",\n    \"example_input\": \"reconcile, codebase reconciliation, verify design against code\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"competitive_scan\",\n    \"description\": \"Competitive Landscape Scan\",\n    \"example_input\": \"competitive, scan, competitor\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"compliance_audit\",\n    \"description\": \"Compliance & Legal Audit\",\n    \"example_input\": \"compliance, audit, retention\",\n    \"rigor_levels\": [\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"data_security_assessment\",\n    \"description\": \"Data Security Assessment\",\n    \"example_input\": \"data security assessment, security audit, security posture\",\n    \"rigor_levels\": [\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"dct_triage\",\n    \"description\": \"Dormant Capability Triage\",\n    \"example_input\": \"dormant capability, dormant feature, half-built\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"deployment_execution\",\n    \"description\": \"Deployment Execution\",\n    \"example_input\": \"deploy, deployment, activate\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"distribution_analysis\",\n    \"description\": \"Distribution Channel Analysis\",\n    \"example_input\": \"distribution, channel, listing\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\"\n    ]\n  },\n  {\n    \"task_type\": \"documentation\",\n    \"description\": \"Documentation & Technical Writing\",\n    \"example_input\": \"write documentation, update docs, API documentation\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"dx_audit\",\n    \"description\": \"Developer Experience Audit\",\n    \"example_input\": \"DX, developer experience, documentation\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"external_dependency_verification\",\n    \"description\": \"External Dependency Verification\",\n    \"example_input\": \"dependency, verification, external\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"financial_analysis\",\n    \"description\": \"Financial Analysis\",\n    \"example_input\": \"revenue, margin, P&L\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"governance_change\",\n    \"description\": \"Governance & Policy Change\",\n    \"example_input\": \"governance, policy, protocol\",\n    \"rigor_levels\": [\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"implementation_prompt_generation\",\n    \"description\": \"Implementation Prompt Generation\",\n    \"example_input\": \"implementation prompt, claude code prompt, coding agent prompt\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"incident_diagnosis\",\n    \"description\": \"Incident Diagnosis\",\n    \"example_input\": \"diagnose the incident, what caused the outage, why is the system down\",\n    \"rigor_levels\": [\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"incident_response\",\n    \"description\": \"Incident Response\",\n    \"example_input\": \"respond to incident, restore service, mitigate\",\n    \"rigor_levels\": [\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"kill_evaluation\",\n    \"description\": \"Product Kill Evaluation\",\n    \"example_input\": \"kill, decommission, sunset\",\n    \"rigor_levels\": [\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"launch_plan\",\n    \"description\": \"Launch Plan\",\n    \"example_input\": \"launch plan, go-to-market, GTM\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"live_assumption_validation\",\n    \"description\": \"Live Assumption Validation\",\n    \"example_input\": \"assumption, validation, verify\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"market_sizing\",\n    \"description\": \"Market Sizing\",\n    \"example_input\": \"market size, market sizing, TAM\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"org_assessment\",\n    \"description\": \"Organizational Assessment\",\n    \"example_input\": \"scorecard, trust level, capability gap\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"performance_diagnosis\",\n    \"description\": \"Performance Diagnosis\",\n    \"example_input\": \"diagnose slowness, find the bottleneck, why is X slow\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"performance_optimization\",\n    \"description\": \"Performance Optimization\",\n    \"example_input\": \"optimize, speed up, make X faster\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"pricing_study\",\n    \"description\": \"Pricing Study\",\n    \"example_input\": \"pricing study, price sensitivity, willingness to pay\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"requirements_analysis\",\n    \"description\": \"Requirements Analysis\",\n    \"example_input\": \"requirements, brief, strategic decision\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"research_task\",\n    \"description\": \"Research & Investigation\",\n    \"example_input\": \"research, investigate, survey\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"risk_register\",\n    \"description\": \"Risk Register\",\n    \"example_input\": \"risk register, risk assessment, identify risks\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"root_cause_analysis\",\n    \"description\": \"Root Cause Analysis\",\n    \"example_input\": \"root cause, why did this happen, why does this keep\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"solution_design\",\n    \"description\": \"Solution Design & Architecture\",\n    \"example_input\": \"design, architecture, solution\",\n    \"rigor_levels\": [\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"strategic_evaluation\",\n    \"description\": \"Strategic Evaluation\",\n    \"example_input\": \"evaluate whether, should we, assess whether\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"strategic_synthesis\",\n    \"description\": \"Strategic Synthesis\",\n    \"example_input\": \"synthesis, cross-pillar, coordination\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"suite_assessment\",\n    \"description\": \"Suite Health Assessment\",\n    \"example_input\": \"suite, product health, enhancement\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"swot_analysis\",\n    \"description\": \"SWOT Analysis\",\n    \"example_input\": \"SWOT, SWOT analysis, strengths weaknesses opportunities threats\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"user_research_synthesis\",\n    \"description\": \"User Research Synthesis\",\n    \"example_input\": \"user research, synthesis, interview synthesis\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"user_story_definition\",\n    \"description\": \"User Story Definition\",\n    \"example_input\": \"user story, user stories, write stories\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"vendor_evaluation\",\n    \"description\": \"Vendor Evaluation\",\n    \"example_input\": \"vendor evaluation, vendor selection, vendor comparison\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\",\n      \"thorough\"\n    ]\n  },\n  {\n    \"task_type\": \"weekly_strategic_report\",\n    \"description\": \"Weekly Strategic Report\",\n    \"example_input\": \"weekly, report, portfolio health\",\n    \"rigor_levels\": [\n      \"quick\",\n      \"standard\"\n    ]\n  }\n]",
                "uri": "rigor://task-types"
              }
            ]
          }
        },
        "resource_uri": "rigor://task-types",
        "url": "https://plith.ai/api/mcp"
      },
      "latency_ms": 43.8,
      "status": "ok"
    },
    "resources_list": {
      "details": {
        "headers": {
          "content-type": "application/json",
          "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
        },
        "http_status": 200,
        "payload": {
          "id": 5,
          "jsonrpc": "2.0",
          "result": {
            "resources": [
              {
                "description": "25+ task types Rigor can handle \u2014 solution design, code review, root cause analysis, requirements analysis, and more. Each with description and example input.",
                "mimeType": "application/json",
                "name": "Rigor Task Type Catalog",
                "uri": "rigor://task-types"
              },
              {
                "description": "Credit packs, example workflow costs, and free tier details. Exact cost shown in every plan response before execution.",
                "mimeType": "text/plain",
                "name": "Rigor Pricing Overview",
                "uri": "rigor://pricing"
              },
              {
                "description": "Get an API key and make your first call in under 60 seconds. Covers DedupQ, BurnRate, and PitfallDB.",
                "mimeType": "text/plain",
                "name": "Operations Quickstart",
                "uri": "operations://quickstart"
              },
              {
                "description": "Preview failure patterns from PitfallDB across common task types. Shows what the shared knowledge base contains.",
                "mimeType": "application/json",
                "name": "Sample Failure Patterns",
                "uri": "operations://pitfalls-sample"
              },
              {
                "description": "Example governance policies: budget caps, action blocklists, rate limits. Copy and adapt for your use case.",
                "mimeType": "application/json",
                "name": "GuardRail Policy Examples",
                "uri": "governance://policy-examples"
              },
              {
                "description": "Example validation rule sets: content requirements, schema checks, length constraints, custom directives.",
                "mimeType": "application/json",
                "name": "QualityGate Rule Examples",
                "uri": "governance://validation-rules"
              }
            ]
          }
        },
        "url": "https://plith.ai/api/mcp"
      },
      "latency_ms": 103.38,
      "status": "ok"
    },
    "server_card": {
      "details": {
        "headers": {
          "content-type": "application/json",
          "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
        },
        "http_status": 200,
        "payload": {
          "authentication": {
            "instructions": "Optional. Without a key, read-only free tools work with rate limits (30/min, 500/day). For full access: curl -X POST https://plith.ai/api/keys \u2014 1,000 free credits/month, no card required.",
            "required": false,
            "schemes": [
              "apiKey"
            ]
          },
          "configSchema": {
            "properties": {
              "default_model": {
                "default": "",
                "description": "Default LLM model name for BurnRate cost estimates (e.g. claude-sonnet-4-6)",
                "type": "string"
              },
              "similarity_threshold": {
                "default": "0.80",
                "description": "Default cosine similarity threshold for DedupQ (0.5-1.0). Default: 0.80",
                "type": "string"
              },
              "x-api-key": {
                "description": "Your Plith API key. Optional for read-only tools (stats, trends, policies, budget, balance). Required for tools that write data or cost credits. Get one free: curl -X POST https://plith.ai/api/keys",
                "type": "string"
              }
            },
            "required": [],
            "type": "object"
          },
          "prompts": [
            {
              "arguments": [
                {
                  "description": "Describe the task you want a deliverable for (e.g., 'Design a caching layer for our API gateway')",
                  "name": "task_description",
                  "required": true
                },
                {
                  "description": "Quality tier: quick, standard, or thorough. Affects step count and review depth.",
                  "name": "rigor_level",
                  "required": false
                }
              ],
              "description": "Explore what Rigor would do for your task at zero cost. Returns the full workflow plan, step descriptions, cost estimate, and alternatives without executing anything.",
              "name": "try-rigor-free"
            },
            {
              "arguments": [
                {
                  "description": "The task to produce a deliverable for",
                  "name": "task_description",
                  "required": true
                },
                {
                  "description": "Quality tier: quick, standard, or thorough",
                  "name": "rigor_level",
                  "required": false
                }
              ],
              "description": "Plan a Rigor workflow, review the estimated cost, then execute it. Your agent receives structured deliverable output from each step \u2014 requirements, research, analysis, the deliverable, and quality review.",
              "name": "plan-and-execute"
            },
            {
              "arguments": [
                {
                  "description": "The task your agent is about to execute",
                  "name": "task_description",
                  "required": true
                },
                {
                  "description": "Category of task (e.g., code_generation, data_analysis, web_search)",
                  "name": "task_type",
                  "required": false
                }
              ],
              "description": "Before executing any agent task: check for duplicate work, query known failure patterns, and verify budget policy. Prevents redundant LLM calls and known mistakes.",
              "name": "agent-preflight"
            },
            {
              "arguments": [
                {
                  "description": "LLM model name (e.g., claude-sonnet-4-6, gpt-4o)",
                  "name": "model",
                  "required": true
                },
                {
                  "description": "Expected input token count",
                  "name": "estimated_input_tokens",
                  "required": true
                },
                {
                  "description": "Expected output token count",
                  "name": "estimated_output_tokens",
                  "required": true
                }
              ],
              "description": "Estimate the cost of an LLM call before making it, then log the actual cost after execution. Builds calibration data that improves future estimates over time.",
              "name": "cost-aware-execution"
            },
            {
              "arguments": [
                {
                  "description": "The agent output to validate",
                  "name": "content",
                  "required": true
                },
                {
                  "description": "Validation rules object with must_include, must_not_include, max_length, or custom directives",
                  "name": "rules",
                  "required": false
                }
              ],
              "description": "After completing a task, validate the output against quality rules before shipping. Returns a structured verdict with score \u2014 not just pass/fail.",
              "name": "output-validation"
            },
            {
              "arguments": [
                {
                  "description": "Name for your policy (e.g., 'budget-cap', 'no-delete-actions')",
                  "name": "policy_name",
                  "required": true
                },
                {
                  "description": "Type of policy: budget, action_blocklist, rate_limit",
                  "name": "policy_type",
                  "required": true
                }
              ],
              "description": "Define a governance policy for your agent, then check actions against it. Two steps: create the policy once with guardrail_create_policy, then call guardrail_check on every action.",
              "name": "setup-guardrails"
            }
          ],
          "prompts_count": 6,
          "resources": [
            {
              "description": "25+ task types Rigor can handle \u2014 solution design, code review, root cause analysis, requirements analysis, and more. Each with description and example input.",
              "mimeType": "application/json",
              "name": "Rigor Task Type Catalog",
              "uri": "rigor://task-types"
            },
            {
              "description": "Credit packs, example workflow costs, and free tier details. Exact cost shown in every plan response before execution.",
              "mimeType": "text/plain",
              "name": "Rigor Pricing Overview",
              "uri": "rigor://pricing"
            },
            {
              "description": "Get an API key and make your first call in under 60 seconds. Covers DedupQ, BurnRate, and PitfallDB.",
              "mimeType": "text/plain",
              "name": "Operations Quickstart",
              "uri": "operations://quickstart"
            },
            {
              "description": "Preview failure patterns from PitfallDB across common task types. Shows what the shared knowledge base contains.",
              "mimeType": "application/json",
              "name": "Sample Failure Patterns",
              "uri": "operations://pitfalls-sample"
            },
            {
              "description": "Example governance policies: budget caps, action blocklists, rate limits. Copy and adapt for your use case.",
              "mimeType": "application/json",
              "name": "GuardRail Policy Examples",
              "uri": "governance://policy-examples"
            },
            {
              "description": "Example validation rule sets: content requirements, schema checks, length constraints, custom directives.",
              "mimeType": "application/json",
              "name": "QualityGate Rule Examples",
              "uri": "governance://validation-rules"
            }
          ],
          "resources_count": 6,
          "serverInfo": {
            "description": "Three suites \u2014 Rigor, Operations, Governance \u2014 exposing 15 discoverable MCP tools (plus 8 hidden, callable via suite endpoints). Workflow orchestration, task deduplication, cost prediction, output validation, behavioral governance, and shared failure intelligence for AI agents. 1,000 free credits/month.",
            "homepage": "https://plith.ai",
            "name": "Plith",
            "version": "1.0.0",
            "website": "https://plith.ai"
          },
          "serverUrl": "https://plith.ai/api/mcp",
          "suites": {
            "governance": {
              "endpoint": "https://plith.ai/api/mcp/governance",
              "full": "QualityGate validates agent output against rules you define \u2014 content requirements (must_include, must_not_include), regex patterns, JSON schema checks, length constraints, code syntax, and optional LLM-powered tone/factual analysis. Returns a structured verdict (pass/warn/fail) with score and per-check details. Use qualitygate_validate after every generation step; use qualitygate_trends to spot recurring failure patterns over time. GuardRail enforces runtime governance policies \u2014 budget caps, action blocklists, rate limits. Define policies once with guardrail_create_policy; call guardrail_check before each agent action. Decision is allow or deny with reason. List active policies with guardrail_list_policies. All checks are deterministic \u2014 no LLM. 1,000 free credits/month, no card required. plith.ai",
              "prompts_count": 2,
              "resources_count": 2,
              "serverCard": "https://plith.ai/.well-known/mcp/governance/server-card.json",
              "short": "Output validation with configurable quality rules and runtime policy enforcement for AI agents. Both return structured, machine-readable decisions.",
              "tools_count": 3
            },
            "operations": {
              "endpoint": "https://plith.ai/api/mcp/operations",
              "full": "DedupQ checks whether your agent already completed a semantically similar task \u2014 returns a cached result on hit, saving one LLM call. Use dedupq_check before executing, dedupq_complete after to cache the result. BurnRate estimates multi-step LLM plan cost before execution (burnrate_estimate) and tracks actual spend afterward (burnrate_track). Use burnrate_optimize to get a cheaper equivalent plan. burnrate_budget shows today's tracked spend and projection. PitfallDB queries known failure patterns with severity and fix recommendations for your task type (pitfalldb_query). Report new failures with pitfalldb_report \u2014 PII-scrubbed before storage. burnrate_track and pitfalldb_report are always free. 1,000 free credits/month, no card required. plith.ai",
              "prompts_count": 2,
              "resources_count": 2,
              "serverCard": "https://plith.ai/.well-known/mcp/operations/server-card.json",
              "short": "Task deduplication, LLM cost prediction, and shared failure intelligence for AI agents. Tracking calls are always free.",
              "tools_count": 8
            },
            "rigor": {
              "endpoint": "https://plith.ai/api/mcp/rigor",
              "full": "Rigor executes a defined methodology for each task type \u2014 requirements, research, analysis, deliverable, independent quality review \u2014 producing consistent structured output every run. Use rigor_plan (free) to see the full workflow, step count, and cost estimate before committing. Use rigor_execute to run end-to-end; poll with rigor_status. Supports 34+ task types including solution_design, code_review, code_implementation, competitive_scan, root_cause_analysis, governance_change, and more. Three analysis tiers: quick (lower cost), standard (default), thorough (deep review with extra passes). Board Chair approval gates for governance_change workflows. MCP tool integration via rigor_connections (GitHub, Claude Code). 1,000 free credits/month, no card required. plith.ai",
              "prompts_count": 2,
              "resources_count": 2,
              "serverCard": "https://plith.ai/.well-known/mcp/rigor/server-card.json",
              "short": "Structured multi-step workflows that produce production-quality deliverables. Automatic task classification, configurable analysis depth (quick/standard/thorough), and independent quality review. Plan any workflow free.",
              "tools_count": 4
            }
          },
          "tools": [
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Check for duplicate tasks"
              },
              "description": "Before executing any LLM task, check if an identical or semantically similar task has already been completed. Returns cached result on hit, saving one LLM call.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "content": {
                    "description": "The task content to check for duplicates. This is hashed and embedded for matching.",
                    "type": "string"
                  },
                  "hash_only": {
                    "description": "If true, skip vector similarity search and use exact hash matching only. Default: false.",
                    "type": "boolean"
                  },
                  "similarity_threshold": {
                    "description": "Cosine similarity threshold for semantic matching, 0.0 to 1.0. Default: 0.80.",
                    "type": "number"
                  },
                  "task_id": {
                    "description": "Optional caller task ID for tracing and cross-referencing with BurnRate.",
                    "type": "string"
                  }
                },
                "required": [
                  "content"
                ],
                "type": "object"
              },
              "name": "dedupq_check",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Store completed task result"
              },
              "description": "After executing a task, store the result so future identical or similar tasks return a cache hit.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "content": {
                    "description": "Original task content. Used to compute hash and embedding for future matching.",
                    "type": "string"
                  },
                  "hash_only": {
                    "description": "If true, skip embedding generation. Default: false.",
                    "type": "boolean"
                  },
                  "result": {
                    "description": "The task result to cache. Can be any JSON value."
                  },
                  "task_id": {
                    "description": "Optional task ID. Used as the database row ID if provided.",
                    "type": "string"
                  }
                },
                "required": [
                  "content",
                  "result"
                ],
                "type": "object"
              },
              "name": "dedupq_complete",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Estimate LLM cost for a plan"
              },
              "description": "Before executing a multi-step agent plan, estimate the total LLM cost. Returns per-step breakdown and optimization suggestions.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "plan": {
                    "description": "Array of plan steps with provider, model, and token estimates.",
                    "items": {
                      "properties": {
                        "cache_read_tokens": {
                          "description": "Optional. Cached prompt tokens for providers with prompt caching.",
                          "type": "number"
                        },
                        "estimated_input_tokens": {
                          "description": "Estimated prompt token count.",
                          "type": "number"
                        },
                        "estimated_output_tokens": {
                          "description": "Estimated completion token count.",
                          "type": "number"
                        },
                        "model": {
                          "description": "Model name: claude-sonnet-4-6, gpt-4o, etc.",
                          "type": "string"
                        },
                        "provider": {
                          "description": "LLM provider: anthropic, openai, google, etc.",
                          "type": "string"
                        },
                        "search_calls": {
                          "description": "Optional. Number of grounding/search calls (e.g. Gemini Search).",
                          "type": "number"
                        },
                        "step": {
                          "description": "Step identifier \u2014 string label or number.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "step",
                        "provider",
                        "model",
                        "estimated_input_tokens",
                        "estimated_output_tokens"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "plan"
                ],
                "type": "object"
              },
              "name": "burnrate_estimate",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Record actual LLM spend"
              },
              "description": "Log the actual cost of an LLM call after execution. Call this after every LLM request to build calibration data that improves burnrate_estimate accuracy over time. Free \u2014 no credits charged. Returns the recorded cost entry with computed margin versus the prior estimate when one exists for this model and token range.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "cache_read_tokens": {
                    "description": "Optional. Cache-read tokens.",
                    "type": "number"
                  },
                  "input_tokens": {
                    "description": "Actual prompt tokens used. Must be >= 0.",
                    "type": "number"
                  },
                  "model": {
                    "description": "Model identifier as returned by the provider. Examples: claude-sonnet-4-6, gpt-4o, gemini-2.0-flash, mistral-large-latest. Unknown models are accepted but cost may show as $0.",
                    "type": "string"
                  },
                  "output_tokens": {
                    "description": "Actual completion tokens used. Must be >= 0.",
                    "type": "number"
                  },
                  "provider": {
                    "description": "LLM provider identifier. Supported: anthropic, openai, google, mistral, cohere, deepseek, together, fireworks, groq. Must match the provider of the model used.",
                    "type": "string"
                  },
                  "task_id": {
                    "description": "Optional task ID for cross-referencing spend with DedupQ deduplication results. Use the same task_id passed to dedupq_check to link cost tracking with deduplication.",
                    "type": "string"
                  }
                },
                "required": [
                  "provider",
                  "model",
                  "input_tokens",
                  "output_tokens"
                ],
                "type": "object"
              },
              "name": "burnrate_track",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Optimize plan for lower cost"
              },
              "description": "Get a cheaper equivalent plan by substituting models with lower-cost alternatives. Call after burnrate_estimate if the estimated cost exceeds your budget. Returns the optimized plan with substituted models, new per-step costs, total savings, and whether the target_budget is met. Optionally set target_budget to constrain the optimization.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "plan": {
                    "description": "Array of plan steps. Same schema as burnrate_estimate: each step needs step, provider, model, estimated_input_tokens, estimated_output_tokens.",
                    "items": {
                      "properties": {
                        "estimated_input_tokens": {
                          "description": "Estimated input tokens.",
                          "type": "number"
                        },
                        "estimated_output_tokens": {
                          "description": "Estimated output tokens.",
                          "type": "number"
                        },
                        "model": {
                          "description": "Model name.",
                          "type": "string"
                        },
                        "provider": {
                          "description": "LLM provider.",
                          "type": "string"
                        },
                        "step": {
                          "description": "Step identifier \u2014 string label or number.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "step",
                        "provider",
                        "model",
                        "estimated_input_tokens",
                        "estimated_output_tokens"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "target_budget": {
                    "description": "Optional. Target total cost in USD.",
                    "type": "number"
                  }
                },
                "required": [
                  "plan"
                ],
                "type": "object"
              },
              "name": "burnrate_optimize",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get daily spend and budget"
              },
              "description": "Get today's tracked LLM spend, per-model breakdown, projection, and budget alerts. Free \u2014 no credits charged.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "daily_limit": {
                    "description": "Optional. Daily budget in USD. Enables alerts.",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "name": "burnrate_budget",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Validate agent output"
              },
              "description": "Validate agent output against your rules. Deterministic checks (regex, JSON schema, syntax) plus optional LLM-powered tone and factual analysis.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "check_types": {
                    "description": "Checks to run. Auto-inferred if omitted.",
                    "items": {
                      "enum": [
                        "directive_compliance",
                        "schema_validation",
                        "code_syntax",
                        "tone",
                        "factual_claims"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "directives": {
                    "description": "Directive objects. Types: must_include, must_not_include, must_match, must_not_match, must_contain, must_not_contain, min_length, max_length.",
                    "items": {
                      "properties": {
                        "name": {
                          "description": "Optional directive name.",
                          "type": "string"
                        },
                        "type": {
                          "description": "Directive type.",
                          "type": "string"
                        },
                        "value": {
                          "description": "Directive value \u2014 string pattern, regex, keyword array (as comma-separated string), or number (as string). Interpreted based on directive type.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "type",
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "language": {
                    "description": "Code language for syntax check: json, python, javascript, typescript.",
                    "type": "string"
                  },
                  "output": {
                    "description": "The agent output text to validate.",
                    "type": "string"
                  },
                  "override": {
                    "description": "Force pass. Requires override_reason.",
                    "type": "boolean"
                  },
                  "override_reason": {
                    "description": "Required when override is true.",
                    "type": "string"
                  },
                  "schema": {
                    "description": "JSON Schema to validate output against.",
                    "type": "object"
                  }
                },
                "required": [
                  "output"
                ],
                "type": "object"
              },
              "name": "qualitygate_validate",
              "suite": "governance"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Check action against policies"
              },
              "description": "Evaluate a proposed agent action against governance policies. Returns allow or deny. Deterministic rule evaluation \u2014 no LLM.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "agent_id": {
                    "description": "Agent identifier.",
                    "type": "string"
                  },
                  "proposed_action": {
                    "description": "Action to evaluate. Must contain a 'type' field.",
                    "properties": {
                      "type": {
                        "description": "Action type: http_request, delete_file, send_email, etc.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "agent_id",
                  "proposed_action"
                ],
                "type": "object"
              },
              "name": "guardrail_check",
              "suite": "governance"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Create governance policy"
              },
              "description": "Create a persistent governance policy that guardrail_check evaluates on every subsequent call. Define rules using and/or/not operators over action types, resource patterns, and budget thresholds. Call this before using guardrail_check \u2014 checks require at least one active policy. Policies persist until explicitly deleted. Duplicate policy names return an error. Returns the created policy with its ID and active status.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "action_types": {
                    "description": "Optional. Restrict this policy to only evaluate when proposed_action.type matches one of these values. Examples: ['file_write', 'api_call', 'db_delete']. Omit to apply the policy to all action types regardless of type field.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "description": {
                    "description": "Optional human-readable summary of what this policy enforces. Returned in guardrail_check responses and guardrail_list_policies output for auditability.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Unique policy name per org. Examples: 'no-delete-in-prod', 'budget-cap-50', 'pii-block'.",
                    "type": "string"
                  },
                  "priority": {
                    "description": "Optional. Evaluation order. Default: 0.",
                    "type": "number"
                  },
                  "rules": {
                    "description": "Array of rule objects evaluated against the proposed_action in guardrail_check. Leaf operators: eq, starts_with, contains, gt, lt (compare field to value). Compound operators: and, or, not (nest sub-rules in a rules array). Example: [{operator:'eq', field:'type', value:'file_write'}] blocks all file writes. Nested example: [{operator:'and', rules:[{operator:'eq',field:'type',value:'api_call'},{operator:'contains',field:'url',value:'prod'}]}] blocks prod API calls.",
                    "items": {
                      "properties": {
                        "field": {
                          "description": "Field path on proposed_action (e.g. 'action_type', 'path', 'amount').",
                          "type": "string"
                        },
                        "operator": {
                          "description": "Rule operator: eq | starts_with | contains | gt | lt | and | or | not.",
                          "type": "string"
                        },
                        "rules": {
                          "description": "Nested rules for compound operators (and/or/not).",
                          "type": "array"
                        },
                        "value": {
                          "description": "Comparison value for leaf operators. String, number, or boolean as string.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "operator"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "name",
                  "rules"
                ],
                "type": "object"
              },
              "name": "guardrail_create_policy",
              "suite": "governance"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Query known failure patterns"
              },
              "description": "Check for known failure patterns before executing a task type. Returns pitfalls with severity, fix suggestions, and confidence scores.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "filters": {
                    "description": "Optional filters.",
                    "properties": {
                      "framework": {
                        "description": "Framework.",
                        "type": "string"
                      },
                      "language": {
                        "description": "Programming language.",
                        "type": "string"
                      },
                      "provider": {
                        "description": "LLM provider.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "task_description": {
                    "description": "Optional. Natural-language task description for semantic search.",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Task category: code_generation, web_search, data_analysis, etc.",
                    "type": "string"
                  }
                },
                "required": [
                  "task_type"
                ],
                "type": "object"
              },
              "name": "pitfalldb_query",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Report an agent failure"
              },
              "description": "Report an agent failure. PII-scrubbed before storage. Linked to existing pitfalls if similar. Free \u2014 no credits charged.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "failure": {
                    "description": "Failure details.",
                    "properties": {
                      "error_message": {
                        "description": "Error message (PII-scrubbed).",
                        "type": "string"
                      },
                      "error_type": {
                        "description": "Error category: tool_call_ignored, syntax_error, etc.",
                        "type": "string"
                      },
                      "fix_applied": {
                        "description": "Fix applied (PII-scrubbed).",
                        "type": "string"
                      },
                      "fix_worked": {
                        "description": "Whether the fix worked.",
                        "type": "boolean"
                      },
                      "framework": {
                        "description": "Framework.",
                        "type": "string"
                      },
                      "language": {
                        "description": "Programming language.",
                        "type": "string"
                      },
                      "provider": {
                        "description": "LLM provider.",
                        "type": "string"
                      },
                      "root_cause": {
                        "description": "Root cause analysis (PII-scrubbed).",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "task_description": {
                    "description": "Description of the failed task.",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Task category.",
                    "type": "string"
                  }
                },
                "required": [
                  "task_type",
                  "task_description",
                  "failure"
                ],
                "type": "object"
              },
              "name": "pitfalldb_report",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Plan a Rigor workflow"
              },
              "description": "Before executing a complex task, get a structured workflow plan with per-step cost estimates. Classifies your task, selects the optimal tool sequence from 110+ validated tools, and returns the full plan without executing anything. Free \u2014 no credits charged.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "preferences": {
                    "description": "Optional workflow preferences.",
                    "properties": {
                      "max_budget_usd": {
                        "description": "Maximum budget in USD. Plan will warn if estimated cost exceeds this.",
                        "type": "number"
                      },
                      "rigor_level": {
                        "description": "Depth of analysis: quick (fast, lower cost), standard (default, balanced), thorough (deep review, higher cost).",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "task_description": {
                    "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
                    "type": "string"
                  }
                },
                "required": [
                  "task_description"
                ],
                "type": "object"
              },
              "name": "rigor_plan",
              "suite": "rigor"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Execute a Rigor workflow"
              },
              "description": "Execute a structured workflow end-to-end. Classifies the task, selects the optimal tool sequence, and executes each step with the right LLM model. Returns a complete deliverable \u2014 solution designs, competitive analyses, governance documents, and more. Supports SSE streaming for real-time progress, webhook callback, or polling.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "context": {
                    "description": "Additional context for the workflow.",
                    "properties": {
                      "additional_context": {
                        "description": "Free-form context the workflow steps can reference.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "delivery": {
                    "description": "Delivery method. Default: polling (MCP clients typically can't handle SSE).",
                    "properties": {
                      "method": {
                        "description": "sse | webhook | polling. Default for MCP: polling.",
                        "type": "string"
                      },
                      "webhook_url": {
                        "description": "Required if method is webhook. Must be HTTPS.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "preferences": {
                    "description": "Optional workflow preferences.",
                    "properties": {
                      "max_budget_usd": {
                        "description": "Maximum budget in USD.",
                        "type": "number"
                      },
                      "rigor_level": {
                        "description": "quick | standard (default) | thorough. Controls analysis depth and cost.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "task_description": {
                    "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
                    "type": "string"
                  }
                },
                "required": [
                  "task_description"
                ],
                "type": "object"
              },
              "name": "rigor_execute",
              "suite": "rigor"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Check workflow status"
              },
              "description": "Check the status of a running or completed Rigor workflow. Returns progress, step results, and the full deliverable when complete. Use after rigor_execute with polling delivery to retrieve results.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "workflow_id": {
                    "description": "The workflow ID returned by rigor_execute (format: wr_xxx).",
                    "type": "string"
                  }
                },
                "required": [
                  "workflow_id"
                ],
                "type": "object"
              },
              "name": "rigor_status",
              "suite": "rigor"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List Rigor workflows"
              },
              "description": "List all Rigor workflows for your organization with filtering and pagination. Returns status, progress, capacity usage, and available actions per workflow. Use to monitor workflow state, understand concurrent limit usage, and identify stuck or completed workflows.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "counts_toward_limit": {
                    "description": "Filter to workflows counting toward the concurrent limit",
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Pagination cursor (created_at timestamp from previous page)",
                    "type": "string"
                  },
                  "limit": {
                    "description": "Page size (default 20, max 100)",
                    "type": "number"
                  },
                  "status": {
                    "description": "Filter by status (comma-separated). Valid values: executing, step_executing, completed, failed, halted, pending_approval, cancelled. E.g. \"halted,failed,pending_approval\"",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Filter by classified task type",
                    "type": "string"
                  }
                },
                "required": [],
                "type": "object"
              },
              "name": "rigor_workflows",
              "suite": "rigor"
            }
          ],
          "tools_count": 15
        },
        "url": "https://plith.ai/.well-known/mcp/server-card.json"
      },
      "latency_ms": 366.14,
      "status": "ok"
    },
    "session_resume_probe": {
      "details": {
        "protocol_version": "2024-11-05",
        "reason": "no_session_id",
        "resume_expected": true,
        "transport": "streamable-http"
      },
      "latency_ms": null,
      "status": "warning"
    },
    "step_up_auth_probe": {
      "details": {
        "auth_required_checks": [],
        "broad_scopes": [],
        "challenge_headers": [],
        "minimal_scope_documented": false,
        "oauth_present": false,
        "scope_specificity_ratio": 0.0,
        "step_up_signals": [],
        "supported_scopes": []
      },
      "latency_ms": null,
      "status": "missing"
    },
    "tool_snapshot_probe": {
      "details": {
        "added": [],
        "changed_outputs": [],
        "current_tool_count": 15,
        "previous_tool_count": 15,
        "removed": [],
        "similarity": 1.0
      },
      "latency_ms": null,
      "status": "ok"
    },
    "tools_list": {
      "details": {
        "headers": {
          "content-type": "application/json",
          "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
        },
        "http_status": 200,
        "payload": {
          "id": 2,
          "jsonrpc": "2.0",
          "result": {
            "tools": [
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Check for duplicate tasks"
                },
                "description": "Before executing any LLM task, check if an identical or semantically similar task has already been completed. Returns cached result on hit, saving one LLM call.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "content": {
                      "description": "The task content to check for duplicates. This is hashed and embedded for matching.",
                      "type": "string"
                    },
                    "hash_only": {
                      "description": "If true, skip vector similarity search and use exact hash matching only. Default: false.",
                      "type": "boolean"
                    },
                    "similarity_threshold": {
                      "description": "Cosine similarity threshold for semantic matching, 0.0 to 1.0. Default: 0.80.",
                      "type": "number"
                    },
                    "task_id": {
                      "description": "Optional caller task ID for tracing and cross-referencing with BurnRate.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "content"
                  ],
                  "type": "object"
                },
                "name": "dedupq_check",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Store completed task result"
                },
                "description": "After executing a task, store the result so future identical or similar tasks return a cache hit.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "content": {
                      "description": "Original task content. Used to compute hash and embedding for future matching.",
                      "type": "string"
                    },
                    "hash_only": {
                      "description": "If true, skip embedding generation. Default: false.",
                      "type": "boolean"
                    },
                    "result": {
                      "description": "The task result to cache. Can be any JSON value."
                    },
                    "task_id": {
                      "description": "Optional task ID. Used as the database row ID if provided.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "content",
                    "result"
                  ],
                  "type": "object"
                },
                "name": "dedupq_complete",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Estimate LLM cost for a plan"
                },
                "description": "Before executing a multi-step agent plan, estimate the total LLM cost. Returns per-step breakdown and optimization suggestions.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "plan": {
                      "description": "Array of plan steps with provider, model, and token estimates.",
                      "items": {
                        "properties": {
                          "cache_read_tokens": {
                            "description": "Optional. Cached prompt tokens for providers with prompt caching.",
                            "type": "number"
                          },
                          "estimated_input_tokens": {
                            "description": "Estimated prompt token count.",
                            "type": "number"
                          },
                          "estimated_output_tokens": {
                            "description": "Estimated completion token count.",
                            "type": "number"
                          },
                          "model": {
                            "description": "Model name: claude-sonnet-4-6, gpt-4o, etc.",
                            "type": "string"
                          },
                          "provider": {
                            "description": "LLM provider: anthropic, openai, google, etc.",
                            "type": "string"
                          },
                          "search_calls": {
                            "description": "Optional. Number of grounding/search calls (e.g. Gemini Search).",
                            "type": "number"
                          },
                          "step": {
                            "description": "Step identifier \u2014 string label or number.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "step",
                          "provider",
                          "model",
                          "estimated_input_tokens",
                          "estimated_output_tokens"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "plan"
                  ],
                  "type": "object"
                },
                "name": "burnrate_estimate",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Record actual LLM spend"
                },
                "description": "Log the actual cost of an LLM call after execution. Call this after every LLM request to build calibration data that improves burnrate_estimate accuracy over time. Free \u2014 no credits charged. Returns the recorded cost entry with computed margin versus the prior estimate when one exists for this model and token range.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "cache_read_tokens": {
                      "description": "Optional. Cache-read tokens.",
                      "type": "number"
                    },
                    "input_tokens": {
                      "description": "Actual prompt tokens used. Must be >= 0.",
                      "type": "number"
                    },
                    "model": {
                      "description": "Model identifier as returned by the provider. Examples: claude-sonnet-4-6, gpt-4o, gemini-2.0-flash, mistral-large-latest. Unknown models are accepted but cost may show as $0.",
                      "type": "string"
                    },
                    "output_tokens": {
                      "description": "Actual completion tokens used. Must be >= 0.",
                      "type": "number"
                    },
                    "provider": {
                      "description": "LLM provider identifier. Supported: anthropic, openai, google, mistral, cohere, deepseek, together, fireworks, groq. Must match the provider of the model used.",
                      "type": "string"
                    },
                    "task_id": {
                      "description": "Optional task ID for cross-referencing spend with DedupQ deduplication results. Use the same task_id passed to dedupq_check to link cost tracking with deduplication.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider",
                    "model",
                    "input_tokens",
                    "output_tokens"
                  ],
                  "type": "object"
                },
                "name": "burnrate_track",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Optimize plan for lower cost"
                },
                "description": "Get a cheaper equivalent plan by substituting models with lower-cost alternatives. Call after burnrate_estimate if the estimated cost exceeds your budget. Returns the optimized plan with substituted models, new per-step costs, total savings, and whether the target_budget is met. Optionally set target_budget to constrain the optimization.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "plan": {
                      "description": "Array of plan steps. Same schema as burnrate_estimate: each step needs step, provider, model, estimated_input_tokens, estimated_output_tokens.",
                      "items": {
                        "properties": {
                          "estimated_input_tokens": {
                            "description": "Estimated input tokens.",
                            "type": "number"
                          },
                          "estimated_output_tokens": {
                            "description": "Estimated output tokens.",
                            "type": "number"
                          },
                          "model": {
                            "description": "Model name.",
                            "type": "string"
                          },
                          "provider": {
                            "description": "LLM provider.",
                            "type": "string"
                          },
                          "step": {
                            "description": "Step identifier \u2014 string label or number.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "step",
                          "provider",
                          "model",
                          "estimated_input_tokens",
                          "estimated_output_tokens"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "target_budget": {
                      "description": "Optional. Target total cost in USD.",
                      "type": "number"
                    }
                  },
                  "required": [
                    "plan"
                  ],
                  "type": "object"
                },
                "name": "burnrate_optimize",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": true,
                  "title": "Get daily spend and budget"
                },
                "description": "Get today's tracked LLM spend, per-model breakdown, projection, and budget alerts. Free \u2014 no credits charged.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "daily_limit": {
                      "description": "Optional. Daily budget in USD. Enables alerts.",
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "name": "burnrate_budget",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Validate agent output"
                },
                "description": "Validate agent output against your rules. Deterministic checks (regex, JSON schema, syntax) plus optional LLM-powered tone and factual analysis.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "check_types": {
                      "description": "Checks to run. Auto-inferred if omitted.",
                      "items": {
                        "enum": [
                          "directive_compliance",
                          "schema_validation",
                          "code_syntax",
                          "tone",
                          "factual_claims"
                        ],
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "directives": {
                      "description": "Directive objects. Types: must_include, must_not_include, must_match, must_not_match, must_contain, must_not_contain, min_length, max_length.",
                      "items": {
                        "properties": {
                          "name": {
                            "description": "Optional directive name.",
                            "type": "string"
                          },
                          "type": {
                            "description": "Directive type.",
                            "type": "string"
                          },
                          "value": {
                            "description": "Directive value \u2014 string pattern, regex, keyword array (as comma-separated string), or number (as string). Interpreted based on directive type.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "value"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "language": {
                      "description": "Code language for syntax check: json, python, javascript, typescript.",
                      "type": "string"
                    },
                    "output": {
                      "description": "The agent output text to validate.",
                      "type": "string"
                    },
                    "override": {
                      "description": "Force pass. Requires override_reason.",
                      "type": "boolean"
                    },
                    "override_reason": {
                      "description": "Required when override is true.",
                      "type": "string"
                    },
                    "schema": {
                      "description": "JSON Schema to validate output against.",
                      "type": "object"
                    }
                  },
                  "required": [
                    "output"
                  ],
                  "type": "object"
                },
                "name": "qualitygate_validate",
                "suite": "governance"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Check action against policies"
                },
                "description": "Evaluate a proposed agent action against governance policies. Returns allow or deny. Deterministic rule evaluation \u2014 no LLM.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "agent_id": {
                      "description": "Agent identifier.",
                      "type": "string"
                    },
                    "proposed_action": {
                      "description": "Action to evaluate. Must contain a 'type' field.",
                      "properties": {
                        "type": {
                          "description": "Action type: http_request, delete_file, send_email, etc.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "agent_id",
                    "proposed_action"
                  ],
                  "type": "object"
                },
                "name": "guardrail_check",
                "suite": "governance"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": false,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Create governance policy"
                },
                "description": "Create a persistent governance policy that guardrail_check evaluates on every subsequent call. Define rules using and/or/not operators over action types, resource patterns, and budget thresholds. Call this before using guardrail_check \u2014 checks require at least one active policy. Policies persist until explicitly deleted. Duplicate policy names return an error. Returns the created policy with its ID and active status.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "action_types": {
                      "description": "Optional. Restrict this policy to only evaluate when proposed_action.type matches one of these values. Examples: ['file_write', 'api_call', 'db_delete']. Omit to apply the policy to all action types regardless of type field.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "description": {
                      "description": "Optional human-readable summary of what this policy enforces. Returned in guardrail_check responses and guardrail_list_policies output for auditability.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Unique policy name per org. Examples: 'no-delete-in-prod', 'budget-cap-50', 'pii-block'.",
                      "type": "string"
                    },
                    "priority": {
                      "description": "Optional. Evaluation order. Default: 0.",
                      "type": "number"
                    },
                    "rules": {
                      "description": "Array of rule objects evaluated against the proposed_action in guardrail_check. Leaf operators: eq, starts_with, contains, gt, lt (compare field to value). Compound operators: and, or, not (nest sub-rules in a rules array). Example: [{operator:'eq', field:'type', value:'file_write'}] blocks all file writes. Nested example: [{operator:'and', rules:[{operator:'eq',field:'type',value:'api_call'},{operator:'contains',field:'url',value:'prod'}]}] blocks prod API calls.",
                      "items": {
                        "properties": {
                          "field": {
                            "description": "Field path on proposed_action (e.g. 'action_type', 'path', 'amount').",
                            "type": "string"
                          },
                          "operator": {
                            "description": "Rule operator: eq | starts_with | contains | gt | lt | and | or | not.",
                            "type": "string"
                          },
                          "rules": {
                            "description": "Nested rules for compound operators (and/or/not).",
                            "type": "array"
                          },
                          "value": {
                            "description": "Comparison value for leaf operators. String, number, or boolean as string.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "operator"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "name",
                    "rules"
                  ],
                  "type": "object"
                },
                "name": "guardrail_create_policy",
                "suite": "governance"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Query known failure patterns"
                },
                "description": "Check for known failure patterns before executing a task type. Returns pitfalls with severity, fix suggestions, and confidence scores.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "filters": {
                      "description": "Optional filters.",
                      "properties": {
                        "framework": {
                          "description": "Framework.",
                          "type": "string"
                        },
                        "language": {
                          "description": "Programming language.",
                          "type": "string"
                        },
                        "provider": {
                          "description": "LLM provider.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "task_description": {
                      "description": "Optional. Natural-language task description for semantic search.",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Task category: code_generation, web_search, data_analysis, etc.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "task_type"
                  ],
                  "type": "object"
                },
                "name": "pitfalldb_query",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Report an agent failure"
                },
                "description": "Report an agent failure. PII-scrubbed before storage. Linked to existing pitfalls if similar. Free \u2014 no credits charged.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "failure": {
                      "description": "Failure details.",
                      "properties": {
                        "error_message": {
                          "description": "Error message (PII-scrubbed).",
                          "type": "string"
                        },
                        "error_type": {
                          "description": "Error category: tool_call_ignored, syntax_error, etc.",
                          "type": "string"
                        },
                        "fix_applied": {
                          "description": "Fix applied (PII-scrubbed).",
                          "type": "string"
                        },
                        "fix_worked": {
                          "description": "Whether the fix worked.",
                          "type": "boolean"
                        },
                        "framework": {
                          "description": "Framework.",
                          "type": "string"
                        },
                        "language": {
                          "description": "Programming language.",
                          "type": "string"
                        },
                        "provider": {
                          "description": "LLM provider.",
                          "type": "string"
                        },
                        "root_cause": {
                          "description": "Root cause analysis (PII-scrubbed).",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "task_description": {
                      "description": "Description of the failed task.",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Task category.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "task_type",
                    "task_description",
                    "failure"
                  ],
                  "type": "object"
                },
                "name": "pitfalldb_report",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": true,
                  "title": "Plan a Rigor workflow"
                },
                "description": "Before executing a complex task, get a structured workflow plan with per-step cost estimates. Classifies your task, selects the optimal tool sequence from 110+ validated tools, and returns the full plan without executing anything. Free \u2014 no credits charged.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "preferences": {
                      "description": "Optional workflow preferences.",
                      "properties": {
                        "max_budget_usd": {
                          "description": "Maximum budget in USD. Plan will warn if estimated cost exceeds this.",
                          "type": "number"
                        },
                        "rigor_level": {
                          "description": "Depth of analysis: quick (fast, lower cost), standard (default, balanced), thorough (deep review, higher cost).",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "task_description": {
                      "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "task_description"
                  ],
                  "type": "object"
                },
                "name": "rigor_plan",
                "suite": "rigor"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": false,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Execute a Rigor workflow"
                },
                "description": "Execute a structured workflow end-to-end. Classifies the task, selects the optimal tool sequence, and executes each step with the right LLM model. Returns a complete deliverable \u2014 solution designs, competitive analyses, governance documents, and more. Supports SSE streaming for real-time progress, webhook callback, or polling.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "context": {
                      "description": "Additional context for the workflow.",
                      "properties": {
                        "additional_context": {
                          "description": "Free-form context the workflow steps can reference.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "delivery": {
                      "description": "Delivery method. Default: polling (MCP clients typically can't handle SSE).",
                      "properties": {
                        "method": {
                          "description": "sse | webhook | polling. Default for MCP: polling.",
                          "type": "string"
                        },
                        "webhook_url": {
                          "description": "Required if method is webhook. Must be HTTPS.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "preferences": {
                      "description": "Optional workflow preferences.",
                      "properties": {
                        "max_budget_usd": {
                          "description": "Maximum budget in USD.",
                          "type": "number"
                        },
                        "rigor_level": {
                          "description": "quick | standard (default) | thorough. Controls analysis depth and cost.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "task_description": {
                      "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "task_description"
                  ],
                  "type": "object"
                },
                "name": "rigor_execute",
                "suite": "rigor"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": true,
                  "title": "Check workflow status"
                },
                "description": "Check the status of a running or completed Rigor workflow. Returns progress, step results, and the full deliverable when complete. Use after rigor_execute with polling delivery to retrieve results.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "workflow_id": {
                      "description": "The workflow ID returned by rigor_execute (format: wr_xxx).",
                      "type": "string"
                    }
                  },
                  "required": [
                    "workflow_id"
                  ],
                  "type": "object"
                },
                "name": "rigor_status",
                "suite": "rigor"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": true,
                  "title": "List Rigor workflows"
                },
                "description": "List all Rigor workflows for your organization with filtering and pagination. Returns status, progress, capacity usage, and available actions per workflow. Use to monitor workflow state, understand concurrent limit usage, and identify stuck or completed workflows.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "counts_toward_limit": {
                      "description": "Filter to workflows counting toward the concurrent limit",
                      "enum": [
                        "true",
                        "false"
                      ],
                      "type": "string"
                    },
                    "cursor": {
                      "description": "Pagination cursor (created_at timestamp from previous page)",
                      "type": "string"
                    },
                    "limit": {
                      "description": "Page size (default 20, max 100)",
                      "type": "number"
                    },
                    "status": {
                      "description": "Filter by status (comma-separated). Valid values: executing, step_executing, completed, failed, halted, pending_approval, cancelled. E.g. \"halted,failed,pending_approval\"",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Filter by classified task type",
                      "type": "string"
                    }
                  },
                  "required": [],
                  "type": "object"
                },
                "name": "rigor_workflows",
                "suite": "rigor"
              }
            ]
          }
        },
        "url": "https://plith.ai/api/mcp"
      },
      "latency_ms": 202.53,
      "status": "ok"
    },
    "transport_compliance_probe": {
      "details": {
        "bad_protocol_error": null,
        "bad_protocol_headers": {
          "content-type": "application/json",
          "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
        },
        "bad_protocol_payload": {
          "id": 410,
          "jsonrpc": "2.0",
          "result": {
            "tools": [
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Check for duplicate tasks"
                },
                "description": "Before executing any LLM task, check if an identical or semantically similar task has already been completed. Returns cached result on hit, saving one LLM call.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "content": {
                      "description": "The task content to check for duplicates. This is hashed and embedded for matching.",
                      "type": "string"
                    },
                    "hash_only": {
                      "description": "If true, skip vector similarity search and use exact hash matching only. Default: false.",
                      "type": "boolean"
                    },
                    "similarity_threshold": {
                      "description": "Cosine similarity threshold for semantic matching, 0.0 to 1.0. Default: 0.80.",
                      "type": "number"
                    },
                    "task_id": {
                      "description": "Optional caller task ID for tracing and cross-referencing with BurnRate.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "content"
                  ],
                  "type": "object"
                },
                "name": "dedupq_check",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Store completed task result"
                },
                "description": "After executing a task, store the result so future identical or similar tasks return a cache hit.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "content": {
                      "description": "Original task content. Used to compute hash and embedding for future matching.",
                      "type": "string"
                    },
                    "hash_only": {
                      "description": "If true, skip embedding generation. Default: false.",
                      "type": "boolean"
                    },
                    "result": {
                      "description": "The task result to cache. Can be any JSON value."
                    },
                    "task_id": {
                      "description": "Optional task ID. Used as the database row ID if provided.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "content",
                    "result"
                  ],
                  "type": "object"
                },
                "name": "dedupq_complete",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Estimate LLM cost for a plan"
                },
                "description": "Before executing a multi-step agent plan, estimate the total LLM cost. Returns per-step breakdown and optimization suggestions.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "plan": {
                      "description": "Array of plan steps with provider, model, and token estimates.",
                      "items": {
                        "properties": {
                          "cache_read_tokens": {
                            "description": "Optional. Cached prompt tokens for providers with prompt caching.",
                            "type": "number"
                          },
                          "estimated_input_tokens": {
                            "description": "Estimated prompt token count.",
                            "type": "number"
                          },
                          "estimated_output_tokens": {
                            "description": "Estimated completion token count.",
                            "type": "number"
                          },
                          "model": {
                            "description": "Model name: claude-sonnet-4-6, gpt-4o, etc.",
                            "type": "string"
                          },
                          "provider": {
                            "description": "LLM provider: anthropic, openai, google, etc.",
                            "type": "string"
                          },
                          "search_calls": {
                            "description": "Optional. Number of grounding/search calls (e.g. Gemini Search).",
                            "type": "number"
                          },
                          "step": {
                            "description": "Step identifier \u2014 string label or number.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "step",
                          "provider",
                          "model",
                          "estimated_input_tokens",
                          "estimated_output_tokens"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "plan"
                  ],
                  "type": "object"
                },
                "name": "burnrate_estimate",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Record actual LLM spend"
                },
                "description": "Log the actual cost of an LLM call after execution. Call this after every LLM request to build calibration data that improves burnrate_estimate accuracy over time. Free \u2014 no credits charged. Returns the recorded cost entry with computed margin versus the prior estimate when one exists for this model and token range.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "cache_read_tokens": {
                      "description": "Optional. Cache-read tokens.",
                      "type": "number"
                    },
                    "input_tokens": {
                      "description": "Actual prompt tokens used. Must be >= 0.",
                      "type": "number"
                    },
                    "model": {
                      "description": "Model identifier as returned by the provider. Examples: claude-sonnet-4-6, gpt-4o, gemini-2.0-flash, mistral-large-latest. Unknown models are accepted but cost may show as $0.",
                      "type": "string"
                    },
                    "output_tokens": {
                      "description": "Actual completion tokens used. Must be >= 0.",
                      "type": "number"
                    },
                    "provider": {
                      "description": "LLM provider identifier. Supported: anthropic, openai, google, mistral, cohere, deepseek, together, fireworks, groq. Must match the provider of the model used.",
                      "type": "string"
                    },
                    "task_id": {
                      "description": "Optional task ID for cross-referencing spend with DedupQ deduplication results. Use the same task_id passed to dedupq_check to link cost tracking with deduplication.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "provider",
                    "model",
                    "input_tokens",
                    "output_tokens"
                  ],
                  "type": "object"
                },
                "name": "burnrate_track",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Optimize plan for lower cost"
                },
                "description": "Get a cheaper equivalent plan by substituting models with lower-cost alternatives. Call after burnrate_estimate if the estimated cost exceeds your budget. Returns the optimized plan with substituted models, new per-step costs, total savings, and whether the target_budget is met. Optionally set target_budget to constrain the optimization.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "plan": {
                      "description": "Array of plan steps. Same schema as burnrate_estimate: each step needs step, provider, model, estimated_input_tokens, estimated_output_tokens.",
                      "items": {
                        "properties": {
                          "estimated_input_tokens": {
                            "description": "Estimated input tokens.",
                            "type": "number"
                          },
                          "estimated_output_tokens": {
                            "description": "Estimated output tokens.",
                            "type": "number"
                          },
                          "model": {
                            "description": "Model name.",
                            "type": "string"
                          },
                          "provider": {
                            "description": "LLM provider.",
                            "type": "string"
                          },
                          "step": {
                            "description": "Step identifier \u2014 string label or number.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "step",
                          "provider",
                          "model",
                          "estimated_input_tokens",
                          "estimated_output_tokens"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "target_budget": {
                      "description": "Optional. Target total cost in USD.",
                      "type": "number"
                    }
                  },
                  "required": [
                    "plan"
                  ],
                  "type": "object"
                },
                "name": "burnrate_optimize",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": true,
                  "title": "Get daily spend and budget"
                },
                "description": "Get today's tracked LLM spend, per-model breakdown, projection, and budget alerts. Free \u2014 no credits charged.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "daily_limit": {
                      "description": "Optional. Daily budget in USD. Enables alerts.",
                      "type": "number"
                    }
                  },
                  "type": "object"
                },
                "name": "burnrate_budget",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Validate agent output"
                },
                "description": "Validate agent output against your rules. Deterministic checks (regex, JSON schema, syntax) plus optional LLM-powered tone and factual analysis.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "check_types": {
                      "description": "Checks to run. Auto-inferred if omitted.",
                      "items": {
                        "enum": [
                          "directive_compliance",
                          "schema_validation",
                          "code_syntax",
                          "tone",
                          "factual_claims"
                        ],
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "directives": {
                      "description": "Directive objects. Types: must_include, must_not_include, must_match, must_not_match, must_contain, must_not_contain, min_length, max_length.",
                      "items": {
                        "properties": {
                          "name": {
                            "description": "Optional directive name.",
                            "type": "string"
                          },
                          "type": {
                            "description": "Directive type.",
                            "type": "string"
                          },
                          "value": {
                            "description": "Directive value \u2014 string pattern, regex, keyword array (as comma-separated string), or number (as string). Interpreted based on directive type.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "type",
                          "value"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "language": {
                      "description": "Code language for syntax check: json, python, javascript, typescript.",
                      "type": "string"
                    },
                    "output": {
                      "description": "The agent output text to validate.",
                      "type": "string"
                    },
                    "override": {
                      "description": "Force pass. Requires override_reason.",
                      "type": "boolean"
                    },
                    "override_reason": {
                      "description": "Required when override is true.",
                      "type": "string"
                    },
                    "schema": {
                      "description": "JSON Schema to validate output against.",
                      "type": "object"
                    }
                  },
                  "required": [
                    "output"
                  ],
                  "type": "object"
                },
                "name": "qualitygate_validate",
                "suite": "governance"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Check action against policies"
                },
                "description": "Evaluate a proposed agent action against governance policies. Returns allow or deny. Deterministic rule evaluation \u2014 no LLM.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "agent_id": {
                      "description": "Agent identifier.",
                      "type": "string"
                    },
                    "proposed_action": {
                      "description": "Action to evaluate. Must contain a 'type' field.",
                      "properties": {
                        "type": {
                          "description": "Action type: http_request, delete_file, send_email, etc.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "type"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "agent_id",
                    "proposed_action"
                  ],
                  "type": "object"
                },
                "name": "guardrail_check",
                "suite": "governance"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": false,
                  "openWorldHint": false,
                  "readOnlyHint": false,
                  "title": "Create governance policy"
                },
                "description": "Create a persistent governance policy that guardrail_check evaluates on every subsequent call. Define rules using and/or/not operators over action types, resource patterns, and budget thresholds. Call this before using guardrail_check \u2014 checks require at least one active policy. Policies persist until explicitly deleted. Duplicate policy names return an error. Returns the created policy with its ID and active status.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "action_types": {
                      "description": "Optional. Restrict this policy to only evaluate when proposed_action.type matches one of these values. Examples: ['file_write', 'api_call', 'db_delete']. Omit to apply the policy to all action types regardless of type field.",
                      "items": {
                        "type": "string"
                      },
                      "type": "array"
                    },
                    "description": {
                      "description": "Optional human-readable summary of what this policy enforces. Returned in guardrail_check responses and guardrail_list_policies output for auditability.",
                      "type": "string"
                    },
                    "name": {
                      "description": "Unique policy name per org. Examples: 'no-delete-in-prod', 'budget-cap-50', 'pii-block'.",
                      "type": "string"
                    },
                    "priority": {
                      "description": "Optional. Evaluation order. Default: 0.",
                      "type": "number"
                    },
                    "rules": {
                      "description": "Array of rule objects evaluated against the proposed_action in guardrail_check. Leaf operators: eq, starts_with, contains, gt, lt (compare field to value). Compound operators: and, or, not (nest sub-rules in a rules array). Example: [{operator:'eq', field:'type', value:'file_write'}] blocks all file writes. Nested example: [{operator:'and', rules:[{operator:'eq',field:'type',value:'api_call'},{operator:'contains',field:'url',value:'prod'}]}] blocks prod API calls.",
                      "items": {
                        "properties": {
                          "field": {
                            "description": "Field path on proposed_action (e.g. 'action_type', 'path', 'amount').",
                            "type": "string"
                          },
                          "operator": {
                            "description": "Rule operator: eq | starts_with | contains | gt | lt | and | or | not.",
                            "type": "string"
                          },
                          "rules": {
                            "description": "Nested rules for compound operators (and/or/not).",
                            "type": "array"
                          },
                          "value": {
                            "description": "Comparison value for leaf operators. String, number, or boolean as string.",
                            "type": "string"
                          }
                        },
                        "required": [
                          "operator"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "name",
                    "rules"
                  ],
                  "type": "object"
                },
                "name": "guardrail_create_policy",
                "suite": "governance"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Query known failure patterns"
                },
                "description": "Check for known failure patterns before executing a task type. Returns pitfalls with severity, fix suggestions, and confidence scores.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "filters": {
                      "description": "Optional filters.",
                      "properties": {
                        "framework": {
                          "description": "Framework.",
                          "type": "string"
                        },
                        "language": {
                          "description": "Programming language.",
                          "type": "string"
                        },
                        "provider": {
                          "description": "LLM provider.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "task_description": {
                      "description": "Optional. Natural-language task description for semantic search.",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Task category: code_generation, web_search, data_analysis, etc.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "task_type"
                  ],
                  "type": "object"
                },
                "name": "pitfalldb_query",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Report an agent failure"
                },
                "description": "Report an agent failure. PII-scrubbed before storage. Linked to existing pitfalls if similar. Free \u2014 no credits charged.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "failure": {
                      "description": "Failure details.",
                      "properties": {
                        "error_message": {
                          "description": "Error message (PII-scrubbed).",
                          "type": "string"
                        },
                        "error_type": {
                          "description": "Error category: tool_call_ignored, syntax_error, etc.",
                          "type": "string"
                        },
                        "fix_applied": {
                          "description": "Fix applied (PII-scrubbed).",
                          "type": "string"
                        },
                        "fix_worked": {
                          "description": "Whether the fix worked.",
                          "type": "boolean"
                        },
                        "framework": {
                          "description": "Framework.",
                          "type": "string"
                        },
                        "language": {
                          "description": "Programming language.",
                          "type": "string"
                        },
                        "provider": {
                          "description": "LLM provider.",
                          "type": "string"
                        },
                        "root_cause": {
                          "description": "Root cause analysis (PII-scrubbed).",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "task_description": {
                      "description": "Description of the failed task.",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Task category.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "task_type",
                    "task_description",
                    "failure"
                  ],
                  "type": "object"
                },
                "name": "pitfalldb_report",
                "suite": "operations"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": true,
                  "readOnlyHint": true,
                  "title": "Plan a Rigor workflow"
                },
                "description": "Before executing a complex task, get a structured workflow plan with per-step cost estimates. Classifies your task, selects the optimal tool sequence from 110+ validated tools, and returns the full plan without executing anything. Free \u2014 no credits charged.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "preferences": {
                      "description": "Optional workflow preferences.",
                      "properties": {
                        "max_budget_usd": {
                          "description": "Maximum budget in USD. Plan will warn if estimated cost exceeds this.",
                          "type": "number"
                        },
                        "rigor_level": {
                          "description": "Depth of analysis: quick (fast, lower cost), standard (default, balanced), thorough (deep review, higher cost).",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "task_description": {
                      "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "task_description"
                  ],
                  "type": "object"
                },
                "name": "rigor_plan",
                "suite": "rigor"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": false,
                  "openWorldHint": true,
                  "readOnlyHint": false,
                  "title": "Execute a Rigor workflow"
                },
                "description": "Execute a structured workflow end-to-end. Classifies the task, selects the optimal tool sequence, and executes each step with the right LLM model. Returns a complete deliverable \u2014 solution designs, competitive analyses, governance documents, and more. Supports SSE streaming for real-time progress, webhook callback, or polling.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "context": {
                      "description": "Additional context for the workflow.",
                      "properties": {
                        "additional_context": {
                          "description": "Free-form context the workflow steps can reference.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "delivery": {
                      "description": "Delivery method. Default: polling (MCP clients typically can't handle SSE).",
                      "properties": {
                        "method": {
                          "description": "sse | webhook | polling. Default for MCP: polling.",
                          "type": "string"
                        },
                        "webhook_url": {
                          "description": "Required if method is webhook. Must be HTTPS.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "preferences": {
                      "description": "Optional workflow preferences.",
                      "properties": {
                        "max_budget_usd": {
                          "description": "Maximum budget in USD.",
                          "type": "number"
                        },
                        "rigor_level": {
                          "description": "quick | standard (default) | thorough. Controls analysis depth and cost.",
                          "type": "string"
                        }
                      },
                      "type": "object"
                    },
                    "task_description": {
                      "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
                      "type": "string"
                    }
                  },
                  "required": [
                    "task_description"
                  ],
                  "type": "object"
                },
                "name": "rigor_execute",
                "suite": "rigor"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": true,
                  "title": "Check workflow status"
                },
                "description": "Check the status of a running or completed Rigor workflow. Returns progress, step results, and the full deliverable when complete. Use after rigor_execute with polling delivery to retrieve results.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "workflow_id": {
                      "description": "The workflow ID returned by rigor_execute (format: wr_xxx).",
                      "type": "string"
                    }
                  },
                  "required": [
                    "workflow_id"
                  ],
                  "type": "object"
                },
                "name": "rigor_status",
                "suite": "rigor"
              },
              {
                "annotations": {
                  "destructiveHint": false,
                  "idempotentHint": true,
                  "openWorldHint": false,
                  "readOnlyHint": true,
                  "title": "List Rigor workflows"
                },
                "description": "List all Rigor workflows for your organization with filtering and pagination. Returns status, progress, capacity usage, and available actions per workflow. Use to monitor workflow state, understand concurrent limit usage, and identify stuck or completed workflows.",
                "discoverable": true,
                "inputSchema": {
                  "additionalProperties": false,
                  "properties": {
                    "counts_toward_limit": {
                      "description": "Filter to workflows counting toward the concurrent limit",
                      "enum": [
                        "true",
                        "false"
                      ],
                      "type": "string"
                    },
                    "cursor": {
                      "description": "Pagination cursor (created_at timestamp from previous page)",
                      "type": "string"
                    },
                    "limit": {
                      "description": "Page size (default 20, max 100)",
                      "type": "number"
                    },
                    "status": {
                      "description": "Filter by status (comma-separated). Valid values: executing, step_executing, completed, failed, halted, pending_approval, cancelled. E.g. \"halted,failed,pending_approval\"",
                      "type": "string"
                    },
                    "task_type": {
                      "description": "Filter by classified task type",
                      "type": "string"
                    }
                  },
                  "required": [],
                  "type": "object"
                },
                "name": "rigor_workflows",
                "suite": "rigor"
              }
            ]
          }
        },
        "bad_protocol_status_code": 200,
        "delete_error": null,
        "delete_status_code": null,
        "expired_session_error": null,
        "expired_session_status_code": null,
        "issues": [
          "missing_session_id",
          "missing_protocol_header",
          "bad_protocol_not_rejected"
        ],
        "last_event_id_visible": false,
        "protocol_header_present": false,
        "requested_protocol_version": "2024-11-05",
        "session_id_present": false,
        "transport": "streamable-http"
      },
      "latency_ms": 155.19,
      "status": "error"
    },
    "utility_coverage_probe": {
      "details": {
        "completions": {
          "advertised": true,
          "live_probe": "not_executed",
          "sample_target": {
            "argument_name": "task_description",
            "name": "try-rigor-free",
            "type": "prompt"
          }
        },
        "initialize_capability_keys": [
          "prompts",
          "resources",
          "tools"
        ],
        "pagination": {
          "metadata_signal": true,
          "next_cursor_methods": [],
          "supported": true
        },
        "tasks": {
          "advertised": true,
          "http_status": 200,
          "probe_status": "error"
        }
      },
      "latency_ms": 37.18,
      "status": "ok"
    }
  },
  "failures": {
    "oauth_authorization_server": {
      "reason": "no_authorization_server"
    },
    "oauth_protected_resource": {
      "error": "Client error '404 Not Found' for url 'https://plith.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
      "url": "https://plith.ai/.well-known/oauth-protected-resource"
    },
    "openid_configuration": {
      "reason": "no_authorization_server"
    },
    "transport_compliance_probe": {
      "bad_protocol_error": null,
      "bad_protocol_headers": {
        "content-type": "application/json",
        "strict-transport-security": "max-age=63072000; includeSubDomains; preload"
      },
      "bad_protocol_payload": {
        "id": 410,
        "jsonrpc": "2.0",
        "result": {
          "tools": [
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Check for duplicate tasks"
              },
              "description": "Before executing any LLM task, check if an identical or semantically similar task has already been completed. Returns cached result on hit, saving one LLM call.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "content": {
                    "description": "The task content to check for duplicates. This is hashed and embedded for matching.",
                    "type": "string"
                  },
                  "hash_only": {
                    "description": "If true, skip vector similarity search and use exact hash matching only. Default: false.",
                    "type": "boolean"
                  },
                  "similarity_threshold": {
                    "description": "Cosine similarity threshold for semantic matching, 0.0 to 1.0. Default: 0.80.",
                    "type": "number"
                  },
                  "task_id": {
                    "description": "Optional caller task ID for tracing and cross-referencing with BurnRate.",
                    "type": "string"
                  }
                },
                "required": [
                  "content"
                ],
                "type": "object"
              },
              "name": "dedupq_check",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Store completed task result"
              },
              "description": "After executing a task, store the result so future identical or similar tasks return a cache hit.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "content": {
                    "description": "Original task content. Used to compute hash and embedding for future matching.",
                    "type": "string"
                  },
                  "hash_only": {
                    "description": "If true, skip embedding generation. Default: false.",
                    "type": "boolean"
                  },
                  "result": {
                    "description": "The task result to cache. Can be any JSON value."
                  },
                  "task_id": {
                    "description": "Optional task ID. Used as the database row ID if provided.",
                    "type": "string"
                  }
                },
                "required": [
                  "content",
                  "result"
                ],
                "type": "object"
              },
              "name": "dedupq_complete",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Estimate LLM cost for a plan"
              },
              "description": "Before executing a multi-step agent plan, estimate the total LLM cost. Returns per-step breakdown and optimization suggestions.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "plan": {
                    "description": "Array of plan steps with provider, model, and token estimates.",
                    "items": {
                      "properties": {
                        "cache_read_tokens": {
                          "description": "Optional. Cached prompt tokens for providers with prompt caching.",
                          "type": "number"
                        },
                        "estimated_input_tokens": {
                          "description": "Estimated prompt token count.",
                          "type": "number"
                        },
                        "estimated_output_tokens": {
                          "description": "Estimated completion token count.",
                          "type": "number"
                        },
                        "model": {
                          "description": "Model name: claude-sonnet-4-6, gpt-4o, etc.",
                          "type": "string"
                        },
                        "provider": {
                          "description": "LLM provider: anthropic, openai, google, etc.",
                          "type": "string"
                        },
                        "search_calls": {
                          "description": "Optional. Number of grounding/search calls (e.g. Gemini Search).",
                          "type": "number"
                        },
                        "step": {
                          "description": "Step identifier \u2014 string label or number.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "step",
                        "provider",
                        "model",
                        "estimated_input_tokens",
                        "estimated_output_tokens"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "plan"
                ],
                "type": "object"
              },
              "name": "burnrate_estimate",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Record actual LLM spend"
              },
              "description": "Log the actual cost of an LLM call after execution. Call this after every LLM request to build calibration data that improves burnrate_estimate accuracy over time. Free \u2014 no credits charged. Returns the recorded cost entry with computed margin versus the prior estimate when one exists for this model and token range.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "cache_read_tokens": {
                    "description": "Optional. Cache-read tokens.",
                    "type": "number"
                  },
                  "input_tokens": {
                    "description": "Actual prompt tokens used. Must be >= 0.",
                    "type": "number"
                  },
                  "model": {
                    "description": "Model identifier as returned by the provider. Examples: claude-sonnet-4-6, gpt-4o, gemini-2.0-flash, mistral-large-latest. Unknown models are accepted but cost may show as $0.",
                    "type": "string"
                  },
                  "output_tokens": {
                    "description": "Actual completion tokens used. Must be >= 0.",
                    "type": "number"
                  },
                  "provider": {
                    "description": "LLM provider identifier. Supported: anthropic, openai, google, mistral, cohere, deepseek, together, fireworks, groq. Must match the provider of the model used.",
                    "type": "string"
                  },
                  "task_id": {
                    "description": "Optional task ID for cross-referencing spend with DedupQ deduplication results. Use the same task_id passed to dedupq_check to link cost tracking with deduplication.",
                    "type": "string"
                  }
                },
                "required": [
                  "provider",
                  "model",
                  "input_tokens",
                  "output_tokens"
                ],
                "type": "object"
              },
              "name": "burnrate_track",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Optimize plan for lower cost"
              },
              "description": "Get a cheaper equivalent plan by substituting models with lower-cost alternatives. Call after burnrate_estimate if the estimated cost exceeds your budget. Returns the optimized plan with substituted models, new per-step costs, total savings, and whether the target_budget is met. Optionally set target_budget to constrain the optimization.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "plan": {
                    "description": "Array of plan steps. Same schema as burnrate_estimate: each step needs step, provider, model, estimated_input_tokens, estimated_output_tokens.",
                    "items": {
                      "properties": {
                        "estimated_input_tokens": {
                          "description": "Estimated input tokens.",
                          "type": "number"
                        },
                        "estimated_output_tokens": {
                          "description": "Estimated output tokens.",
                          "type": "number"
                        },
                        "model": {
                          "description": "Model name.",
                          "type": "string"
                        },
                        "provider": {
                          "description": "LLM provider.",
                          "type": "string"
                        },
                        "step": {
                          "description": "Step identifier \u2014 string label or number.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "step",
                        "provider",
                        "model",
                        "estimated_input_tokens",
                        "estimated_output_tokens"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "target_budget": {
                    "description": "Optional. Target total cost in USD.",
                    "type": "number"
                  }
                },
                "required": [
                  "plan"
                ],
                "type": "object"
              },
              "name": "burnrate_optimize",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Get daily spend and budget"
              },
              "description": "Get today's tracked LLM spend, per-model breakdown, projection, and budget alerts. Free \u2014 no credits charged.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "daily_limit": {
                    "description": "Optional. Daily budget in USD. Enables alerts.",
                    "type": "number"
                  }
                },
                "type": "object"
              },
              "name": "burnrate_budget",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Validate agent output"
              },
              "description": "Validate agent output against your rules. Deterministic checks (regex, JSON schema, syntax) plus optional LLM-powered tone and factual analysis.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "check_types": {
                    "description": "Checks to run. Auto-inferred if omitted.",
                    "items": {
                      "enum": [
                        "directive_compliance",
                        "schema_validation",
                        "code_syntax",
                        "tone",
                        "factual_claims"
                      ],
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "directives": {
                    "description": "Directive objects. Types: must_include, must_not_include, must_match, must_not_match, must_contain, must_not_contain, min_length, max_length.",
                    "items": {
                      "properties": {
                        "name": {
                          "description": "Optional directive name.",
                          "type": "string"
                        },
                        "type": {
                          "description": "Directive type.",
                          "type": "string"
                        },
                        "value": {
                          "description": "Directive value \u2014 string pattern, regex, keyword array (as comma-separated string), or number (as string). Interpreted based on directive type.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "type",
                        "value"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "language": {
                    "description": "Code language for syntax check: json, python, javascript, typescript.",
                    "type": "string"
                  },
                  "output": {
                    "description": "The agent output text to validate.",
                    "type": "string"
                  },
                  "override": {
                    "description": "Force pass. Requires override_reason.",
                    "type": "boolean"
                  },
                  "override_reason": {
                    "description": "Required when override is true.",
                    "type": "string"
                  },
                  "schema": {
                    "description": "JSON Schema to validate output against.",
                    "type": "object"
                  }
                },
                "required": [
                  "output"
                ],
                "type": "object"
              },
              "name": "qualitygate_validate",
              "suite": "governance"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Check action against policies"
              },
              "description": "Evaluate a proposed agent action against governance policies. Returns allow or deny. Deterministic rule evaluation \u2014 no LLM.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "agent_id": {
                    "description": "Agent identifier.",
                    "type": "string"
                  },
                  "proposed_action": {
                    "description": "Action to evaluate. Must contain a 'type' field.",
                    "properties": {
                      "type": {
                        "description": "Action type: http_request, delete_file, send_email, etc.",
                        "type": "string"
                      }
                    },
                    "required": [
                      "type"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "agent_id",
                  "proposed_action"
                ],
                "type": "object"
              },
              "name": "guardrail_check",
              "suite": "governance"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": false,
                "readOnlyHint": false,
                "title": "Create governance policy"
              },
              "description": "Create a persistent governance policy that guardrail_check evaluates on every subsequent call. Define rules using and/or/not operators over action types, resource patterns, and budget thresholds. Call this before using guardrail_check \u2014 checks require at least one active policy. Policies persist until explicitly deleted. Duplicate policy names return an error. Returns the created policy with its ID and active status.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "action_types": {
                    "description": "Optional. Restrict this policy to only evaluate when proposed_action.type matches one of these values. Examples: ['file_write', 'api_call', 'db_delete']. Omit to apply the policy to all action types regardless of type field.",
                    "items": {
                      "type": "string"
                    },
                    "type": "array"
                  },
                  "description": {
                    "description": "Optional human-readable summary of what this policy enforces. Returned in guardrail_check responses and guardrail_list_policies output for auditability.",
                    "type": "string"
                  },
                  "name": {
                    "description": "Unique policy name per org. Examples: 'no-delete-in-prod', 'budget-cap-50', 'pii-block'.",
                    "type": "string"
                  },
                  "priority": {
                    "description": "Optional. Evaluation order. Default: 0.",
                    "type": "number"
                  },
                  "rules": {
                    "description": "Array of rule objects evaluated against the proposed_action in guardrail_check. Leaf operators: eq, starts_with, contains, gt, lt (compare field to value). Compound operators: and, or, not (nest sub-rules in a rules array). Example: [{operator:'eq', field:'type', value:'file_write'}] blocks all file writes. Nested example: [{operator:'and', rules:[{operator:'eq',field:'type',value:'api_call'},{operator:'contains',field:'url',value:'prod'}]}] blocks prod API calls.",
                    "items": {
                      "properties": {
                        "field": {
                          "description": "Field path on proposed_action (e.g. 'action_type', 'path', 'amount').",
                          "type": "string"
                        },
                        "operator": {
                          "description": "Rule operator: eq | starts_with | contains | gt | lt | and | or | not.",
                          "type": "string"
                        },
                        "rules": {
                          "description": "Nested rules for compound operators (and/or/not).",
                          "type": "array"
                        },
                        "value": {
                          "description": "Comparison value for leaf operators. String, number, or boolean as string.",
                          "type": "string"
                        }
                      },
                      "required": [
                        "operator"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "name",
                  "rules"
                ],
                "type": "object"
              },
              "name": "guardrail_create_policy",
              "suite": "governance"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Query known failure patterns"
              },
              "description": "Check for known failure patterns before executing a task type. Returns pitfalls with severity, fix suggestions, and confidence scores.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "filters": {
                    "description": "Optional filters.",
                    "properties": {
                      "framework": {
                        "description": "Framework.",
                        "type": "string"
                      },
                      "language": {
                        "description": "Programming language.",
                        "type": "string"
                      },
                      "provider": {
                        "description": "LLM provider.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "task_description": {
                    "description": "Optional. Natural-language task description for semantic search.",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Task category: code_generation, web_search, data_analysis, etc.",
                    "type": "string"
                  }
                },
                "required": [
                  "task_type"
                ],
                "type": "object"
              },
              "name": "pitfalldb_query",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Report an agent failure"
              },
              "description": "Report an agent failure. PII-scrubbed before storage. Linked to existing pitfalls if similar. Free \u2014 no credits charged.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "failure": {
                    "description": "Failure details.",
                    "properties": {
                      "error_message": {
                        "description": "Error message (PII-scrubbed).",
                        "type": "string"
                      },
                      "error_type": {
                        "description": "Error category: tool_call_ignored, syntax_error, etc.",
                        "type": "string"
                      },
                      "fix_applied": {
                        "description": "Fix applied (PII-scrubbed).",
                        "type": "string"
                      },
                      "fix_worked": {
                        "description": "Whether the fix worked.",
                        "type": "boolean"
                      },
                      "framework": {
                        "description": "Framework.",
                        "type": "string"
                      },
                      "language": {
                        "description": "Programming language.",
                        "type": "string"
                      },
                      "provider": {
                        "description": "LLM provider.",
                        "type": "string"
                      },
                      "root_cause": {
                        "description": "Root cause analysis (PII-scrubbed).",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "task_description": {
                    "description": "Description of the failed task.",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Task category.",
                    "type": "string"
                  }
                },
                "required": [
                  "task_type",
                  "task_description",
                  "failure"
                ],
                "type": "object"
              },
              "name": "pitfalldb_report",
              "suite": "operations"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": true,
                "readOnlyHint": true,
                "title": "Plan a Rigor workflow"
              },
              "description": "Before executing a complex task, get a structured workflow plan with per-step cost estimates. Classifies your task, selects the optimal tool sequence from 110+ validated tools, and returns the full plan without executing anything. Free \u2014 no credits charged.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "preferences": {
                    "description": "Optional workflow preferences.",
                    "properties": {
                      "max_budget_usd": {
                        "description": "Maximum budget in USD. Plan will warn if estimated cost exceeds this.",
                        "type": "number"
                      },
                      "rigor_level": {
                        "description": "Depth of analysis: quick (fast, lower cost), standard (default, balanced), thorough (deep review, higher cost).",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "task_description": {
                    "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
                    "type": "string"
                  }
                },
                "required": [
                  "task_description"
                ],
                "type": "object"
              },
              "name": "rigor_plan",
              "suite": "rigor"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": false,
                "openWorldHint": true,
                "readOnlyHint": false,
                "title": "Execute a Rigor workflow"
              },
              "description": "Execute a structured workflow end-to-end. Classifies the task, selects the optimal tool sequence, and executes each step with the right LLM model. Returns a complete deliverable \u2014 solution designs, competitive analyses, governance documents, and more. Supports SSE streaming for real-time progress, webhook callback, or polling.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "context": {
                    "description": "Additional context for the workflow.",
                    "properties": {
                      "additional_context": {
                        "description": "Free-form context the workflow steps can reference.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "delivery": {
                    "description": "Delivery method. Default: polling (MCP clients typically can't handle SSE).",
                    "properties": {
                      "method": {
                        "description": "sse | webhook | polling. Default for MCP: polling.",
                        "type": "string"
                      },
                      "webhook_url": {
                        "description": "Required if method is webhook. Must be HTTPS.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "preferences": {
                    "description": "Optional workflow preferences.",
                    "properties": {
                      "max_budget_usd": {
                        "description": "Maximum budget in USD.",
                        "type": "number"
                      },
                      "rigor_level": {
                        "description": "quick | standard (default) | thorough. Controls analysis depth and cost.",
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "task_description": {
                    "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
                    "type": "string"
                  }
                },
                "required": [
                  "task_description"
                ],
                "type": "object"
              },
              "name": "rigor_execute",
              "suite": "rigor"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "Check workflow status"
              },
              "description": "Check the status of a running or completed Rigor workflow. Returns progress, step results, and the full deliverable when complete. Use after rigor_execute with polling delivery to retrieve results.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "workflow_id": {
                    "description": "The workflow ID returned by rigor_execute (format: wr_xxx).",
                    "type": "string"
                  }
                },
                "required": [
                  "workflow_id"
                ],
                "type": "object"
              },
              "name": "rigor_status",
              "suite": "rigor"
            },
            {
              "annotations": {
                "destructiveHint": false,
                "idempotentHint": true,
                "openWorldHint": false,
                "readOnlyHint": true,
                "title": "List Rigor workflows"
              },
              "description": "List all Rigor workflows for your organization with filtering and pagination. Returns status, progress, capacity usage, and available actions per workflow. Use to monitor workflow state, understand concurrent limit usage, and identify stuck or completed workflows.",
              "discoverable": true,
              "inputSchema": {
                "additionalProperties": false,
                "properties": {
                  "counts_toward_limit": {
                    "description": "Filter to workflows counting toward the concurrent limit",
                    "enum": [
                      "true",
                      "false"
                    ],
                    "type": "string"
                  },
                  "cursor": {
                    "description": "Pagination cursor (created_at timestamp from previous page)",
                    "type": "string"
                  },
                  "limit": {
                    "description": "Page size (default 20, max 100)",
                    "type": "number"
                  },
                  "status": {
                    "description": "Filter by status (comma-separated). Valid values: executing, step_executing, completed, failed, halted, pending_approval, cancelled. E.g. \"halted,failed,pending_approval\"",
                    "type": "string"
                  },
                  "task_type": {
                    "description": "Filter by classified task type",
                    "type": "string"
                  }
                },
                "required": [],
                "type": "object"
              },
              "name": "rigor_workflows",
              "suite": "rigor"
            }
          ]
        }
      },
      "bad_protocol_status_code": 200,
      "delete_error": null,
      "delete_status_code": null,
      "expired_session_error": null,
      "expired_session_status_code": null,
      "issues": [
        "missing_session_id",
        "missing_protocol_header",
        "bad_protocol_not_rejected"
      ],
      "last_event_id_visible": false,
      "protocol_header_present": false,
      "requested_protocol_version": "2024-11-05",
      "session_id_present": false,
      "transport": "streamable-http"
    }
  },
  "remote_url": "https://plith.ai/api/mcp",
  "server_card_payload": {
    "authentication": {
      "instructions": "Optional. Without a key, read-only free tools work with rate limits (30/min, 500/day). For full access: curl -X POST https://plith.ai/api/keys \u2014 1,000 free credits/month, no card required.",
      "required": false,
      "schemes": [
        "apiKey"
      ]
    },
    "configSchema": {
      "properties": {
        "default_model": {
          "default": "",
          "description": "Default LLM model name for BurnRate cost estimates (e.g. claude-sonnet-4-6)",
          "type": "string"
        },
        "similarity_threshold": {
          "default": "0.80",
          "description": "Default cosine similarity threshold for DedupQ (0.5-1.0). Default: 0.80",
          "type": "string"
        },
        "x-api-key": {
          "description": "Your Plith API key. Optional for read-only tools (stats, trends, policies, budget, balance). Required for tools that write data or cost credits. Get one free: curl -X POST https://plith.ai/api/keys",
          "type": "string"
        }
      },
      "required": [],
      "type": "object"
    },
    "prompts": [
      {
        "arguments": [
          {
            "description": "Describe the task you want a deliverable for (e.g., 'Design a caching layer for our API gateway')",
            "name": "task_description",
            "required": true
          },
          {
            "description": "Quality tier: quick, standard, or thorough. Affects step count and review depth.",
            "name": "rigor_level",
            "required": false
          }
        ],
        "description": "Explore what Rigor would do for your task at zero cost. Returns the full workflow plan, step descriptions, cost estimate, and alternatives without executing anything.",
        "name": "try-rigor-free"
      },
      {
        "arguments": [
          {
            "description": "The task to produce a deliverable for",
            "name": "task_description",
            "required": true
          },
          {
            "description": "Quality tier: quick, standard, or thorough",
            "name": "rigor_level",
            "required": false
          }
        ],
        "description": "Plan a Rigor workflow, review the estimated cost, then execute it. Your agent receives structured deliverable output from each step \u2014 requirements, research, analysis, the deliverable, and quality review.",
        "name": "plan-and-execute"
      },
      {
        "arguments": [
          {
            "description": "The task your agent is about to execute",
            "name": "task_description",
            "required": true
          },
          {
            "description": "Category of task (e.g., code_generation, data_analysis, web_search)",
            "name": "task_type",
            "required": false
          }
        ],
        "description": "Before executing any agent task: check for duplicate work, query known failure patterns, and verify budget policy. Prevents redundant LLM calls and known mistakes.",
        "name": "agent-preflight"
      },
      {
        "arguments": [
          {
            "description": "LLM model name (e.g., claude-sonnet-4-6, gpt-4o)",
            "name": "model",
            "required": true
          },
          {
            "description": "Expected input token count",
            "name": "estimated_input_tokens",
            "required": true
          },
          {
            "description": "Expected output token count",
            "name": "estimated_output_tokens",
            "required": true
          }
        ],
        "description": "Estimate the cost of an LLM call before making it, then log the actual cost after execution. Builds calibration data that improves future estimates over time.",
        "name": "cost-aware-execution"
      },
      {
        "arguments": [
          {
            "description": "The agent output to validate",
            "name": "content",
            "required": true
          },
          {
            "description": "Validation rules object with must_include, must_not_include, max_length, or custom directives",
            "name": "rules",
            "required": false
          }
        ],
        "description": "After completing a task, validate the output against quality rules before shipping. Returns a structured verdict with score \u2014 not just pass/fail.",
        "name": "output-validation"
      },
      {
        "arguments": [
          {
            "description": "Name for your policy (e.g., 'budget-cap', 'no-delete-actions')",
            "name": "policy_name",
            "required": true
          },
          {
            "description": "Type of policy: budget, action_blocklist, rate_limit",
            "name": "policy_type",
            "required": true
          }
        ],
        "description": "Define a governance policy for your agent, then check actions against it. Two steps: create the policy once with guardrail_create_policy, then call guardrail_check on every action.",
        "name": "setup-guardrails"
      }
    ],
    "prompts_count": 6,
    "resources": [
      {
        "description": "25+ task types Rigor can handle \u2014 solution design, code review, root cause analysis, requirements analysis, and more. Each with description and example input.",
        "mimeType": "application/json",
        "name": "Rigor Task Type Catalog",
        "uri": "rigor://task-types"
      },
      {
        "description": "Credit packs, example workflow costs, and free tier details. Exact cost shown in every plan response before execution.",
        "mimeType": "text/plain",
        "name": "Rigor Pricing Overview",
        "uri": "rigor://pricing"
      },
      {
        "description": "Get an API key and make your first call in under 60 seconds. Covers DedupQ, BurnRate, and PitfallDB.",
        "mimeType": "text/plain",
        "name": "Operations Quickstart",
        "uri": "operations://quickstart"
      },
      {
        "description": "Preview failure patterns from PitfallDB across common task types. Shows what the shared knowledge base contains.",
        "mimeType": "application/json",
        "name": "Sample Failure Patterns",
        "uri": "operations://pitfalls-sample"
      },
      {
        "description": "Example governance policies: budget caps, action blocklists, rate limits. Copy and adapt for your use case.",
        "mimeType": "application/json",
        "name": "GuardRail Policy Examples",
        "uri": "governance://policy-examples"
      },
      {
        "description": "Example validation rule sets: content requirements, schema checks, length constraints, custom directives.",
        "mimeType": "application/json",
        "name": "QualityGate Rule Examples",
        "uri": "governance://validation-rules"
      }
    ],
    "resources_count": 6,
    "serverInfo": {
      "description": "Three suites \u2014 Rigor, Operations, Governance \u2014 exposing 15 discoverable MCP tools (plus 8 hidden, callable via suite endpoints). Workflow orchestration, task deduplication, cost prediction, output validation, behavioral governance, and shared failure intelligence for AI agents. 1,000 free credits/month.",
      "homepage": "https://plith.ai",
      "name": "Plith",
      "version": "1.0.0",
      "website": "https://plith.ai"
    },
    "serverUrl": "https://plith.ai/api/mcp",
    "suites": {
      "governance": {
        "endpoint": "https://plith.ai/api/mcp/governance",
        "full": "QualityGate validates agent output against rules you define \u2014 content requirements (must_include, must_not_include), regex patterns, JSON schema checks, length constraints, code syntax, and optional LLM-powered tone/factual analysis. Returns a structured verdict (pass/warn/fail) with score and per-check details. Use qualitygate_validate after every generation step; use qualitygate_trends to spot recurring failure patterns over time. GuardRail enforces runtime governance policies \u2014 budget caps, action blocklists, rate limits. Define policies once with guardrail_create_policy; call guardrail_check before each agent action. Decision is allow or deny with reason. List active policies with guardrail_list_policies. All checks are deterministic \u2014 no LLM. 1,000 free credits/month, no card required. plith.ai",
        "prompts_count": 2,
        "resources_count": 2,
        "serverCard": "https://plith.ai/.well-known/mcp/governance/server-card.json",
        "short": "Output validation with configurable quality rules and runtime policy enforcement for AI agents. Both return structured, machine-readable decisions.",
        "tools_count": 3
      },
      "operations": {
        "endpoint": "https://plith.ai/api/mcp/operations",
        "full": "DedupQ checks whether your agent already completed a semantically similar task \u2014 returns a cached result on hit, saving one LLM call. Use dedupq_check before executing, dedupq_complete after to cache the result. BurnRate estimates multi-step LLM plan cost before execution (burnrate_estimate) and tracks actual spend afterward (burnrate_track). Use burnrate_optimize to get a cheaper equivalent plan. burnrate_budget shows today's tracked spend and projection. PitfallDB queries known failure patterns with severity and fix recommendations for your task type (pitfalldb_query). Report new failures with pitfalldb_report \u2014 PII-scrubbed before storage. burnrate_track and pitfalldb_report are always free. 1,000 free credits/month, no card required. plith.ai",
        "prompts_count": 2,
        "resources_count": 2,
        "serverCard": "https://plith.ai/.well-known/mcp/operations/server-card.json",
        "short": "Task deduplication, LLM cost prediction, and shared failure intelligence for AI agents. Tracking calls are always free.",
        "tools_count": 8
      },
      "rigor": {
        "endpoint": "https://plith.ai/api/mcp/rigor",
        "full": "Rigor executes a defined methodology for each task type \u2014 requirements, research, analysis, deliverable, independent quality review \u2014 producing consistent structured output every run. Use rigor_plan (free) to see the full workflow, step count, and cost estimate before committing. Use rigor_execute to run end-to-end; poll with rigor_status. Supports 34+ task types including solution_design, code_review, code_implementation, competitive_scan, root_cause_analysis, governance_change, and more. Three analysis tiers: quick (lower cost), standard (default), thorough (deep review with extra passes). Board Chair approval gates for governance_change workflows. MCP tool integration via rigor_connections (GitHub, Claude Code). 1,000 free credits/month, no card required. plith.ai",
        "prompts_count": 2,
        "resources_count": 2,
        "serverCard": "https://plith.ai/.well-known/mcp/rigor/server-card.json",
        "short": "Structured multi-step workflows that produce production-quality deliverables. Automatic task classification, configurable analysis depth (quick/standard/thorough), and independent quality review. Plan any workflow free.",
        "tools_count": 4
      }
    },
    "tools": [
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Check for duplicate tasks"
        },
        "description": "Before executing any LLM task, check if an identical or semantically similar task has already been completed. Returns cached result on hit, saving one LLM call.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "content": {
              "description": "The task content to check for duplicates. This is hashed and embedded for matching.",
              "type": "string"
            },
            "hash_only": {
              "description": "If true, skip vector similarity search and use exact hash matching only. Default: false.",
              "type": "boolean"
            },
            "similarity_threshold": {
              "description": "Cosine similarity threshold for semantic matching, 0.0 to 1.0. Default: 0.80.",
              "type": "number"
            },
            "task_id": {
              "description": "Optional caller task ID for tracing and cross-referencing with BurnRate.",
              "type": "string"
            }
          },
          "required": [
            "content"
          ],
          "type": "object"
        },
        "name": "dedupq_check",
        "suite": "operations"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Store completed task result"
        },
        "description": "After executing a task, store the result so future identical or similar tasks return a cache hit.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "content": {
              "description": "Original task content. Used to compute hash and embedding for future matching.",
              "type": "string"
            },
            "hash_only": {
              "description": "If true, skip embedding generation. Default: false.",
              "type": "boolean"
            },
            "result": {
              "description": "The task result to cache. Can be any JSON value."
            },
            "task_id": {
              "description": "Optional task ID. Used as the database row ID if provided.",
              "type": "string"
            }
          },
          "required": [
            "content",
            "result"
          ],
          "type": "object"
        },
        "name": "dedupq_complete",
        "suite": "operations"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Estimate LLM cost for a plan"
        },
        "description": "Before executing a multi-step agent plan, estimate the total LLM cost. Returns per-step breakdown and optimization suggestions.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "plan": {
              "description": "Array of plan steps with provider, model, and token estimates.",
              "items": {
                "properties": {
                  "cache_read_tokens": {
                    "description": "Optional. Cached prompt tokens for providers with prompt caching.",
                    "type": "number"
                  },
                  "estimated_input_tokens": {
                    "description": "Estimated prompt token count.",
                    "type": "number"
                  },
                  "estimated_output_tokens": {
                    "description": "Estimated completion token count.",
                    "type": "number"
                  },
                  "model": {
                    "description": "Model name: claude-sonnet-4-6, gpt-4o, etc.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "LLM provider: anthropic, openai, google, etc.",
                    "type": "string"
                  },
                  "search_calls": {
                    "description": "Optional. Number of grounding/search calls (e.g. Gemini Search).",
                    "type": "number"
                  },
                  "step": {
                    "description": "Step identifier \u2014 string label or number.",
                    "type": "string"
                  }
                },
                "required": [
                  "step",
                  "provider",
                  "model",
                  "estimated_input_tokens",
                  "estimated_output_tokens"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "plan"
          ],
          "type": "object"
        },
        "name": "burnrate_estimate",
        "suite": "operations"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Record actual LLM spend"
        },
        "description": "Log the actual cost of an LLM call after execution. Call this after every LLM request to build calibration data that improves burnrate_estimate accuracy over time. Free \u2014 no credits charged. Returns the recorded cost entry with computed margin versus the prior estimate when one exists for this model and token range.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "cache_read_tokens": {
              "description": "Optional. Cache-read tokens.",
              "type": "number"
            },
            "input_tokens": {
              "description": "Actual prompt tokens used. Must be >= 0.",
              "type": "number"
            },
            "model": {
              "description": "Model identifier as returned by the provider. Examples: claude-sonnet-4-6, gpt-4o, gemini-2.0-flash, mistral-large-latest. Unknown models are accepted but cost may show as $0.",
              "type": "string"
            },
            "output_tokens": {
              "description": "Actual completion tokens used. Must be >= 0.",
              "type": "number"
            },
            "provider": {
              "description": "LLM provider identifier. Supported: anthropic, openai, google, mistral, cohere, deepseek, together, fireworks, groq. Must match the provider of the model used.",
              "type": "string"
            },
            "task_id": {
              "description": "Optional task ID for cross-referencing spend with DedupQ deduplication results. Use the same task_id passed to dedupq_check to link cost tracking with deduplication.",
              "type": "string"
            }
          },
          "required": [
            "provider",
            "model",
            "input_tokens",
            "output_tokens"
          ],
          "type": "object"
        },
        "name": "burnrate_track",
        "suite": "operations"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Optimize plan for lower cost"
        },
        "description": "Get a cheaper equivalent plan by substituting models with lower-cost alternatives. Call after burnrate_estimate if the estimated cost exceeds your budget. Returns the optimized plan with substituted models, new per-step costs, total savings, and whether the target_budget is met. Optionally set target_budget to constrain the optimization.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "plan": {
              "description": "Array of plan steps. Same schema as burnrate_estimate: each step needs step, provider, model, estimated_input_tokens, estimated_output_tokens.",
              "items": {
                "properties": {
                  "estimated_input_tokens": {
                    "description": "Estimated input tokens.",
                    "type": "number"
                  },
                  "estimated_output_tokens": {
                    "description": "Estimated output tokens.",
                    "type": "number"
                  },
                  "model": {
                    "description": "Model name.",
                    "type": "string"
                  },
                  "provider": {
                    "description": "LLM provider.",
                    "type": "string"
                  },
                  "step": {
                    "description": "Step identifier \u2014 string label or number.",
                    "type": "string"
                  }
                },
                "required": [
                  "step",
                  "provider",
                  "model",
                  "estimated_input_tokens",
                  "estimated_output_tokens"
                ],
                "type": "object"
              },
              "type": "array"
            },
            "target_budget": {
              "description": "Optional. Target total cost in USD.",
              "type": "number"
            }
          },
          "required": [
            "plan"
          ],
          "type": "object"
        },
        "name": "burnrate_optimize",
        "suite": "operations"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Get daily spend and budget"
        },
        "description": "Get today's tracked LLM spend, per-model breakdown, projection, and budget alerts. Free \u2014 no credits charged.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "daily_limit": {
              "description": "Optional. Daily budget in USD. Enables alerts.",
              "type": "number"
            }
          },
          "type": "object"
        },
        "name": "burnrate_budget",
        "suite": "operations"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Validate agent output"
        },
        "description": "Validate agent output against your rules. Deterministic checks (regex, JSON schema, syntax) plus optional LLM-powered tone and factual analysis.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "check_types": {
              "description": "Checks to run. Auto-inferred if omitted.",
              "items": {
                "enum": [
                  "directive_compliance",
                  "schema_validation",
                  "code_syntax",
                  "tone",
                  "factual_claims"
                ],
                "type": "string"
              },
              "type": "array"
            },
            "directives": {
              "description": "Directive objects. Types: must_include, must_not_include, must_match, must_not_match, must_contain, must_not_contain, min_length, max_length.",
              "items": {
                "properties": {
                  "name": {
                    "description": "Optional directive name.",
                    "type": "string"
                  },
                  "type": {
                    "description": "Directive type.",
                    "type": "string"
                  },
                  "value": {
                    "description": "Directive value \u2014 string pattern, regex, keyword array (as comma-separated string), or number (as string). Interpreted based on directive type.",
                    "type": "string"
                  }
                },
                "required": [
                  "type",
                  "value"
                ],
                "type": "object"
              },
              "type": "array"
            },
            "language": {
              "description": "Code language for syntax check: json, python, javascript, typescript.",
              "type": "string"
            },
            "output": {
              "description": "The agent output text to validate.",
              "type": "string"
            },
            "override": {
              "description": "Force pass. Requires override_reason.",
              "type": "boolean"
            },
            "override_reason": {
              "description": "Required when override is true.",
              "type": "string"
            },
            "schema": {
              "description": "JSON Schema to validate output against.",
              "type": "object"
            }
          },
          "required": [
            "output"
          ],
          "type": "object"
        },
        "name": "qualitygate_validate",
        "suite": "governance"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Check action against policies"
        },
        "description": "Evaluate a proposed agent action against governance policies. Returns allow or deny. Deterministic rule evaluation \u2014 no LLM.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "agent_id": {
              "description": "Agent identifier.",
              "type": "string"
            },
            "proposed_action": {
              "description": "Action to evaluate. Must contain a 'type' field.",
              "properties": {
                "type": {
                  "description": "Action type: http_request, delete_file, send_email, etc.",
                  "type": "string"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            }
          },
          "required": [
            "agent_id",
            "proposed_action"
          ],
          "type": "object"
        },
        "name": "guardrail_check",
        "suite": "governance"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": false,
          "readOnlyHint": false,
          "title": "Create governance policy"
        },
        "description": "Create a persistent governance policy that guardrail_check evaluates on every subsequent call. Define rules using and/or/not operators over action types, resource patterns, and budget thresholds. Call this before using guardrail_check \u2014 checks require at least one active policy. Policies persist until explicitly deleted. Duplicate policy names return an error. Returns the created policy with its ID and active status.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "action_types": {
              "description": "Optional. Restrict this policy to only evaluate when proposed_action.type matches one of these values. Examples: ['file_write', 'api_call', 'db_delete']. Omit to apply the policy to all action types regardless of type field.",
              "items": {
                "type": "string"
              },
              "type": "array"
            },
            "description": {
              "description": "Optional human-readable summary of what this policy enforces. Returned in guardrail_check responses and guardrail_list_policies output for auditability.",
              "type": "string"
            },
            "name": {
              "description": "Unique policy name per org. Examples: 'no-delete-in-prod', 'budget-cap-50', 'pii-block'.",
              "type": "string"
            },
            "priority": {
              "description": "Optional. Evaluation order. Default: 0.",
              "type": "number"
            },
            "rules": {
              "description": "Array of rule objects evaluated against the proposed_action in guardrail_check. Leaf operators: eq, starts_with, contains, gt, lt (compare field to value). Compound operators: and, or, not (nest sub-rules in a rules array). Example: [{operator:'eq', field:'type', value:'file_write'}] blocks all file writes. Nested example: [{operator:'and', rules:[{operator:'eq',field:'type',value:'api_call'},{operator:'contains',field:'url',value:'prod'}]}] blocks prod API calls.",
              "items": {
                "properties": {
                  "field": {
                    "description": "Field path on proposed_action (e.g. 'action_type', 'path', 'amount').",
                    "type": "string"
                  },
                  "operator": {
                    "description": "Rule operator: eq | starts_with | contains | gt | lt | and | or | not.",
                    "type": "string"
                  },
                  "rules": {
                    "description": "Nested rules for compound operators (and/or/not).",
                    "type": "array"
                  },
                  "value": {
                    "description": "Comparison value for leaf operators. String, number, or boolean as string.",
                    "type": "string"
                  }
                },
                "required": [
                  "operator"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "required": [
            "name",
            "rules"
          ],
          "type": "object"
        },
        "name": "guardrail_create_policy",
        "suite": "governance"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Query known failure patterns"
        },
        "description": "Check for known failure patterns before executing a task type. Returns pitfalls with severity, fix suggestions, and confidence scores.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "filters": {
              "description": "Optional filters.",
              "properties": {
                "framework": {
                  "description": "Framework.",
                  "type": "string"
                },
                "language": {
                  "description": "Programming language.",
                  "type": "string"
                },
                "provider": {
                  "description": "LLM provider.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "task_description": {
              "description": "Optional. Natural-language task description for semantic search.",
              "type": "string"
            },
            "task_type": {
              "description": "Task category: code_generation, web_search, data_analysis, etc.",
              "type": "string"
            }
          },
          "required": [
            "task_type"
          ],
          "type": "object"
        },
        "name": "pitfalldb_query",
        "suite": "operations"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Report an agent failure"
        },
        "description": "Report an agent failure. PII-scrubbed before storage. Linked to existing pitfalls if similar. Free \u2014 no credits charged.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "failure": {
              "description": "Failure details.",
              "properties": {
                "error_message": {
                  "description": "Error message (PII-scrubbed).",
                  "type": "string"
                },
                "error_type": {
                  "description": "Error category: tool_call_ignored, syntax_error, etc.",
                  "type": "string"
                },
                "fix_applied": {
                  "description": "Fix applied (PII-scrubbed).",
                  "type": "string"
                },
                "fix_worked": {
                  "description": "Whether the fix worked.",
                  "type": "boolean"
                },
                "framework": {
                  "description": "Framework.",
                  "type": "string"
                },
                "language": {
                  "description": "Programming language.",
                  "type": "string"
                },
                "provider": {
                  "description": "LLM provider.",
                  "type": "string"
                },
                "root_cause": {
                  "description": "Root cause analysis (PII-scrubbed).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "task_description": {
              "description": "Description of the failed task.",
              "type": "string"
            },
            "task_type": {
              "description": "Task category.",
              "type": "string"
            }
          },
          "required": [
            "task_type",
            "task_description",
            "failure"
          ],
          "type": "object"
        },
        "name": "pitfalldb_report",
        "suite": "operations"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": true,
          "readOnlyHint": true,
          "title": "Plan a Rigor workflow"
        },
        "description": "Before executing a complex task, get a structured workflow plan with per-step cost estimates. Classifies your task, selects the optimal tool sequence from 110+ validated tools, and returns the full plan without executing anything. Free \u2014 no credits charged.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "preferences": {
              "description": "Optional workflow preferences.",
              "properties": {
                "max_budget_usd": {
                  "description": "Maximum budget in USD. Plan will warn if estimated cost exceeds this.",
                  "type": "number"
                },
                "rigor_level": {
                  "description": "Depth of analysis: quick (fast, lower cost), standard (default, balanced), thorough (deep review, higher cost).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "task_description": {
              "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
              "type": "string"
            },
            "task_type": {
              "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
              "type": "string"
            }
          },
          "required": [
            "task_description"
          ],
          "type": "object"
        },
        "name": "rigor_plan",
        "suite": "rigor"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": false,
          "openWorldHint": true,
          "readOnlyHint": false,
          "title": "Execute a Rigor workflow"
        },
        "description": "Execute a structured workflow end-to-end. Classifies the task, selects the optimal tool sequence, and executes each step with the right LLM model. Returns a complete deliverable \u2014 solution designs, competitive analyses, governance documents, and more. Supports SSE streaming for real-time progress, webhook callback, or polling.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "context": {
              "description": "Additional context for the workflow.",
              "properties": {
                "additional_context": {
                  "description": "Free-form context the workflow steps can reference.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "delivery": {
              "description": "Delivery method. Default: polling (MCP clients typically can't handle SSE).",
              "properties": {
                "method": {
                  "description": "sse | webhook | polling. Default for MCP: polling.",
                  "type": "string"
                },
                "webhook_url": {
                  "description": "Required if method is webhook. Must be HTTPS.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "preferences": {
              "description": "Optional workflow preferences.",
              "properties": {
                "max_budget_usd": {
                  "description": "Maximum budget in USD.",
                  "type": "number"
                },
                "rigor_level": {
                  "description": "quick | standard (default) | thorough. Controls analysis depth and cost.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "task_description": {
              "description": "Natural language description of the task. Be specific \u2014 include what you want produced, constraints, and context. Example: 'Design a caching layer for our API gateway with Redis integration.'",
              "type": "string"
            },
            "task_type": {
              "description": "Optional hint to bypass automatic classification. Values: solution_design, requirements_analysis, code_implementation, code_review, bug_fix, root_cause_analysis, incident_response, deployment_execution, competitive_scan, financial_analysis, research_task, documentation, governance_change, compliance_audit, data_security_assessment, performance_optimization, user_story_definition, implementation_prompt_generation.",
              "type": "string"
            }
          },
          "required": [
            "task_description"
          ],
          "type": "object"
        },
        "name": "rigor_execute",
        "suite": "rigor"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "Check workflow status"
        },
        "description": "Check the status of a running or completed Rigor workflow. Returns progress, step results, and the full deliverable when complete. Use after rigor_execute with polling delivery to retrieve results.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "workflow_id": {
              "description": "The workflow ID returned by rigor_execute (format: wr_xxx).",
              "type": "string"
            }
          },
          "required": [
            "workflow_id"
          ],
          "type": "object"
        },
        "name": "rigor_status",
        "suite": "rigor"
      },
      {
        "annotations": {
          "destructiveHint": false,
          "idempotentHint": true,
          "openWorldHint": false,
          "readOnlyHint": true,
          "title": "List Rigor workflows"
        },
        "description": "List all Rigor workflows for your organization with filtering and pagination. Returns status, progress, capacity usage, and available actions per workflow. Use to monitor workflow state, understand concurrent limit usage, and identify stuck or completed workflows.",
        "discoverable": true,
        "inputSchema": {
          "additionalProperties": false,
          "properties": {
            "counts_toward_limit": {
              "description": "Filter to workflows counting toward the concurrent limit",
              "enum": [
                "true",
                "false"
              ],
              "type": "string"
            },
            "cursor": {
              "description": "Pagination cursor (created_at timestamp from previous page)",
              "type": "string"
            },
            "limit": {
              "description": "Page size (default 20, max 100)",
              "type": "number"
            },
            "status": {
              "description": "Filter by status (comma-separated). Valid values: executing, step_executing, completed, failed, halted, pending_approval, cancelled. E.g. \"halted,failed,pending_approval\"",
              "type": "string"
            },
            "task_type": {
              "description": "Filter by classified task type",
              "type": "string"
            }
          },
          "required": [],
          "type": "object"
        },
        "name": "rigor_workflows",
        "suite": "rigor"
      }
    ],
    "tools_count": 15
  },
  "server_identifier": "ai.plith/plith"
}

Known versions

Validation history

7 day score delta
n/a
30 day score delta
n/a
Recent healthy ratio
100%
Freshness
3.3h
TimestampStatusScoreLatencyTools
May 13, 2026 02:42:04 PM UTC Healthy 72.7 1572.2 ms 15
May 13, 2026 02:40:51 AM UTC Healthy 72.3 1969.7 ms 15
May 12, 2026 02:35:12 AM UTC Healthy 70.0 1704.0 ms 15

Validation timeline

ValidatedSummaryScoreProtocolAuth modeToolsHigh-risk toolsChanges
May 13, 2026 02:42:04 PM UTC Healthy 72.7 2024-11-05 public 15 2 none
May 13, 2026 02:40:51 AM UTC Healthy 72.3 2024-11-05 public 15 2 none
May 12, 2026 02:35:12 AM UTC Healthy 70.0 2024-11-05 public 15 2 none

Recent validation runs

StartedStatusSummaryLatencyChecks
May 13, 2026 02:42:03 PM UTC Completed Healthy 1572.2 ms action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe
May 13, 2026 02:40:49 AM UTC Completed Healthy 1969.7 ms action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe
May 12, 2026 02:35:11 AM UTC Completed Healthy 1704.0 ms action_safety_probe, advanced_capabilities_probe, connector_publishability_probe, connector_replay_probe, determinism_probe, initialize, interactive_flow_probe, oauth_authorization_server, oauth_protected_resource, official_registry_probe, openid_configuration, probe_noise_resilience, prompt_get, prompts_list, protocol_version_probe, provenance_divergence_probe, request_association_probe, resource_read, resources_list, server_card, session_resume_probe, step_up_auth_probe, tool_snapshot_probe, tools_list, transport_compliance_probe, utility_coverage_probe