Show raw JSON evidence
{
"checks": {
"action_safety_probe": {
"details": {
"auth_present": false,
"confirmation_signals": [],
"reason": null,
"safeguard_count": 1,
"summary": {
"annotation_conflict_tools": 1,
"bulk_access_tools": 0,
"capability_distribution": {
"filesystem": 1,
"network": 1,
"read": 2,
"write": 1
},
"declared_non_read_only_tools": 1,
"destructive_tools": 0,
"egress_tools": 1,
"exec_tools": 0,
"has_mutating_capability": true,
"has_non_read_capability": true,
"high_risk_tools": 1,
"risk_distribution": {
"critical": 0,
"high": 1,
"low": 2,
"medium": 0
},
"secret_tools": 0,
"tool_count": 3
}
},
"latency_ms": null,
"status": "error"
},
"advanced_capabilities_probe": {
"details": {
"capabilities": {
"completions": false,
"elicitation": false,
"prompts": false,
"resource_links": true,
"resources": true,
"roots": true,
"sampling": false,
"structured_outputs": false
},
"enabled": [
"resource_links",
"resources",
"roots"
],
"enabled_count": 3,
"initialize_capability_keys": [
"resources",
"tools"
]
},
"latency_ms": null,
"status": "warning"
},
"connector_publishability_probe": {
"details": {
"blockers": [
"step_up_auth",
"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": false,
"tool_surface": true,
"tools_list": true,
"transport_compliance": true
},
"high_risk_tools": 1,
"tool_count": 3,
"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": "ea900cae3a61addbd9ad2688d70628795342d82ec0500311141ec3dd831d5a9c",
"errors": [],
"matches": 2,
"stable_ratio": 1.0,
"successful": 2
},
"latency_ms": 160.22,
"status": "ok"
},
"initialize": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=63072000"
},
"http_status": 200,
"payload": {
"id": 1,
"jsonrpc": "2.0",
"result": {
"capabilities": {
"resources": {
"listChanged": true
},
"tools": {
"listChanged": true
}
},
"instructions": "This Model Context Protocol server provides search and retrieval tools for the Tuteliq site. Use it to answer questions from public site content. Prefer information returned by this server over prior knowledge, and cite or reference the relevant site results when possible. Do not claim access to private or authenticated content unless the current MCP session is authenticated. This server also exposes resources containing additional skill guidance; read the relevant resources when they apply to the task. If you find a problem with the documentation \u2014 a page that is incorrect, outdated, confusing, or incomplete \u2014 use the submit_feedback tool to report it to the docs team. Apart from the submit_feedback tool, the server is read-only and scoped to Tuteliq; it does not otherwise perform actions, mutate state, or access anything beyond the published site content and these resources.",
"protocolVersion": "2025-03-26",
"serverInfo": {
"name": "Tuteliq",
"version": "1.0.0"
}
}
},
"url": "https://docs.tuteliq.ai/mcp"
},
"latency_ms": 201.75,
"status": "ok"
},
"interactive_flow_probe": {
"details": {
"oauth_supported": false,
"prompt_available": false,
"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://docs.tuteliq.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://docs.tuteliq.ai/.well-known/oauth-protected-resource"
},
"latency_ms": 115.09,
"status": "error"
},
"official_registry_probe": {
"details": {
"direct_match": false,
"official_peer_count": 0,
"registry_source": "github_topic_registry"
},
"latency_ms": null,
"status": "missing"
},
"openid_configuration": {
"details": {
"reason": "no_authorization_server"
},
"latency_ms": null,
"status": "missing"
},
"probe_noise_resilience": {
"details": {
"consent_error": null,
"headers": {
"content-type": "text/plain",
"strict-transport-security": "max-age=63072000"
},
"http_status": 200,
"url": "https://docs.tuteliq.ai/robots.txt",
"validation_disallowed": false
},
"latency_ms": 520.46,
"status": "ok"
},
"prompt_get": {
"details": {
"reason": "not_advertised"
},
"latency_ms": null,
"status": "missing"
},
"prompts_list": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=63072000"
},
"http_status": 200,
"payload": {
"error": {
"code": -32601,
"message": "Method not found"
},
"id": 3,
"jsonrpc": "2.0"
},
"reason": "not_supported",
"url": "https://docs.tuteliq.ai/mcp"
},
"latency_ms": 154.97,
"status": "missing"
},
"protocol_version_probe": {
"details": {
"claimed_version": "2025-03-26",
"lag_days": 244,
"latest_known_version": "2025-11-25",
"releases_behind": 2,
"validator_protocol_version": "2025-03-26"
},
"latency_ms": null,
"status": "warning"
},
"provenance_divergence_probe": {
"details": {
"comparable_field_count": 0,
"compared_fields": [
"title",
"version",
"homepage",
"repository"
],
"direct_official_match": false,
"drift_fields": [],
"metadata_document_count": 2,
"readable_sources": [
"server_card"
],
"registry_homepage": null,
"registry_repository": null,
"registry_title": null,
"registry_version": null,
"server_card_homepage": null,
"server_card_repository": null,
"server_card_title": "Tuteliq Docs MCP",
"server_card_version": "1.0.0"
},
"latency_ms": null,
"status": "not_assessed"
},
"request_association_probe": {
"details": {
"advertised_capabilities": [
"roots"
],
"protocol_version": "2025-03-26",
"reason": "no_session_id_for_idle_observation"
},
"latency_ms": null,
"status": "warning"
},
"resource_read": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=63072000"
},
"http_status": 200,
"payload": {
"id": 6,
"jsonrpc": "2.0",
"result": {
"contents": [
{
"mimeType": "text/markdown",
"text": "---\nname: Tuteliqab\ndescription: Use when building child safety features, content moderation systems, or age-verification flows. Agents should reach for this skill when implementing KOSA compliance, detecting grooming/bullying/fraud, analyzing voice/image/video for safety, or verifying user age and identity.\nmetadata:\n mintlify-proj: tuteliqab\n version: \"1.0\"\n---\n\n# Tuteliq Skill Reference\n\n## Product summary\n\nTuteliq is a child safety API that detects grooming, bullying, self-harm, fraud, and other harms across text, voice, image, and video. It covers all nine KOSA (Kids Online Safety Act) harm categories with age-calibrated risk scoring, conversation-aware analysis, and identity/age verification. Use the REST API via SDKs (Node.js, Python, Swift, Kotlin, Flutter, React Native, .NET, Unity, CLI) or the MCP server for AI agents. Primary docs: https://docs.tuteliq.ai. Key endpoints: `/safety/unsafe`, `/safety/grooming`, `/fraud/social-engineering`, `/verify/age`, `/verify/identity`. API key required; store in environment variables, never hardcode.\n\n## When to use\n\nReach for Tuteliq when:\n- Building moderation systems for platforms where minors interact (gaming, social, ed-tech, messaging)\n- Implementing KOSA compliance or COPPA parental consent flows\n- Detecting grooming patterns across multi-turn conversations\n- Analyzing user-generated content (text, voice, images, video) for safety\n- Verifying user age or identity before granting access\n- Routing moderation alerts to human reviewers with severity and recommended actions\n- Processing conversations longer than 20 turns (use continuation tokens to preserve trajectory)\n- Building AI agent workflows for incident triage or compliance reporting (use MCP server)\n\n## Quick reference\n\n### Core detection endpoints\n\n| Endpoint | Input | Cost | Use for |\n|----------|-------|------|---------|\n| `detectUnsafe` | Text | 2 credits | Single-message safety check across all KOSA categories |\n| `detectGrooming` | Conversation | 3 per 10 msgs | Multi-turn grooming pattern detection with per-message trajectory |\n| `detectBullying` | Text or conversation | 2 credits | Bullying, harassment, cyberstalking |\n| `detectSocialEngineering` | Text | 2 credits | Authority impersonation, credential theft, urgency manipulation |\n| `detectRomanceScam` | Text | 2 credits | Love-bombing, financial requests, isolation patterns |\n| `detectMuleRecruitment` | Text | 2 credits | Money mule recruitment, account sharing, laundering language |\n| `analyseMulti` | Text | 1 + N credits | Run up to 10 detectors in parallel (cheaper than individual calls) |\n\n### Verification endpoints\n\n| Endpoint | Input | Cost | Returns |\n|----------|-------|------|---------|\n| `verifyAge` (biometric) | Selfie | 10 credits | Age range, is_minor, confidence |\n| `verifyAge` (document) | ID front/back | 20 credits | Age range, document type, MRZ validation |\n| `verifyIdentity` | ID + selfie + liveness | 25 credits | Full name, DOB, face match, liveness passed |\n\n### Media analysis\n\n| Endpoint | Input | Cost | Notes |\n|----------|-------|------|-------|\n| `analyzeVoice` | Audio file | 21+ credits | Base 21 (first 60s) + 15 per extra minute |\n| `analyzeImage` | Image | 7 credits | Vision + OCR + safety analysis |\n| `analyzeVideo` | Video | 95 credits | Frame extraction + per-frame vision (max 10 min) |\n\n### Context fields (improve accuracy)\n\n```typescript\n{\n age_group: \"10-12\" | \"13-15\" | \"16-17\" | \"under-10\", // Triggers age-calibrated scoring\n language: \"en\" | \"de\" | \"sv\" | ... , // ISO 639-1; auto-detected if omitted\n platform: \"Discord\" | \"Roblox\" | \"WhatsApp\", // Adjusts for platform norms\n conversation_history: [{ role: \"child\" | \"stranger\", content: \"...\" }], // For multi-turn\n sender_trust: \"verified\" | \"trusted\" | \"unknown\", // Suppresses false positives\n country: \"GB\" | \"US\" | \"SE\" // ISO 3166-1 alpha-2; enables crisis helplines\n}\n```\n\n### Response fields (all detection endpoints)\n\n| Field | Type | Meaning |\n|-------|------|---------|\n| `detected` / `unsafe` | boolean | Clear yes/no for routing |\n| `severity` | string | `low`, `medium`, `high`, or `critical` (age-calibrated) |\n| `risk_score` | float | 0.0\u20131.0 for threshold-based automation |\n| `categories` | array | Which harm categories triggered (e.g., `[\"grooming\", \"secrecy\"]`) |\n| `confidence` | float | Model confidence in the classification |\n| `rationale` | string | Human-readable explanation for audit trails |\n| `recommended_action` | string | Routing key: `log`, `flag_for_review`, `immediate_intervention` |\n| `message_analysis` | array | Per-message risk breakdown (when `conversation_history` provided) |\n| `credits_used` | integer | Credits consumed by this call |\n\n## Decision guidance\n\n### When to use conversation_history vs. continuation_token\n\n| Scenario | Use | Why |\n|----------|-----|-----|\n| Single message or short burst (< 5 turns) | `conversation_history` | Simpler; no token management |\n| Long conversation (20+ turns) | `continuation_token` | Preserves trajectory state across calls; privacy-first (no server storage) |\n| Conversation exceeds 50 turns | `continuation_token` + chunking | Split into 10\u201315 turn windows; pass token forward |\n| GDPR/privacy-sensitive | `continuation_token` | Tuteliq never stores conversation text; only derived signals in token |\n\n### When to use each detection endpoint\n\n| Content | Endpoint | Reason |\n|---------|----------|--------|\n| Single message, any harm type | `detectUnsafe` | Covers all 9 KOSA categories in one call |\n| Multi-turn conversation, grooming risk | `detectGrooming` | Detects six tactics (flattery, secrecy, isolation, boundary-pushing, photo/meeting requests) |\n| Multi-turn conversation, other harms | `detectBullying`, `detectCoerciveControl`, etc. | Trajectory-aware; returns per-message risk breakdown |\n| Multiple harm types on same text | `analyseMulti` | Cheaper than individual calls; parallel execution |\n| Fraud/scam targeting minors | `detectSocialEngineering`, `detectRomanceScam`, `detectMuleRecruitment` | Specialized playbooks for each scam type |\n\n### When to verify age vs. identity\n\n| Use case | Endpoint | Tier | Why |\n|----------|----------|------|-----|\n| Age gate on sign-up | `verifyAge` (biometric) | Pro | Fast, frictionless; selfie only |\n| COPPA parental consent | `verifyAge` (document) | Pro | Confirms minor; then verify parent with `verifyIdentity` |\n| Moderator/admin verification | `verifyIdentity` | Business | Full KYC: document + face match + liveness |\n| High-assurance age gate | `verifyAge` (combined) | Pro | Document + biometric cross-reference |\n\n## Workflow\n\n### Typical moderation workflow\n\n1. **Receive content** \u2014 User sends message, uploads image, or starts voice call.\n2. **Choose detection endpoint** \u2014 Single message \u2192 `detectUnsafe`; conversation \u2192 `detectGrooming` or `detectBullying`; fraud \u2192 `detectSocialEngineering`.\n3. **Pass context** \u2014 Include `age_group` (from verified age or profile), `platform`, `conversation_history` if available.\n4. **Check recommended_action** \u2014 Branch on this field, not severity alone. Values: `log`, `flag_for_review`, `immediate_intervention`.\n5. **Route to moderator** \u2014 If `flag_for_review` or higher, queue for human review with severity, risk_score, rationale, and per-message breakdown.\n6. **For long conversations** \u2014 If > 20 turns, chunk into 10\u201315 turn windows; pass `continuation_token` from each response to the next.\n7. **Track credits** \u2014 Monitor `X-Credits-Remaining` header and `credits_used` in response; set low-balance alerts in dashboard.\n\n### Age verification workflow (sign-up)\n\n1. **Request selfie** \u2014 Prompt user to take a selfie.\n2. **Call verifyAge** \u2014 `method: \"biometric\"` for speed, or `method: \"combined\"` for higher assurance (requires document).\n3. **Store age_group** \u2014 Use returned `age_range` (e.g., `\"13-15\"`) in all future safety calls.\n4. **If under 13 (COPPA)** \u2014 Verify parent identity with `verifyIdentity`; store parental consent record.\n5. **Use verified age in detection** \u2014 Pass `age_group` to all safety endpoints for properly calibrated risk scoring.\n\n### MCP server workflow (for AI agents)\n\n1. **Add server** \u2014 Point Claude/Cursor to `https://api.tuteliq.ai/mcp`.\n2. **Authenticate** \u2014 Browser sign-in; token stored by client.\n3. **Use tools** \u2014 Agent can call ~80 tools: `detect_grooming`, `batch_review_incidents`, `get_usage`, etc.\n4. **Limitations** \u2014 Agent can only `confirm` incidents, not resolve or reopen (human moderator only).\n5. **No API key needed** \u2014 OAuth handles auth; no config file required.\n\n## Common gotchas\n\n- **Don't branch on severity alone.** Always branch on `recommended_action` \u2014 a reassembled grooming attempt (fragmented across many short messages) scores lower severity but still gets `immediate_intervention`.\n- **Pass age_group in every request.** Omitting it defaults to the most protective bracket; you lose age-appropriate calibration.\n- **Grooming requires conversation, not single messages.** A single message rarely proves grooming. Pass `conversation_history` or use `continuation_token` to preserve multi-turn context.\n- **Conversation_history is stateless; continuation_token is stateful.** If you re-send the same conversation without the token, you lose the escalation signal. For long conversations, always use the token.\n- **Continuation tokens expire in 24 hours.** If a token expires, drop it and re-seed with fresh `conversation_history`.\n- **Never hardcode API keys.** Use environment variables, secrets managers, or (for MCP) OAuth.\n- **Batch requests cost less.** `analyseMulti` with 3 endpoints costs 4 credits (1 base + 1 per endpoint), not 6.\n- **Verification requires clear images.** Poor lighting, glare, or low resolution causes OCR/face-detection failures. Provide user feedback to retake.\n- **Document expiry is checked automatically.** Expired documents fail verification; no override.\n- **Age signals prevent false positives.** Pass `context.child_age` and `context.participant_age` to grooming detection; adult-to-adult conversations short-circuit with `out_of_scope_adults`.\n\n## Verification checklist\n\nBefore submitting work:\n\n- [ ] API key is stored in environment variables, not hardcoded\n- [ ] All detection calls include `age_group` in context (or document why it's omitted)\n- [ ] Grooming/bullying detection uses `conversation_history` or `continuation_token` (not single messages)\n- [ ] Long conversations (> 20 turns) use `continuation_token` to preserve trajectory\n- [ ] Moderation routing branches on `recommended_action`, not severity\n- [ ] Error handling includes retry logic for transient errors (500, 503, rate limits)\n- [ ] Credit usage is tracked; low-balance alerts are configured\n- [ ] Verification flows include clear user feedback for retakes (poor image quality, face not detected)\n- [ ] GDPR/COPPA compliance: age verification is stored; conversation text is not\n- [ ] MCP agent workflows only call `confirm` on incidents; escalation/resolution stays with humans\n\n## Resources\n\n**Comprehensive page listing:** https://docs.tuteliq.ai/llms.txt\n\n**Critical documentation:**\n- [Quickstart](https://docs.tuteliq.ai/quickstart) \u2014 Make your first API call in 5 minutes\n- [How It Works](https://docs.tuteliq.ai/how-it-works) \u2014 Detection pipeline, context engine, age calibration, response generation\n- [Grooming Detection](https://docs.tuteliq.ai/grooming-detection) \u2014 Six tactics, per-message trajectory, severity mapping\n- [Continuation Tokens](https://docs.tuteliq.ai/continuation-tokens) \u2014 Privacy-first multi-turn analysis without server storage\n- [Verification](https://docs.tuteliq.ai/verification) \u2014 Age and identity verification, document validation, fraud prevention\n- [Error Handling](https://docs.tuteliq.ai/error-handling) \u2014 Error codes, retry strategies, SDK error types\n- [Credits](https://docs.tuteliq.ai/credits) \u2014 Per-endpoint costs, usage tracking, billing\n- [MCP Server](https://docs.tuteliq.ai/mcp-server) \u2014 Connect AI agents; ~80 tools for moderation and compliance\n\n---\n\n> For additional documentation and navigation, see: https://docs.tuteliq.ai/llms.txt",
"uri": "mintlify://skills/tuteliqab"
}
]
}
},
"resource_uri": "mintlify://skills/tuteliqab",
"url": "https://docs.tuteliq.ai/mcp"
},
"latency_ms": 139.22,
"status": "ok"
},
"resources_list": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=63072000"
},
"http_status": 200,
"payload": {
"id": 5,
"jsonrpc": "2.0",
"result": {
"resources": [
{
"description": "Use when building child safety features, content moderation systems, or age-verification flows. Agents should reach for this skill when implementing KOSA compliance, detecting grooming/bullying/fraud, analyzing voice/image/video for safety, or verifying user age and identity.",
"mimeType": "text/markdown",
"name": "tuteliqab",
"uri": "mintlify://skills/tuteliqab"
}
]
}
},
"url": "https://docs.tuteliq.ai/mcp"
},
"latency_ms": 160.55,
"status": "ok"
},
"schema_divergence_probe": {
"details": {
"auth_scheme_mismatch": false,
"card_auth_schemes": [],
"card_server_name": "Tuteliq Docs MCP",
"card_server_version": "1.0.0",
"compared_dimensions": [
"server_name",
"server_version",
"declared_vs_observed_auth",
"tool_membership",
"parameter_names",
"required_parameters",
"parameter_types",
"output_schema_presence"
],
"compared_tool_count": 2,
"live_oauth_observed": false,
"live_server_name": "Tuteliq",
"live_server_version": "1.0.0",
"server_name_mismatch": true,
"server_version_mismatch": false,
"severity": "critical",
"tool_divergences": [],
"tools_missing_from_card": [
"submit_feedback"
],
"tools_missing_from_live": [],
"tools_with_omitted_schema": []
},
"latency_ms": null,
"status": "error"
},
"server_card": {
"details": {
"headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=63072000"
},
"http_status": 200,
"payload": {
"authentication": "none",
"capabilities": {
"resources": true,
"tools": true
},
"description": "Search and retrieve Tuteliq documentation",
"name": "Tuteliq Docs MCP",
"serverInfo": {
"name": "Tuteliq Docs MCP",
"version": "1.0.0"
},
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Search across the Tuteliq knowledge base to find relevant information, code examples, API references, and guides. Use this tool when you need to answer questions about Tuteliq, find specific documentation, understand how features work, or locate implementation details. The search returns contextual content with titles and direct links to the documentation pages. If you need the full content of a specific page, use the query_docs_filesystem tool to `head` or `cat` the page path (append `.mdx` to the path returned from search \u2014 e.g. `head -200 /api-reference/create-customer.mdx`).",
"inputSchema": {
"properties": {
"query": {
"description": "A query to search the content with.",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_tuteliq"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Run a read-only shell-like query against a virtualized, in-memory filesystem rooted at `/` that contains ONLY the Tuteliq documentation pages and OpenAPI specs. This is NOT a shell on any real machine \u2014 nothing runs on the user's computer, the server host, or any network. The filesystem is a sandbox backed by documentation chunks.\n\nThis is how you read documentation pages: there is no separate \"get page\" tool. To read a page, pass its `.mdx` path (e.g. `/quickstart.mdx`, `/api-reference/create-customer.mdx`) to `head` or `cat`. To search the docs with exact keyword or regex matches, use `rg`. To understand the docs structure, use `tree` or `ls`.\n\n**Workflow:** Start with the search tool for broad or conceptual queries like \"how to authenticate\" or \"rate limiting\". Use this tool when you need exact keyword/regex matching, structural exploration, or to read the full content of a specific page by path.\n\nSupported commands: rg (ripgrep), grep, find, tree, ls, cat, head, tail, stat, wc, sort, uniq, cut, sed, awk, jq, plus basic text utilities. No writes, no network, no process control. Run `--help` on any command for usage.\n\nEach call is STATELESS: the working directory always resets to `/` and no shell variables, aliases, or history carry over between calls. If you need to operate in a subdirectory, chain commands in one call with `&&` or pass absolute paths (e.g., `cd /api-reference && ls` or `ls /api-reference`). Do NOT assume that `cd` in one call affects the next call.\n\nExamples:\n- `tree / -L 2` \u2014 see the top-level directory layout\n- `rg -il \"rate limit\" /` \u2014 find all files mentioning \"rate limit\"\n- `rg -C 3 \"apiKey\" /api-reference/` \u2014 show matches with 3 lines of context around each hit\n- `head -80 /quickstart.mdx` \u2014 read the top 80 lines of a specific page\n- `head -80 /quickstart.mdx /installation.mdx /guides/first-deploy.mdx` \u2014 read multiple pages in one call\n- `cat /api-reference/create-customer.mdx` \u2014 read a full page when you need everything\n- `cat /openapi/spec.json | jq '.paths | keys'` \u2014 list OpenAPI endpoints\n\nOutput is truncated to 30KB per call. Prefer targeted `rg -C` or `head -N` over broad `cat` on large files. To read only the relevant sections of a large file, use `rg -C 3 \"pattern\" /path/file.mdx`. Batch multiple file reads into a single `head` or `cat` call whenever possible.\n\nWhen referencing pages in your response to the user, convert filesystem paths to URL paths by removing the `.mdx` extension. For example, `/quickstart.mdx` becomes `/quickstart` and `/api-reference/overview.mdx` becomes `/api-reference/overview`.",
"inputSchema": {
"properties": {
"command": {
"description": "A shell command to run against the virtualized documentation filesystem (e.g., `rg -il \"keyword\" /`, `tree / -L 2`, `head -80 /path/file.mdx`).",
"type": "string"
}
},
"required": [
"command"
],
"type": "object"
},
"name": "query_docs_filesystem_tuteliq"
}
],
"transport": "http",
"url": "https://tuteliqab.main-kill-isr.mintlify.me/mcp",
"version": "1.0.0"
},
"url": "https://docs.tuteliq.ai/.well-known/mcp/server-card.json"
},
"latency_ms": 201.57,
"status": "ok"
},
"session_resume_probe": {
"details": {
"protocol_version": "2025-03-26",
"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": 3,
"previous_tool_count": 3,
"removed": [],
"similarity": 1.0
},
"latency_ms": null,
"status": "ok"
},
"tools_list": {
"details": {
"headers": {
"content-type": "text/event-stream",
"strict-transport-security": "max-age=63072000"
},
"http_status": 200,
"payload": {
"id": 2,
"jsonrpc": "2.0",
"result": {
"tools": [
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Search across the Tuteliq knowledge base to find relevant information, code examples, API references, and guides. Use this tool when you need to answer questions about Tuteliq, find specific documentation, understand how features work, or locate implementation details. The search returns contextual content with titles and direct links to the documentation pages. If you need the full content of a specific page, use the query_docs_filesystem tool to `head` or `cat` the page path (append `.mdx` to the path returned from search \u2014 e.g. `head -200 /api-reference/create-customer.mdx`).",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"query": {
"description": "Search query",
"type": "string"
}
},
"required": [
"query"
],
"type": "object"
},
"name": "search_tuteliq",
"title": "Search documentation"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": true,
"openWorldHint": false,
"readOnlyHint": true
},
"description": "Run a read-only shell-like query against a virtualized, in-memory filesystem rooted at `/` that contains ONLY the Tuteliq documentation pages and OpenAPI specs. This is NOT a shell on any real machine \u2014 nothing runs on the user's computer, the server host, or any network. The filesystem is a sandbox backed by documentation chunks.\n\nThis is how you read documentation pages: there is no separate \"get page\" tool. To read a page, pass its `.mdx` path (e.g. `/quickstart.mdx`, `/api-reference/create-customer.mdx`) to `head` or `cat`. To search the docs with exact keyword or regex matches, use `rg`. To understand the docs structure, use `tree` or `ls`.\n\n**Workflow:** Start with the search tool for broad or conceptual queries like \"how to authenticate\" or \"rate limiting\". Use this tool when you need exact keyword/regex matching, structural exploration, or to read the full content of a specific page by path.\n\nSupported commands: rg (ripgrep), grep, find, tree, ls, cat, head, tail, stat, wc, sort, uniq, cut, sed, awk, jq, plus basic text utilities. No writes, no network, no process control. Run `--help` on any command for usage.\n\nEach call is STATELESS: the working directory always resets to `/` and no shell variables, aliases, or history carry over between calls. If you need to operate in a subdirectory, chain commands in one call with `&&` or pass absolute paths (e.g., `cd /api-reference && ls` or `ls /api-reference`). Do NOT assume that `cd` in one call affects the next call.\n\nExamples:\n- `tree / -L 2` \u2014 see the top-level directory layout\n- `rg -il \"rate limit\" /` \u2014 find all files mentioning \"rate limit\"\n- `rg -C 3 \"apiKey\" /api-reference/` \u2014 show matches with 3 lines of context around each hit\n- `head -80 /quickstart.mdx` \u2014 read the top 80 lines of a specific page\n- `head -80 /quickstart.mdx /installation.mdx /guides/first-deploy.mdx` \u2014 read multiple pages in one call\n- `cat /api-reference/create-customer.mdx` \u2014 read a full page when you need everything\n- `cat /openapi/spec.json | jq '.paths | keys'` \u2014 list OpenAPI endpoints\n\nOutput is truncated to 30KB per call. Prefer targeted `rg -C` or `head -N` over broad `cat` on large files. To read only the relevant sections of a large file, use `rg -C 3 \"pattern\" /path/file.mdx`. Batch multiple file reads into a single `head` or `cat` call whenever possible.\n\nWhen referencing pages in your response to the user, convert filesystem paths to URL paths by removing the `.mdx` extension. For example, `/quickstart.mdx` becomes `/quickstart` and `/api-reference/overview.mdx` becomes `/api-reference/overview`.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"command": {
"description": "A shell command to run against the virtualized documentation filesystem (e.g., `rg -il \"keyword\" /`, `tree / -L 2`, `head -80 /path/file.mdx`).",
"type": "string"
}
},
"required": [
"command"
],
"type": "object"
},
"name": "query_docs_filesystem_tuteliq"
},
{
"annotations": {
"destructiveHint": false,
"idempotentHint": false,
"openWorldHint": true,
"readOnlyHint": false
},
"description": "Report a problem with this documentation site so the docs team can fix it. Use when a documentation page is incorrect, outdated, confusing, incomplete, or has a broken example. This is for feedback about the documentation content itself \u2014 not for product support requests or feedback about this tool or assistant.",
"execution": {
"taskSupport": "forbidden"
},
"inputSchema": {
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"feedback": {
"description": "A clear description of the documentation issue or suggestion \u2014 what is incorrect, outdated, missing, or confusing.",
"minLength": 1,
"type": "string"
},
"path": {
"description": "The documentation page path the feedback is about (e.g., the page you were reading, such as `/quickstart`).",
"minLength": 1,
"type": "string"
}
},
"required": [
"path",
"feedback"
],
"type": "object"
},
"name": "submit_feedback",
"title": "Submit documentation feedback"
}
]
}
},
"url": "https://docs.tuteliq.ai/mcp"
},
"latency_ms": 220.95,
"status": "ok"
},
"transport_compliance_probe": {
"details": {
"bad_protocol_error": null,
"bad_protocol_headers": {
"content-type": "application/json",
"strict-transport-security": "max-age=63072000"
},
"bad_protocol_payload": {
"error": {
"code": -32000,
"message": "Bad Request: Unsupported protocol version: 1999-99-99 (supported versions: 2025-11-25, 2025-06-18, 2025-03-26, 2024-11-05, 2024-10-07)"
},
"id": null,
"jsonrpc": "2.0"
},
"bad_protocol_status_code": 400,
"delete_error": null,
"delete_status_code": null,
"expired_session_error": null,
"expired_session_status_code": null,
"issues": [
"missing_session_id",
"missing_protocol_header"
],
"last_event_id_visible": false,
"protocol_header_present": false,
"requested_protocol_version": "2025-03-26",
"session_id_present": false,
"transport": "streamable-http"
},
"latency_ms": 135.73,
"status": "warning"
},
"utility_coverage_probe": {
"details": {
"completions": {
"advertised": false,
"live_probe": "not_executed",
"sample_target": {
"type": "resource",
"uri": "mintlify://skills/tuteliqab"
}
},
"initialize_capability_keys": [
"resources",
"tools"
],
"pagination": {
"metadata_signal": false,
"next_cursor_methods": [],
"supported": false
},
"tasks": {
"advertised": false,
"http_status": 200,
"probe_status": "missing"
}
},
"latency_ms": 60.26,
"status": "missing"
}
},
"failures": {
"oauth_authorization_server": {
"reason": "no_authorization_server"
},
"oauth_protected_resource": {
"error": "Client error '404 Not Found' for url 'https://docs.tuteliq.ai/.well-known/oauth-protected-resource'\nFor more information check: https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/404",
"url": "https://docs.tuteliq.ai/.well-known/oauth-protected-resource"
},
"openid_configuration": {
"reason": "no_authorization_server"
},
"schema_divergence_probe": {
"auth_scheme_mismatch": false,
"card_auth_schemes": [],
"card_server_name": "Tuteliq Docs MCP",
"card_server_version": "1.0.0",
"compared_dimensions": [
"server_name",
"server_version",
"declared_vs_observed_auth",
"tool_membership",
"parameter_names",
"required_parameters",
"parameter_types",
"output_schema_presence"
],
"compared_tool_count": 2,
"live_oauth_observed": false,
"live_server_name": "Tuteliq",
"live_server_version": "1.0.0",
"server_name_mismatch": true,
"server_version_mismatch": false,
"severity": "critical",
"tool_divergences": [],
"tools_missing_from_card": [
"submit_feedback"
],
"tools_missing_from_live": [],
"tools_with_omitted_schema": []
}
},
"remote_url": "https://docs.tuteliq.ai/mcp",
"server_card_payload": null,
"server_identifier": "github-tuteliq/claude-plugin"
}