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