IA-QA — 130+ QA & Dev Tools for AI Agents
Ce que fait ce MCP
Provides deterministic QA, evaluation, testing, code analysis, prompt and RAG checks, model comparison, and web security diagnostics for AI applications.
Outils
Schéma d’entrée
{'type': 'object', 'required': ['variant_a', 'variant_b'], 'properties': {'variant_a': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Name/label for variant A'}, 'scores': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Array of scores (0-100)'}}, 'description': 'First variant configuration with name and score array'}, 'variant_b': {'type': 'object', 'properties': {'name': {'type': 'string', 'description': 'Name/label for variant B'}, 'scores': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Array of scores (0-100)'}}, 'description': 'Second variant configuration with name and score array'}}}
Schéma de sortie
{'type': 'object', 'properties': {'max': {}, 'min': {}, 'mean': {'type': 'string'}, 'count': {'type': 'number'}, 'median': {'type': 'string'}, 'winner': {}, 'std_dev': {'type': 'string'}, 'variant_a': {'type': 'object'}, 'variant_b': {'type': 'object'}, 'recommendation': {'type': 'number'}, 'improvement_percent': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['version2'], 'properties': {'context': {'type': 'string', 'description': 'Optional PR title or feature context for better analysis'}, 'version1': {'type': 'string', 'description': 'Original code (before changes). If omitted, only the new version is analysed.'}, 'version2': {'type': 'string', 'description': 'New/modified code (after changes)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'bugs': {'type': 'array', 'items': {'type': 'object'}}, 'disclaimer': {'type': 'string'}, 'notAnalysed': {'type': 'array', 'items': {'type': 'string'}}, 'overallRisk': {'type': 'string'}, 'rulesApplied': {'type': 'number'}, 'scannedLines': {'type': 'number'}, 'totalSuggestions': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['responses'], 'properties': {'reference': {'type': 'string', 'description': 'Optional ground-truth answer. If set, each output is also ranked by closeness to it and the closest one is named.'}, 'responses': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'The produced output'}, 'label': {'type': 'string', 'description': 'Human name for this candidate (e.g. model id)'}}}, 'minItems': 2, 'description': 'The outputs to analyze (same task, N models/prompts/versions). Each item is a plain string or { "label": "GPT-4o", "text": "..." }. At least 2 required.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'count': {}, 'summary': {'type': 'string'}, 'consensus': {}, 'reference_ranking': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Base64 string to decode'}}}
Schéma de sortie
{'type': 'object', 'properties': {'decoded': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text to encode'}}}
Schéma de sortie
{'type': 'object', 'properties': {'encoded': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['responses'], 'properties': {'responses': {'type': 'array', 'items': {'type': 'object', 'required': ['variantId', 'answer'], 'properties': {'answer': {'type': 'string', 'description': 'The LLM response text for this variant'}, 'variantId': {'type': 'string', 'description': 'Identifier for the demographic variant (e.g. "male", "female", "western", "young")'}}}, 'minItems': 2, 'description': 'Array of variant responses to compare for bias'}}}
Schéma de sortie
{'type': 'object', 'properties': {'verdict': {'type': 'string'}, 'lengthCV': {'type': 'number'}, 'biasScore': {'type': 'number'}, 'sentiments': {'type': 'array', 'items': {'type': 'object', 'properties': {'ratio': {'type': 'number'}, 'negative': {'type': 'number'}, 'positive': {'type': 'number'}, 'variantId': {'type': 'string'}}}}, 'avgSimilarity': {'type': 'number'}, 'minSimilarity': {'type': 'number'}, 'sentimentVariance': {'type': 'number'}, 'pairwiseSimilarities': {'type': 'array', 'items': {'type': 'object', 'properties': {'a': {'type': 'string'}, 'b': {'type': 'string'}, 'score': {'type': 'number'}}}}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['query', 'documents'], 'properties': {'b': {'type': 'number', 'description': 'Length normalization factor (default: 0.75)'}, 'k1': {'type': 'number', 'description': 'Term frequency saturation (default: 1.5)'}, 'query': {'type': 'string', 'description': 'The search query'}, 'top_k': {'type': 'number', 'description': 'Return top K results (default: all)'}, 'documents': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Array of documents to rank'}}}
Schéma de sortie
{'type': 'object', 'properties': {'b': {}, 'k1': {}, 'index': {}, 'query': {}, 'results': {}, 'bm25_score': {'type': 'number'}, 'doc_length': {'type': 'number'}, 'doc_preview': {}, 'avg_doc_length': {'type': 'number'}, 'documents_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['query', 'chunks'], 'properties': {'query': {'type': 'string', 'description': 'The user question to answer'}, 'chunks': {'type': 'array', 'items': {'type': 'object', 'properties': {'text': {'type': 'string'}, 'score': {'type': 'number'}, 'source': {'type': 'string'}}}, 'description': 'Retrieved context chunks with .text (required), .source (optional), .score (optional)'}, 'language': {'type': 'string', 'description': 'Response language instruction (e.g. "French", "Spanish")'}, 'cite_sources': {'type': 'boolean', 'description': 'Add [1], [2] citation numbers (default: true)'}, 'max_context_tokens': {'type': 'number', 'description': 'Max tokens for context section (default: 2000)'}, 'system_instruction': {'type': 'string', 'description': 'Custom system instruction (default: standard RAG grounding instruction)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'prompt': {}, 'system_prompt': {}, 'chunks_included': {'type': 'number'}, 'included_chunks': {}, 'chunks_truncated': {'type': 'number'}, 'total_tokens_estimate': {'type': 'number'}, 'context_tokens_estimate': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text to analyze for readability'}}}
Schéma de sortie
{'type': 'object', 'properties': {'level': {}, 'stats': {'type': 'object'}, 'coleman_liau_index': {'type': 'number'}, 'flesch_reading_ease': {}, 'flesch_kincaid_grade': {'type': 'number'}, 'automated_readability_index': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input', 'to'], 'properties': {'to': {'type': 'string', 'description': 'Target case: "camel", "pascal", "snake", "kebab", "upper_snake", "dot", "title"'}, 'input': {'type': 'string', 'description': 'String to convert (e.g., "myVariableName", "my-css-class")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'result': {}, 'from_words': {}, 'target_case': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['foreground', 'background'], 'properties': {'background': {'type': 'string', 'description': 'Background color in hex (e.g., "#ffffff")'}, 'foreground': {'type': 'string', 'description': 'Foreground color in hex (e.g., "#333333")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'ratio': {}, 'AA_large': {'type': 'boolean'}, 'AAA_large': {'type': 'boolean'}, 'AA_normal': {'type': 'boolean'}, 'AAA_normal': {'type': 'boolean'}, 'background': {'type': 'object'}, 'foreground': {'type': 'object'}, 'ratio_text': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Color value to convert, e.g. "#ff6b6b", "rgb(255,107,107)", "hsl(0,100%,71%)"'}}}
Schéma de sortie
{'type': 'object', 'properties': {'b': {}, 'g': {}, 'r': {}, 'hex': {}, 'hsl': {'type': 'string'}, 'rgb': {'type': 'string'}, 'input': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['models'], 'properties': {'models': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Array of 2-5 model names (e.g. ["gpt-4o","claude-3.5-sonnet","gemini-2.0-flash"])'}, 'use_case': {'enum': ['cost', 'context', 'reasoning', 'multimodal', 'speed'], 'type': 'string', 'description': 'Optimize recommendation for this criterion'}}}
Schéma de sortie
{'type': 'object', 'properties': {'rows': {}, 'model': {}, 'use_case': {}, 'recommendation': {}, 'models_compared': {'type': 'number'}, 'cost_per_1k_total': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['response_a', 'response_b'], 'properties': {'task': {'type': 'string', 'description': 'The task/prompt both outputs were answering — used by the LLM judge for context'}, 'model': {'type': 'string', 'description': 'Optional judge model id (BYOK). When set with api_key, an LLM judge picks a qualitative winner.'}, 'api_key': {'type': 'string', 'description': 'Optional API key for the judge model (BYOK). Used only for the judge call; never stored.'}, 'label_a': {'type': 'string', 'description': 'Label for output A (e.g. "GPT-4o", "v1.0")'}, 'label_b': {'type': 'string', 'description': 'Label for output B (e.g. "GPT-5-nano", "v1.1")'}, 'reference': {'type': 'string', 'description': 'Optional ground-truth / expected answer. If set, each output is scored against it and the closer one wins (deterministic).'}, 'check_json': {'type': 'boolean', 'description': 'Try to parse as JSON and compare structurally (keys, types, values)'}, 'response_a': {'type': 'string', 'description': "First output (e.g. model A's answer)"}, 'response_b': {'type': 'string', 'description': "Second output (e.g. model B's answer)"}}}
Schéma de sortie
{'type': 'object', 'properties': {'judge': {}, 'labelA': {}, 'labelB': {}, 'metrics': {}, 'summary': {'type': 'string'}, 'verdict': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['responses'], 'properties': {'responses': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Array of 2+ LLM responses to compare (same prompt, different runs)'}, 'check_facts': {'type': 'boolean', 'description': 'Check for contradictory numbers/facts across responses (default: true)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'verdict': {}, 'fact_drift': {}, 'avg_similarity': {}, 'response_count': {'type': 'number'}, 'pairwise_scores': {}, 'fact_contradiction': {}, 'length_variance_percent': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['messages', 'model'], 'properties': {'model': {'type': 'string', 'description': 'Target model name (e.g. gpt-4o, claude-3.5-sonnet)'}, 'messages': {'type': 'array', 'items': {'type': 'object', 'properties': {'role': {'type': 'string'}, 'content': {'type': 'string'}}}, 'description': 'Array of messages (system/user/assistant)'}, 'max_output_tokens': {'type': 'number', 'description': 'Reserved tokens for output (default: 4096)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'fits': {}, 'role': {}, 'chars': {'type': 'number'}, 'index': {}, 'model': {}, 'tokens': {}, 'warnings': {}, 'breakdown': {'type': 'object'}, 'per_message': {}, 'total_tokens': {}, 'message_count': {'type': 'number'}, 'context_window': {}, 'total_input_tokens': {}, 'utilization_percent': {'type': 'string'}, 'reserved_output_tokens': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['messages'], 'properties': {'messages': {'type': 'array', 'items': {'type': 'object', 'properties': {'role': {'enum': ['system', 'user', 'assistant'], 'type': 'string'}, 'content': {'type': 'string'}}}, 'description': 'Conversation messages in order'}}}
Schéma de sortie
{'type': 'object', 'properties': {'turn_count': {'type': 'number'}, 'repetitions': {}, 'topic_drift': {}, 'user_messages': {'type': 'number'}, 'context_retention': {}, 'has_system_prompt': {'type': 'boolean'}, 'assistant_messages': {'type': 'number'}, 'avg_response_length': {'type': 'number'}, 'repetition_detected': {'type': 'boolean'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Full URL to audit (e.g. https://example.com/login)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'url': {}, 'name': {}, 'path': {}, 'score': {'type': 'number'}, 'domain': {}, 'issues': {}, 'secure': {}, 'cookies': {'type': 'array'}, 'max_age': {}, 'message': {'type': 'string'}, 'httpOnly': {}, 'sameSite': {}, 'host_prefix': {}, 'cookies_found': {'type': 'number'}, 'secure_prefix': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Full URL to test, e.g. https://api.example.com/resource'}, 'method': {'type': 'string', 'description': 'HTTP method to simulate (default: GET)'}, 'origin': {'type': 'string', 'description': 'Origin header to simulate (default: https://yourdomain.com)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'url': {}, 'method': {}, 'status': {}, 'preflight': {}, 'allHeaders': {}, 'corsHeaders': {}, 'testedOrigin': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Full URL to test (e.g. https://api.example.com/endpoint)'}, 'origin': {'type': 'string', 'description': 'Custom Origin header to test (default: tests multiple origins automatically)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'url': {}, 'error': {'type': 'string'}, 'tests': {}, 'warning': {'type': 'string'}, 'risk_level': {'enum': ['safe', 'low', 'medium', 'high', 'critical', 'unknown']}, 'origins_tested': {'type': 'number'}, 'total_findings': {'type': 'number'}, 'origins_reachable': {'type': 'number'}, 'origins_conclusive': {'type': 'number'}, 'origins_inconclusive': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['reasoning'], 'properties': {'reasoning': {'type': 'string', 'description': 'The CoT / reasoning trace text (e.g. from <think> tags or step-by-step output)'}, 'expected_conclusion': {'type': 'string', 'description': 'Expected final answer to check against (optional)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'markers': {}, 'step_count': {'type': 'number'}, 'total_chars': {'type': 'number'}, 'total_lines': {'type': 'number'}, 'has_conclusion': {'type': 'boolean'}, 'reasoning_depth': {}, 'backtracking_signals': {}, 'reasoning_depth_label': {}, 'conclusion_matches_expected': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Source code to analyze'}, 'language': {'type': 'string', 'description': 'Language hint: "js", "ts", "py", "java", "c", "rb", "go", "sh", "html", "css" (auto-detect if omitted)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'language': {}, 'code_lines': {}, 'blank_lines': {}, 'total_lines': {}, 'comment_lines': {}, 'comment_density': {}, 'code_to_comment_ratio': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text to count tokens for'}}}
Schéma de sortie
{'type': 'object', 'properties': {'chars': {}, 'words': {}, 'tokens_estimate': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['confluence_base_url', 'confluence_email', 'confluence_token', 'space_key', 'test_suite'], 'properties': {'title': {'type': 'string', 'description': 'Page title. Defaults to "Test Plan: {issue_key}"'}, 'issue_key': {'type': 'string', 'description': 'Source Jira issue key (for the page title and source link)'}, 'issue_url': {'type': 'string', 'description': 'Source Jira issue URL (added as a link in the page)'}, 'space_key': {'type': 'string', 'description': 'Confluence space key where the page will be created, e.g. "QA", "ENG"'}, 'test_suite': {'type': 'object', 'description': 'The test_suite object from jira_to_test_suite result', 'additionalProperties': True}, 'parent_page_id': {'type': 'string', 'description': 'Optional parent page ID — page will be created as a child of this page'}, 'confluence_email': {'type': 'string', 'description': 'Atlassian account email'}, 'confluence_token': {'type': 'string', 'description': 'Atlassian API token'}, 'confluence_base_url': {'type': 'string', 'description': 'Atlassian base URL'}}}
Schéma de sortie
{'type': 'object', 'properties': {'title': {'type': 'string'}, 'page_id': {'type': 'string'}, 'success': {'type': 'boolean'}, 'page_url': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['expression'], 'properties': {'expression': {'type': 'string', 'description': 'Cron expression (e.g., "0 9 * * 1-5", "*/15 * * * *")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'fields': {'type': 'object'}, 'expression': {}, 'human_readable': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['expression'], 'properties': {'expression': {'type': 'string', 'description': 'Cron expression with 5 fields, e.g. "*/15 9-18 * * 1-5"'}, 'next_runs_count': {'type': 'number', 'description': 'How many upcoming runs to return (1-50, default: 10)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'valid': {'type': 'boolean'}, 'fields': {'type': 'object'}, 'next_runs': {}, 'expression': {}, 'human_readable': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['token'], 'properties': {'token': {'type': 'string', 'description': 'The JWT string to decode (header.payload.signature)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'header': {}, 'expired': {}, 'payload': {}, 'expiresAt': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text to detect language from (min 20 chars for accuracy)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'lang': {}, 'name': {'type': 'string'}, 'score': {}, 'method': {'type': 'string'}, 'matched': {}, 'language': {'type': 'string'}, 'confidence': {'type': 'number'}, 'top_candidates': {'type': 'array'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Code or config content to scan (max 500KB)'}, 'filename': {'type': 'string', 'description': 'Optional filename for context (e.g. ".env", "config.js")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'filename': {}, 'findings': {}, 'risk_level': {}, 'recommendation': {}, 'total_findings': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['before', 'after'], 'properties': {'after': {'type': 'object', 'description': 'Current page mapping: same shape as before, captured after the UI change.'}, 'before': {'type': 'object', 'description': 'Baseline page mapping: { page, url, capturedAt, elements: [{role, name, selector, context?}] }. Captured before a UI change.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'rows': {'type': 'array'}, 'added': {'type': 'array'}, 'counts': {'type': 'object'}, 'verdict': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['a', 'b'], 'properties': {'a': {'type': 'string', 'description': 'Original (before) text'}, 'b': {'type': 'string', 'description': 'Modified (after) text'}, 'context': {'type': 'number', 'description': 'Context lines around each change (0–20, default: 3)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'diff': {'type': 'string'}, 'added': {'type': 'number'}, 'removed': {'type': 'number'}, 'unchanged': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'batch': {'type': 'array', 'items': {'type': 'object', 'required': ['text_a', 'text_b'], 'properties': {'text_a': {'type': 'string'}, 'text_b': {'type': 'string'}}}, 'description': 'Batch mode: array of { text_a, text_b } pairs. Overrides text_a/text_b if provided.'}, 'text_a': {'type': 'string', 'description': 'First text to compare (single-pair mode)'}, 'text_b': {'type': 'string', 'description': 'Second text to compare (single-pair mode)'}, 'methods': {'type': 'array', 'items': {'enum': ['bow', 'tfidf', 'ngram'], 'type': 'string'}, 'description': 'Algorithms to use (default: all three). Options: "bow", "tfidf", "ngram"'}}}
Schéma de sortie
{'type': 'object', 'properties': {'mode': {'type': 'string'}, 'count': {'type': 'number'}, 'scores': {}, 'text_a': {}, 'text_b': {}, 'results': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': '.env file content to parse (e.g. the output of `cat .env`)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'vars': {}, 'count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'String to HTML-escape'}}}
Schéma de sortie
{'type': 'object', 'properties': {'escaped': {}, 'original_length': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['model', 'input_tokens'], 'properties': {'model': {'type': 'string', 'description': 'Model name, e.g. "gpt-4o", "claude-3.5-sonnet", "deepseek-v3"'}, 'input_tokens': {'type': 'number', 'description': 'Number of input/prompt tokens'}, 'output_tokens': {'type': 'number', 'description': 'Number of output/completion tokens (default: 0)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'model': {}, 'rates': {'type': 'object'}, 'input_tokens': {}, 'output_tokens': {}, 'input_cost_usd': {'type': 'string'}, 'total_cost_usd': {'type': 'string'}, 'output_cost_usd': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Raw text (e.g., LLM output) that may contain a JSON object or array'}}}
Schéma de sortie
{'type': 'object', 'properties': {'json': {}, 'source': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input', 'path'], 'properties': {'path': {'type': 'string', 'description': 'Dot-notation path, e.g. "user.address.city" or "items.0.name"'}, 'input': {'type': ['string', 'object', 'array'], 'description': 'The JSON to traverse — a JSON string, or the object/array itself.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'path': {}, 'type': {}, 'value': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text to extract links from'}, 'types': {'type': 'array', 'items': {'enum': ['url', 'email', 'domain'], 'type': 'string'}, 'description': 'Types to extract (default: all three)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'total': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'tags': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Custom tags to add (default set: TODO, FIXME, HACK, NOTE, BUG, OPTIMIZE, XXX)'}, 'input': {'type': 'string', 'description': 'Code or text to scan'}, 'include_context': {'type': 'boolean', 'description': 'Include full line text (default: true)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'items': {}, 'total': {'type': 'number'}, 'counts': {}, 'has_critical': {'type': 'boolean'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['confluence_base_url', 'confluence_email', 'confluence_token'], 'properties': {'page_id': {'type': 'string', 'description': 'Confluence page ID (numeric string), e.g. "123456789"'}, 'page_url': {'type': 'string', 'description': 'Full Confluence page URL (alternative to page_id), e.g. "https://mycompany.atlassian.net/wiki/spaces/ENG/pages/123456789"'}, 'confluence_email': {'type': 'string', 'description': 'Atlassian account email (same credentials as Jira)'}, 'confluence_token': {'type': 'string', 'description': 'Atlassian API token'}, 'include_children': {'type': 'boolean', 'description': 'List direct child pages (id + title) (default: false)'}, 'confluence_base_url': {'type': 'string', 'description': 'Atlassian base URL, e.g. "https://mycompany.atlassian.net"'}}}
Schéma de sortie
{'type': 'object', 'properties': {'url': {'type': 'string'}, 'title': {'type': 'string'}, 'page_id': {'type': 'string'}, 'children': {'type': 'array', 'items': {'type': 'object'}}, 'markdown': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['issue_key', 'jira_base_url', 'jira_email', 'jira_token'], 'properties': {'fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Specific Jira field names to return. Omit for all standard fields.'}, 'issue_key': {'type': 'string', 'description': 'Jira issue key, e.g. "PROJ-123"'}, 'jira_email': {'type': 'string', 'description': 'Atlassian account email'}, 'jira_token': {'type': 'string', 'description': 'Atlassian API token (from id.atlassian.com > Security > API tokens)'}, 'jira_base_url': {'type': 'string', 'description': 'Atlassian base URL, e.g. "https://mycompany.atlassian.net"'}, 'include_comments': {'type': 'boolean', 'description': 'Include issue comments, up to 20 (default: true)'}, 'include_attachments': {'type': 'boolean', 'description': 'Include attachment metadata list (default: false)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'key': {'type': 'string'}, 'url': {'type': 'string'}, 'type': {'type': 'string'}, 'labels': {'type': 'array', 'items': {'type': 'string'}}, 'status': {'type': 'string'}, 'summary': {'type': 'string'}, 'assignee': {'type': 'string'}, 'priority': {'type': 'string'}, 'reporter': {'type': 'string'}, 'description': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'limit': {'type': 'number', 'description': 'Max articles to return (default: 20, max: 50)'}, 'category': {'type': 'string', 'description': 'Filter: "qa" (testing/quality), "ai" (AI/LLM/agents), "all" (default — both)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'articles': {'type': 'array'}, 'category': {}, 'total_found': {'type': 'number'}, 'sources_queried': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['examples'], 'properties': {'format': {'enum': ['chat', 'xml', 'markdown', 'plain'], 'type': 'string', 'description': 'Output format (default: chat)'}, 'examples': {'type': 'array', 'items': {'type': 'object', 'properties': {'input': {'type': 'string'}, 'label': {'type': 'string'}, 'output': {'type': 'string'}}}, 'description': 'Array of {input, output} pairs'}, 'input_label': {'type': 'string', 'description': 'Label for input (default: User / <input>)'}, 'output_label': {'type': 'string', 'description': 'Label for output (default: Assistant / <output>)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'format': {}, 'formatted': {}, 'example_count': {'type': 'number'}, 'token_estimate': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['query'], 'properties': {'query': {'type': 'string', 'description': 'Keyword(s) to search in tool name and description (e.g. "cors", "token", "vector", "json")'}, 'category': {'type': 'string', 'description': 'Optional: filter by category — data | encoding | text | llm | qa | rag | dev | security | web'}, 'max_results': {'type': 'number', 'description': 'Maximum tools to return (default 10, max 50). Results are ranked by IDF-weighted relevance, so common words like "test" do not inflate the list.'}, 'with_schema': {'type': 'boolean', 'description': 'Set true to include inputSchema in results (default: false)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'hint': {}, 'tool': {}, 'count': {'type': 'number'}, 'query': {}, 'score': {}, 'tools': {'type': 'array'}, 'category': {}, 'truncated': {'type': 'boolean'}, 'total_matches': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['gherkin', 'warnings', 'api_key', 'model'], 'properties': {'model': {'type': 'string', 'description': 'LLM model to use for the fix, e.g. "gpt-4o-mini". Must belong to the provider whose key you passed in api_key.'}, 'api_key': {'type': 'string', 'description': 'Your own LLM provider API key (BYOK) — OpenAI "sk-…", Anthropic "sk-ant-…", Google "AIzaSy…", or Groq "gsk_…". There is no server-side key for this tool: if you do not have one, do not call it and do not invent a value — placeholders like "configured", "your_api_key" or a masked "sk-…***…" are rejected. Used for this call only, never stored.'}, 'gherkin': {'type': 'string', 'description': 'The current Gherkin text from the jira_to_test_suite result (test_suite.gherkin).'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}, 'description': 'The _gherkin_warnings array from the jira_to_test_suite result.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'latency_ms': {'type': 'number'}, 'model_used': {'type': 'string'}, 'fixed_gherkin': {'type': 'string'}, 'warnings_after': {'type': 'number'}, 'warnings_before': {'type': 'number'}, 'remaining_warnings': {'type': 'array', 'items': {'type': 'string'}}}}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'mode': {'type': 'string', 'description': '"flatten" (default) or "unflatten"'}, 'input': {'type': ['string', 'object', 'array'], 'description': 'The JSON to flatten or unflatten — a JSON string, or the object itself.'}, 'separator': {'type': 'string', 'description': 'Key separator (default: ".")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'result': {}, 'key_count': {'type': 'number'}, 'max_depth': {'type': 'array'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'bytes': {'type': 'number', 'description': 'Number of bytes to format'}, 'standard': {'enum': ['both', 'si', 'iec'], 'type': 'string', 'description': 'Output standard (default: both)'}, 'size_string': {'type': 'string', 'description': 'Size string to parse to bytes (e.g. "1.5 GB", "512 MiB")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'bytes': {'type': 'number'}, 'original': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'A raw JSON string, e.g. \'{"key":"value"}\'. Must already parse as JSON — plain text or truncated JSON is rejected, not repaired.'}, 'indent': {'type': 'number', 'description': 'Indent size (default: 2)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'valid': {'type': 'boolean'}, 'formatted': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': ['string', 'object', 'array'], 'description': 'The array of objects to render — a JSON string, or the array itself.'}, 'columns': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Column names and order (default: all keys from first row)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'rows': {'type': 'number'}, 'table': {'type': 'string'}, 'columns': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['function_call', 'allowed_functions'], 'properties': {'function_call': {'type': 'object', 'description': 'The function call object from LLM (e.g. { "name": "get_weather", "arguments": {"city":"Paris"} })', 'additionalProperties': True}, 'allowed_functions': {'type': 'array', 'items': {'type': 'object', 'properties': {'name': {'type': 'string'}, 'optional_args': {'type': 'array', 'items': {'type': 'string'}}, 'required_args': {'type': 'array', 'items': {'type': 'string'}}}}, 'description': 'List of allowed function definitions'}}}
Schéma de sortie
{'type': 'object', 'properties': {'valid': {'type': 'boolean'}, 'errors': {'type': 'array'}, 'error_count': {'type': 'number'}, 'function_name': {}, 'provided_args': {}, 'required_args': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'cron': {'type': 'string', 'description': "Cron expression when triggers include 'schedule' (default: '0 6 * * 1' — Mondays 06:00 UTC)."}, 'gate': {'enum': ['eval_contract', 'cli_checks', 'both', 'selector_drift', 'all'], 'type': 'string', 'description': 'Which gate to emit. eval_contract = LLM eval via the action (default). cli_checks = deterministic CLI assertions. selector_drift = an E2E selector-drift gate via @ia-qa/self-healing (boots the app, captures, diffs against the committed baseline, branches on exit code 0/1/2). both = CLI checks + eval. all = CLI checks, then drift, then eval.'}, 'provider': {'enum': ['groq', 'openai', 'anthropic', 'google'], 'type': 'string', 'description': 'LLM provider the contract runs against — decides which repository secret the workflow wires (default: groq).'}, 'triggers': {'type': 'array', 'items': {'enum': ['push', 'pull_request', 'workflow_dispatch', 'schedule'], 'type': 'string'}, 'description': 'Workflow triggers (default: push + pull_request).'}, 'cli_tools': {'type': 'array', 'items': {'type': 'string'}, 'description': 'IA-QA tool names to run as deterministic gates, e.g. ["secret_scan","prompt_injection_scan"]. Tools with no known CI recipe get a --stdin step flagged in notes.'}, 'min_score': {'type': 'number', 'description': 'Override the contract min_score (0-100). Omit to use the value in the contract.'}, 'app_base_url': {'type': 'string', 'description': 'URL the drift gate waits for before capturing (default: http://127.0.0.1:3000). Must match config.baseUrl in .ia-qa/config.json.'}, 'fail_on_fail': {'type': 'boolean', 'description': 'Fail the build on a FAIL/PARTIAL verdict (default: true). Set false to report without gating.'}, 'node_version': {'type': 'string', 'description': 'Node version for the CLI steps (default: "20").'}, 'contract_path': {'type': 'string', 'description': 'Path to the .ia-eval.yaml contract, relative to the repo root (default: evals/smoke.ia-eval.yaml). Only used when the gate includes eval_contract.'}, 'workflow_name': {'type': 'string', 'description': 'Workflow display name (default: "IA-QA Quality Gate").'}, 'app_start_command': {'type': 'string', 'description': 'Command that boots the app for the selector_drift gate, e.g. "npm run start:ci". Cannot be guessed — omitted, the step carries an explicit TODO and the note says so, because a plausible default would silently map nothing.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'gate': {'type': 'string'}, 'path': {'type': 'string'}, 'yaml': {'type': 'string'}, 'notes': {'type': 'array', 'items': {'type': 'string'}}, 'next_steps': {'type': 'array', 'items': {'type': 'string'}}, 'secrets_required': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Request URL (must be http/https)'}, 'body': {'type': 'string', 'description': 'Raw request body string'}, 'method': {'type': 'string', 'description': 'HTTP method (default: GET)'}, 'headers': {'type': 'object', 'description': 'Request headers as key-value object', 'additionalProperties': True}, 'verbose': {'type': 'boolean', 'description': 'Add -v for verbose output (default: false)'}, 'body_json': {'type': 'object', 'description': 'JSON body (auto-adds Content-Type: application/json)', 'additionalProperties': True}, 'follow_redirects': {'type': 'boolean', 'description': 'Follow redirects with -L flag (default: true)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'url': {}, 'curl': {'type': 'string'}, 'method': {}, 'header_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['description'], 'properties': {'task_type': {'enum': ['rag', 'summarization', 'classification', 'safety', 'customer_support', 'code_gen'], 'type': 'string', 'description': 'Optional task type hint to guide evaluator selection.'}, 'description': {'type': 'string', 'description': 'Plain-language description of what the LLM under test should do. Be specific: describe inputs, expected behaviour, and constraints.'}, 'system_prompt': {'type': 'string', 'description': 'Optional system prompt of the LLM under test. Helps generate more accurate test cases.'}, 'scenario_count': {'enum': [3, 5, 8], 'type': 'number', 'description': 'Number of scenarios to generate (default: 5). Covers happy path + edge cases + adversarial.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'yaml': {'type': 'string'}, 'task_type': {'type': 'string'}, 'model_used': {'type': 'string'}, 'scenario_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['message', 'secret'], 'properties': {'secret': {'type': 'string', 'description': 'Secret key'}, 'message': {'type': 'string', 'description': 'Message to sign'}, 'encoding': {'enum': ['hex', 'base64', 'base64url'], 'type': 'string', 'description': 'Output encoding (default: hex)'}, 'algorithm': {'type': 'string', 'description': 'Hash algorithm: sha256 (default), sha512, sha1, md5'}}}
Schéma de sortie
{'type': 'object', 'properties': {'hmac': {}, 'encoding': {}, 'algorithm': {}, 'message_length': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['results'], 'properties': {'results': {'type': 'object', 'description': 'The JSON object returned by run_eval_contract()', 'additionalProperties': True}}}
Schéma de sortie
{'type': 'object', 'properties': {'html': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['type'], 'properties': {'type': {'type': 'string', 'description': 'Schema @type: "WebSite", "FAQPage", "Article", "Person", "Organization", "SoftwareApplication", "HowTo"'}, 'fields': {'type': 'object', 'description': 'Schema fields as key-value pairs (name, url, description, author, datePublished, etc.)', 'additionalProperties': True}, 'faq_items': {'type': 'array', 'items': {'type': 'object', 'properties': {'answer': {'type': 'string'}, 'question': {'type': 'string'}}}, 'description': 'For FAQPage/HowTo: array of { question, answer } objects'}}}
Schéma de sortie
{'type': 'object', 'properties': {'name': {'type': 'string'}, 'schema': {}, 'snippet': {'type': 'string'}, 'acceptedAnswer': {'type': 'object'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'length': {'type': 'number', 'description': 'Password length (4–128, default: 16)'}, 'numbers': {'type': 'boolean', 'description': 'Include digits (default: true)'}, 'symbols': {'type': 'boolean', 'description': 'Include symbols like !@#$ (default: false)'}, 'uppercase': {'type': 'boolean', 'description': 'Include uppercase letters (default: true)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'length': {'type': 'number'}, 'password': {}, 'charset_size': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'String to slugify'}, 'separator': {'type': 'string', 'description': 'Separator character (default: "-")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'slug': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['feature'], 'properties': {'inputs': {'type': 'string', 'description': 'Optional: list of input parameters (one per line, e.g. "email: string [required]", "password: string [required, min 8 chars]", "age: number [18-99]")'}, 'feature': {'type': 'string', 'description': 'Feature or function to test. Be specific: describe inputs, expected behaviour, context. Constraints stated here ("password must be at least 8 characters") are used when the sentence names exactly one field.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'feature': {'type': 'string'}, 'test_cases': {'type': 'array', 'items': {'type': 'object'}}, 'parsedInputs': {'type': 'array', 'items': {'type': 'object'}}, 'gherkinFormat': {'type': 'string'}, 'gherkinScenarioCount': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'count': {'type': 'number', 'description': 'Number of UUIDs to generate (1–100, default: 1)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'count': {'type': 'number'}, 'uuids': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'topic': {'enum': ['start-here', 'llm-unit-testing', 'rag-pipeline', 'prompt-stability', 'prompt-ab-testing', 'embedding-quality', 'eval-framework', 'semantic-testing', 'auto-testing', 'security', 'api-testing', 'ci-cd', 'multimodal', 'llm-data-security', 'agent-observability', 'pro-tips', 'learning-paths', 'golden-dataset', 'selector-drift', 'qa-recipes', 'playbooks'], 'type': 'string', 'description': 'The testing topic to retrieve guidelines for. Omit to get the start-here map and the full list of available topics.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'tip': {'type': 'string'}, 'topic': {}, 'usage': {'type': 'string'}, 'keywords': {'type': 'array'}, 'start_here': {'type': 'object'}, 'available_topics': {'type': 'array'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['response', 'rules'], 'properties': {'rules': {'type': 'array', 'items': {'type': 'object', 'properties': {'type': {'enum': ['must_include', 'must_not_include', 'max_length', 'min_length', 'format', 'regex_match', 'regex_not_match', 'starts_with', 'ends_with', 'word_count_max', 'word_count_min'], 'type': 'string'}, 'label': {'type': 'string', 'description': 'Optional human-readable label'}, 'value': {'type': 'string', 'description': 'Value for the rule (text, number as string, regex, or format name)'}}}, 'description': 'Array of guardrail rules to check'}, 'response': {'type': 'string', 'description': 'The LLM response to test'}}}
Schéma de sortie
{'type': 'object', 'properties': {'pass': {'type': 'boolean'}, 'rule': {}, 'label': {}, 'value': {}, 'detail': {'type': 'string'}, 'failed': {}, 'passed': {}, 'results': {}, 'all_passed': {'type': 'boolean'}, 'total_rules': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['answer', 'context'], 'properties': {'answer': {'type': 'string', 'description': 'The LLM-generated answer to verify'}, 'strict': {'type': 'boolean', 'description': 'If true, every sentence in the answer must be supported (default: false)'}, 'context': {'type': 'string', 'description': 'The source/reference text that should ground the answer'}}}
Schéma de sortie
{'type': 'object', 'properties': {'detail': {'type': 'string'}, 'message': {'type': 'string'}, 'numbers': {}, 'overlap': {'type': 'number'}, 'verdict': {'type': 'string'}, 'analysis': {}, 'entities': {}, 'grounded': {'type': 'boolean'}, 'sentence': {}, 'total_words': {'type': 'number'}, 'matched_words': {'type': 'number'}, 'contradictions': {}, 'grounded_count': {'type': 'number'}, 'unbound_claims': {}, 'grounding_score': {}, 'total_sentences': {'type': 'number'}, 'ungrounded_count': {'type': 'number'}, 'unsupported_claims': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text to hash'}, 'algorithm': {'type': 'string', 'description': 'Hash algorithm: sha256 (default), sha512, sha1, md5'}}}
Schéma de sortie
{'type': 'object', 'properties': {'hash': {}, 'algorithm': {}, 'input_length': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'HTML string to convert'}, 'strip_links': {'type': 'boolean', 'description': 'Strip link URLs, keep text only (default: false)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'markdown': {}, 'markdown_length': {'type': 'number'}, 'original_length': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'number', 'description': 'HTTP status code (e.g. 200, 404, 429, 503)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'code': {}, 'desc': {'type': 'string'}, 'name': {'type': 'string'}, 'class': {}, 'cacheable': {}, 'registered': {'type': 'boolean'}, 'description': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'_meta': {'type': 'object', 'properties': {'agent': {'type': 'string'}, 'model': {'type': 'string'}, 'version': {'type': 'string'}}, 'description': 'Optional self-identification. Keys: agent (string), model (string), version (string).'}}}
Schéma de sortie
{'type': 'object', 'properties': {'note': {'type': 'string'}, 'session': {'type': 'object'}, 'meta_override': {'type': 'object'}, 'effective_agent': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['api_key', 'model'], 'properties': {'issue': {'type': 'object', 'description': 'Pre-fetched issue object from fetch_jira_issue, OR a mock object with fields: key, summary, description (plain text or Markdown), status, issue_type, priority, labels, comments. Use this for offline/CI testing without Jira credentials.', 'additionalProperties': True}, 'model': {'type': 'string', 'description': 'LLM model to use, e.g. "gpt-4o-mini", "claude-3-5-haiku-20241022", "gemini-2.0-flash".'}, 'api_key': {'type': 'string', 'description': 'Your LLM provider API key (OpenAI sk-, Anthropic sk-ant-, Google AIzaSy-, etc.).'}, 'issue_key': {'type': 'string', 'description': 'Jira issue key to fetch automatically, e.g. "PROJ-123". Required if issue is not provided.'}, 'jira_email': {'type': 'string', 'description': 'Atlassian account email. Required for auto-fetch mode.'}, 'jira_token': {'type': 'string', 'description': 'Atlassian API token. Required for auto-fetch mode.'}, 'max_tokens': {'type': 'integer', 'default': 8192, 'description': 'Maximum tokens for the LLM response. Default: 8192. Increase for large tickets with many ACs; decrease to reduce cost on simple tickets.'}, 'jira_base_url': {'type': 'string', 'description': 'Atlassian base URL. Required for auto-fetch mode.'}, 'confluence_pages': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'description': 'Optional array of pre-fetched Confluence page objects from fetch_confluence_page, used as documentation context.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'summary': {'type': 'string'}, 'issue_key': {'type': 'string'}, 'issue_url': {'type': 'string'}, 'latency_ms': {'type': 'number'}, 'model_used': {'type': 'string'}, 'test_suite': {'type': 'object'}, 'tokens_used': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['before', 'after'], 'properties': {'after': {'type': ['string', 'object', 'array'], 'description': 'The modified JSON (after) — a JSON string, or the value itself.'}, 'before': {'type': ['string', 'object', 'array'], 'description': 'The original JSON (before) — a JSON string, or the value itself.'}, 'max_depth': {'type': 'number', 'description': 'Max nesting depth to recurse (default: 10)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'added': {'type': 'boolean'}, 'changes': {'type': 'array'}, 'removed': {'type': 'boolean'}, 'modified': {'type': 'boolean'}, 'identical': {'type': 'boolean'}, 'total_changes': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': ['string', 'object', 'array'], 'description': 'The sample JSON value to infer the schema from — a JSON string, or the value itself.'}, 'required_all': {'type': 'boolean', 'description': 'Mark all detected object properties as required (default: true)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'type': {'type': 'string'}, 'items': {'type': 'object'}, 'format': {}, 'schema': {'type': 'object'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['value', 'schema'], 'properties': {'value': {'type': ['string', 'object', 'array'], 'description': 'The JSON value to validate — a JSON string, or the value itself.'}, 'schema': {'type': ['string', 'object', 'array'], 'description': 'The JSON Schema — a JSON string, or the schema object itself.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'valid': {'type': 'boolean'}, 'errors': {'type': 'array'}, 'error_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': ['string', 'object', 'array'], 'description': 'The array of objects to convert — a JSON string, or the array itself.'}, 'headers': {'type': 'boolean', 'description': 'Include header row (default: true)'}, 'delimiter': {'type': 'string', 'description': 'Column delimiter (default: ",")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'csv': {'type': 'string'}, 'rows': {'type': 'number'}, 'columns': {'type': 'number'}, 'column_names': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': ['string', 'object', 'array'], 'description': 'The JSON to convert to YAML — a JSON string, or the value itself.'}, 'indent': {'type': 'number', 'description': 'Indentation size in spaces (default: 2)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'yaml': {}, 'lines': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['endpoints'], 'properties': {'endpoints': {'type': ['string', 'array'], 'items': {'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Full URL to test'}, 'body': {'type': 'object', 'description': 'Request body for POST', 'additionalProperties': True}, 'label': {'type': 'string', 'description': 'Optional label for this endpoint'}, 'method': {'enum': ['GET', 'POST'], 'type': 'string', 'description': 'HTTP method (default: GET)'}, 'headers': {'type': 'object', 'description': 'Custom headers', 'additionalProperties': True}}}, 'description': 'Endpoints to benchmark. Accepts a single URL string, an array of URL strings, or an array of {url, method?, body?, headers?, label?} objects.'}, 'iterations': {'type': 'number', 'description': 'Number of iterations per endpoint (default: 3, max: 10)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'results': {'type': 'array', 'items': {'type': 'object'}}, 'iterations': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'a': {'type': 'string', 'description': 'First string (single-pair mode)'}, 'b': {'type': 'string', 'description': 'Second string (single-pair mode)'}, 'batch': {'type': 'array', 'items': {'type': 'object', 'properties': {'a': {'type': 'string'}, 'b': {'type': 'string'}}}, 'description': 'Batch of {a,b} pairs (max 50)'}, 'case_insensitive': {'type': 'boolean', 'description': 'Ignore case differences (default: false)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'a': {}, 'b': {}, 'mode': {'type': 'string'}, 'count': {'type': 'number'}, 'results': {}, 'distance': {}, 'similarity': {'type': 'string'}, 'operations_needed': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['message'], 'properties': {'strict': {'type': 'boolean', 'description': 'Enforce strict rules: max 72-char subject, imperative mood check (default: false)'}, 'message': {'type': 'string', 'description': 'Git commit message to validate'}}}
Schéma de sortie
{'type': 'object', 'properties': {'type': {}, 'scope': {}, 'score': {'type': 'number'}, 'valid': {'type': 'boolean'}, 'checks': {}, 'subject': {}, 'has_body': {'type': 'boolean'}, 'is_breaking_change': {'type': 'boolean'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'provider': {'type': 'string', 'description': 'Filter by provider name (case-insensitive). E.g. "Groq", "HuggingFace", "OpenAI", "Anthropic", "Google", "DeepSeek", "xAI", "Ollama". Omit for full catalog.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'total': {'type': 'number'}, 'filter': {}, 'models': {}, 'providers': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'dir': {'type': 'string', 'description': 'Directory to scan (defaults to server CWD)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'dir': {'type': 'string'}, 'count': {'type': 'number'}, 'files': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'mode': {'type': 'string', 'description': 'cloud (API models) or local (Ollama/self-hosted). Default: cloud'}, 'top_n': {'type': 'number', 'description': 'Number of recommendations to return (default: 5)'}, 'vram_gb': {'type': 'number', 'description': 'GPU VRAM in GB (only for mode=local). Default: 16'}, 'features': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Required features: vision, function_calling, json_mode, streaming, reasoning'}, 'use_case': {'type': 'string', 'description': 'Primary use case: chatbot | code | rag | summarization | classification | reasoning | agents | multilingual'}, 'max_budget': {'type': 'number', 'description': 'Maximum monthly budget in USD (based on tokens_per_day)'}, 'quantization': {'type': 'string', 'description': 'Quantization (only for mode=local): Q4_K_M | Q8_0 | FP16. Default: Q4_K_M'}, 'tokens_per_day': {'type': 'number', 'description': 'Estimated daily token volume (default: 100000)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'mode': {'type': 'string'}, 'score': {'type': 'number'}, 'results': {'type': 'array'}, 'vram_gb': {}, 'use_case': {}, 'quantization': {}, 'tokens_per_day': {}, 'total_matching': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['output', 'expected_format'], 'properties': {'output': {'type': 'string', 'description': 'The LLM output to validate'}, 'regex_pattern': {'type': 'string', 'description': 'Custom regex pattern (only when expected_format is "regex")'}, 'expected_format': {'enum': ['json', 'markdown_heading', 'code_block', 'bullet_list', 'numbered_list', 'table', 'yaml', 'xml', 'regex'], 'type': 'string', 'description': 'Expected format'}}}
Schéma de sortie
{'type': 'object', 'properties': {'valid': {'type': 'boolean'}, 'checks': {}, 'failed': {}, 'passed': {}, 'total_checks': {'type': 'number'}, 'expected_format': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['prompt'], 'properties': {'model': {'type': 'string', 'description': 'Model ID (default: "openai/gpt-oss-20b"). Server-keyed whitelist only — Groq: openai/gpt-oss-20b, openai/gpt-oss-120b, qwen/qwen3.6-27b; HuggingFace: Qwen/Qwen3-32B, meta-llama/Llama-3.3-70B-Instruct, deepseek-ai/DeepSeek-R1, google/gemma-3-27b-it, and more. Other ids from list_llm_models are BYOK-only and will be rejected.'}, 'prompt': {'type': 'string', 'description': 'The user prompt / instruction to send to the model'}, 'system': {'type': 'string', 'description': 'Optional system prompt to set context or persona'}, 'max_tokens': {'type': 'number', 'description': 'Maximum tokens to generate (default: 2048, max: 4096)'}, 'temperature': {'type': 'number', 'description': 'Sampling temperature 0.0–1.5 (default: 0.7)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'model': {}, 'usage': {}, 'content': {}, 'provider': {}, 'latency_ms': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['output', 'schema'], 'properties': {'output': {'type': 'string', 'description': 'The LLM JSON output (raw string, will be parsed)'}, 'schema': {'type': 'object', 'description': 'JSON Schema (draft-07 subset) to validate against', 'additionalProperties': True}}}
Schéma de sortie
{'type': 'object', 'properties': {'valid': {'type': 'boolean'}, 'errors': {'type': 'array'}, 'error_count': {'type': 'number'}, 'parse_error': {}, 'parsed_type': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['output'], 'properties': {'output': {'type': 'string', 'description': 'The LLM output text to validate'}, 'max_length': {'type': 'number', 'description': 'Maximum character length for the output'}, 'min_length': {'type': 'number', 'description': 'Minimum character length for the output'}, 'check_safety': {'type': 'boolean', 'description': 'Check for PII patterns (emails, phones, SSN), profanity signals, and prompt leakage'}, 'must_include': {'type': 'string', 'description': 'Comma-separated strings that MUST appear in the output'}, 'expected_format': {'enum': ['json', 'markdown', 'code', 'plain', 'any'], 'type': 'string', 'description': 'Expected output format'}, 'must_not_include': {'type': 'string', 'description': 'Comma-separated strings that must NOT appear (e.g. "TODO, FIXME, undefined, NaN")'}, 'check_json_schema': {'type': 'string', 'description': 'If expected_format is JSON, provide required keys as comma-separated list to validate the structure'}, 'expected_language': {'type': 'string', 'description': 'Expected language of the output (en, fr, es, de…). Checks for common words.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'total': {'type': 'number'}, 'checks': {}, 'failed': {}, 'passed': {}, 'verdict': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'paragraphs': {'type': 'number', 'description': 'Number of paragraphs to generate (1–10, default: 1)'}, 'words_per_sentence': {'type': 'number', 'description': 'Approximate words per sentence (3–30, default: 10)'}, 'sentences_per_paragraph': {'type': 'number', 'description': 'Sentences per paragraph (1–20, default: 5)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'paragraphs': {}, 'paragraph_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['tool_definition'], 'properties': {'tool_definition': {'type': 'object', 'description': 'MCP tool definition object with name, description, inputSchema', 'additionalProperties': True}}}
Schéma de sortie
{'type': 'object', 'properties': {'grade': {}, 'errors': {}, 'warnings': {}, 'error_count': {'type': 'number'}, 'quality_score': {}, 'warning_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Base URL of the MCP server (e.g. https://www.ia-qa.com or http://localhost:3001)'}, 'test_tool_name': {'type': 'string', 'description': 'Specific tool name to use in the JSON-RPC test call (defaults to the first tool in the manifest)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'url': {'type': 'string'}, 'score': {'type': 'number'}, 'checks': {'type': 'object'}, 'latency': {'type': 'object'}, 'verdict': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['manifest'], 'properties': {'strict': {'type': 'boolean', 'description': 'Enable strict mode: also check for optional best practices (examples, default values, descriptions > 20 chars)'}, 'manifest': {'type': 'string', 'description': 'MCP server manifest JSON (the response from GET /mcp or tools/list)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'stats': {'type': 'object'}, 'total': {'type': 'number'}, 'checks': {'type': 'array'}, 'failed': {'type': 'number'}, 'passed': {'type': 'number'}, 'verdict': {'type': 'string'}, 'toolIssues': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['base', 'override'], 'properties': {'base': {'type': ['string', 'object', 'array'], 'description': 'The base JSON object (merged into) — a JSON string, or the object itself.'}, 'override': {'type': ['string', 'object', 'array'], 'description': 'The override JSON object (takes precedence) — a JSON string, or the object itself.'}, 'array_strategy': {'enum': ['replace', 'concat', 'unique'], 'type': 'string', 'description': 'Array merge strategy: replace (default), concat, or unique'}}}
Schéma de sortie
{'type': 'object', 'properties': {'merged': {}, 'new_keys': {'type': 'array'}, 'total_keys': {'type': 'number'}, 'overridden_keys': {'type': 'array'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['base', 'variants'], 'properties': {'base': {'type': 'object', 'properties': {'output': {'type': 'string', 'description': 'Required — the answer your system produced for the original question.'}, 'question': {'type': 'string', 'description': 'Optional — the original question, echoed back in the output for readability.'}}, 'description': 'The reference run: the original question and the answer your system produced for it.'}, 'mode': {'enum': ['tfidf', 'embeddings'], 'type': 'string', 'description': 'tfidf (default): free, lexical, deterministic — but a genuine paraphrase rarely reaches 0.80, so gate on case/typo and treat paraphrase as a trend. embeddings: OpenAI text-embedding-3-small, true semantic similarity, requires api_key. translation requires this mode.'}, 'api_key': {'type': 'string', 'description': 'OpenAI API key — required only when mode is embeddings.'}, 'variants': {'type': 'array', 'items': {'type': 'object', 'required': ['relation', 'output'], 'properties': {'id': {'type': 'string', 'description': 'Optional identifier (default: variant_<n>).'}, 'output': {'type': 'string', 'description': 'Required — the answer your system produced for the transformed question.'}, 'question': {'type': 'string', 'description': 'Optional — the transformed question, echoed back for readability.'}, 'relation': {'enum': ['case', 'typo', 'paraphrase', 'reorder', 'translation', 'specialization'], 'type': 'string', 'description': 'Transformation applied to the QUESTION. Decides the metric and the default threshold.'}}}, 'maxItems': 20, 'description': 'Answers produced for transformed versions of the same question, each tagged with the relation that was applied.'}, 'thresholds': {'type': 'object', 'properties': {'case': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'typo': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'reorder': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'paraphrase': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'translation': {'type': 'number', 'maximum': 1, 'minimum': 0}, 'specialization': {'type': 'number', 'maximum': 1, 'minimum': 0}}, 'description': 'Per-relation threshold overrides. Calibrate on your own corpus before gating — the defaults are starting points, not measurements.'}, 'require_all': {'type': 'boolean', 'description': 'If true (default), every gated variant must pass. KEEP THE DEFAULT for any run you gate on. Setting it false is not a tolerance dial but an off switch: relations have asymmetric pass rates (a typo variant usually scores ~1.0 because the answer really is identical), so one trivial row is enough to hold the whole run at PASS while a paraphrase fails. When that happens the result carries an explicit warning naming the failed rows.'}, 'baseline_guard': {'type': 'object', 'properties': {'min_length': {'type': 'number', 'description': 'Minimum base answer length in chars (default 40).'}, 'must_not_match': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Refusal patterns, matched case-insensitively in the FIRST 200 CHARS of the base answer (refusals lead; matching anywhere would flag a long correct answer that merely mentions one). Replaces the FR+EN default list, never merges — pass [] to disable.'}}, 'description': 'Correctness floor applied to the BASE answer before anything is scored. Failing it returns INVALID, not FAIL.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'mode': {'type': 'string'}, 'summary': {'type': 'object'}, 'verdict': {'type': 'string'}, 'weakest': {'type': 'object'}, 'baseline': {'type': 'object'}, 'variants': {'type': 'array', 'items': {'type': 'object'}}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}, 'thresholds': {'type': 'object'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['code'], 'properties': {'code': {'type': 'string', 'description': 'JavaScript code to minify (max 50kb)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'minified': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['schema'], 'properties': {'seed': {'type': 'string', 'description': 'Optional seed string for deterministic output (uses first char codes)'}, 'count': {'type': 'number', 'description': 'Number of mock objects to generate (default: 1, max: 20)'}, 'schema': {'type': ['string', 'object', 'array'], 'description': 'The JSON Schema to generate from — a JSON string, or the schema object itself.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'count': {'type': 'number'}, 'results': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['model'], 'properties': {'model': {'type': 'string', 'description': 'Model name (e.g. "gpt-4o", "claude-3.5-sonnet", "gemini-2.5-pro")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'model': {}, 'pricing_per_1k': {'type': 'object'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'fid': {'type': 'object', 'description': '[pipeline] {real_images, generated_images} for FID.', 'additionalProperties': True}, 'vqa': {'type': 'object', 'description': '[pipeline] VQA config object (same inputs as vqa_accuracy).', 'additionalProperties': True}, 'clip': {'type': 'object', 'description': '[pipeline] {image_url, text} for CLIP.', 'additionalProperties': True}, 'text': {'type': 'string', 'description': '[clip_score only] Text description to compare against the image.'}, 'model': {'type': 'string', 'description': '[vqa_accuracy] VLM model ID (default: gpt-4o).'}, 'score': {'type': 'number', 'description': '[guide only] Optional score value to interpret.'}, 'action': {'enum': ['guide', 'clip_score', 'fid_score', 'vqa_accuracy', 'pipeline'], 'type': 'string', 'description': 'guide (default) = reference thresholds/interpretation. clip_score/fid_score/vqa_accuracy = compute that metric. pipeline = run all three.'}, 'metric': {'enum': ['clip_score', 'fid', 'vqa_accuracy', 'all'], 'type': 'string', 'description': '[guide only] Metric to explain.'}, 'api_key': {'type': 'string', 'description': '[vqa_accuracy] Your API key for the provider (BYOK).'}, 'image_url': {'type': 'string', 'description': '[clip_score/vqa_accuracy] Public URL of the image.'}, 'test_cases': {'type': 'array', 'items': {'type': 'object', 'properties': {'question': {'type': 'string'}, 'accepted_answers': {'type': 'array', 'items': {'type': 'string'}}}}, 'description': '[vqa_accuracy] Array of {question, accepted_answers} objects.'}, 'real_images': {'type': 'array', 'items': {'type': 'string'}, 'description': '[fid_score] Array of real image URLs.'}, 'image_base64': {'type': 'string', 'description': '[clip_score/vqa_accuracy] Base64-encoded image data.'}, 'system_prompt': {'type': 'string', 'description': '[vqa_accuracy] Optional system prompt.'}, 'image_mime_type': {'type': 'string', 'description': '[clip_score/vqa_accuracy] MIME type for base64 image.'}, 'generated_images': {'type': 'array', 'items': {'type': 'string'}, 'description': '[fid_score] Array of generated image URLs.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'errors': {}, 'metrics': {}, 'results': {}, 'web_tool': {'type': 'string'}, 'best_practices': {'type': 'array'}, 'comparison_table': {'type': 'array'}, 'score_interpretation': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['needle', 'question'], 'properties': {'needle': {'type': 'string', 'description': 'The fact to hide (e.g. "The secret code is ALPHA-42")'}, 'tokens': {'type': 'integer', 'default': 5000, 'description': 'Target haystack size in tokens (default: 5000, max: 100000)'}, 'position': {'enum': ['start', 'middle', 'end', 'random'], 'type': 'string', 'default': 'middle', 'description': 'Where to insert the needle: "start", "middle", "end", "random" (default: "middle")'}, 'question': {'type': 'string', 'description': 'The question to ask the LLM (e.g. "What is the secret code?")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'needle': {}, 'haystack': {}, 'position': {}, 'question': {}, 'insert_block': {}, 'total_blocks': {'type': 'number'}, 'estimated_tokens': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'batch': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': 'Batch of vectors to normalize (overrides vector)'}, 'vector': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Single vector to normalize'}}}
Schéma de sortie
{'type': 'object', 'properties': {'mode': {'type': 'string'}, 'norm': {'type': 'number'}, 'count': {'type': 'number'}, 'index': {}, 'vector': {}, 'results': {}, 'dimension': {'type': 'number'}, 'norm_after': {'type': 'number'}, 'normalized': {}, 'norm_before': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text to normalize'}, 'trim_file': {'type': 'boolean', 'description': 'Trim leading/trailing blank lines (default: true)'}, 'trim_lines': {'type': 'boolean', 'description': 'Trim trailing whitespace from each line (default: true)'}, 'line_ending': {'type': 'string', 'description': '"lf" (default), "crlf", or "cr"'}, 'tab_to_spaces': {'type': 'number', 'description': 'Convert tabs to N spaces (omit to keep tabs)'}, 'collapse_blanks': {'type': 'boolean', 'description': 'Collapse runs of blank lines down to max_blank_lines (default: true)'}, 'max_blank_lines': {'type': 'number', 'description': 'Blank lines to keep when collapsing, 0-10 (default: 2)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'result': {}, 'line_ending': {}, 'original_length': {'type': 'number'}, 'normalized_length': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Number to convert (e.g., "255", "0xFF", "0b1010", "0o77")'}, 'to_base': {'type': 'number', 'description': 'Target base 2–36 (omit to get all common bases)'}, 'from_base': {'type': 'number', 'description': 'Source base 2–36 (auto-detects prefix if omitted)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'octal': {'type': 'string'}, 'binary': {'type': 'string'}, 'result': {'type': 'string'}, 'decimal': {}, 'to_base': {}, 'from_base': {}, 'hexadecimal': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': ['string', 'object', 'array'], 'description': 'The OpenAPI 3.x spec — a JSON string, a YAML string, or the already-parsed spec object.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'score': {'type': 'number'}, 'stats': {'type': 'object'}, 'errors': {}, 'verdict': {}, 'warnings': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'The prompt text to optimize'}, 'options': {'type': 'object', 'properties': {'fillers': {'type': 'boolean', 'default': True}, 'duplicates': {'type': 'boolean', 'default': True}, 'whitespace': {'type': 'boolean', 'default': True}, 'instructions': {'type': 'boolean', 'default': True}}, 'description': 'Toggle optimization steps (all true by default)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'steps': {}, 'optimized': {}, 'tokens_after': {}, 'tokens_saved': {}, 'percent_saved': {'type': 'string'}, 'tokens_before': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'CSV content to parse'}, 'header': {'type': 'boolean', 'description': 'Treat the first row as headers (default: true)'}, 'delimiter': {'type': 'string', 'description': 'Field delimiter character (default: ",")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'rows': {'type': 'array'}, 'columns': {'type': 'number'}, 'headers': {'type': 'array'}, 'row_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['headers'], 'properties': {'headers': {'type': 'string', 'description': 'Raw HTTP headers (one "Name: Value" per line)'}, 'analyze_security': {'type': 'boolean', 'description': 'Audit for missing security headers (default: true)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'parsed': {'type': 'object'}, 'security': {'type': 'object'}, 'header_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['issue_key', 'jira_base_url', 'jira_email', 'jira_token', 'test_suite'], 'properties': {'issue_key': {'type': 'string', 'description': 'Jira issue key, e.g. "PROJ-123"'}, 'jira_email': {'type': 'string', 'description': 'Atlassian account email'}, 'jira_token': {'type': 'string', 'description': 'Atlassian API token'}, 'test_suite': {'type': 'object', 'description': 'The test_suite object from jira_to_test_suite result', 'additionalProperties': True}, 'jira_base_url': {'type': 'string', 'description': 'Atlassian base URL'}}}
Schéma de sortie
{'type': 'object', 'properties': {'success': {'type': 'boolean'}, 'comment_id': {'type': 'string'}, 'comment_url': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['diff', 'commit_message'], 'properties': {'diff': {'type': 'string', 'description': 'Unified git diff (output of `git diff HEAD`)'}, 'context': {'type': 'string', 'description': 'Optional: PR title or description for richer bug analysis'}, 'commit_message': {'type': 'string', 'description': 'The commit message to lint (e.g. "feat(auth): add OAuth2 login")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'flags': {'type': 'array', 'items': {'type': 'string'}}, 'score': {'type': 'number'}, 'checks': {'type': 'object'}, 'verdict': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'The user input or prompt to scan for injection patterns'}, 'sensitivity': {'enum': ['low', 'medium', 'high'], 'type': 'string', 'description': 'Detection sensitivity (default: medium)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'notes': {}, 'detections': {}, 'risk_level': {}, 'sensitivity': {}, 'input_length': {'type': 'number'}, 'detections_count': {'type': 'number'}, 'quoted_detections': {'type': 'number'}, 'injection_detected': {'type': 'boolean'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['template'], 'properties': {'strict': {'type': 'boolean', 'description': 'Throw error if any variable is not provided (default: false)'}, 'template': {'type': 'string', 'description': 'Prompt template with {{variable}} placeholders'}, 'variables': {'type': 'object', 'description': 'Key-value pairs to fill (e.g. {"name":"Alice","role":"engineer"})', 'additionalProperties': True}}}
Schéma de sortie
{'type': 'object', 'properties': {'result': {}, 'total_vars': {}, 'filled_variables': {}, 'unfilled_variables': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['system_prompt', 'user_prompt'], 'properties': {'max_tokens': {'type': 'number', 'description': 'Max token budget for the test'}, 'temperature': {'type': 'number', 'description': 'Temperature to use'}, 'user_prompt': {'type': 'string', 'description': 'The user prompt to send'}, 'check_safety': {'type': 'boolean', 'description': 'Include safety/PII checks in the rubric'}, 'must_include': {'type': 'string', 'description': 'Required content (comma-separated)'}, 'system_prompt': {'type': 'string', 'description': 'The system prompt under test'}, 'expected_format': {'enum': ['json', 'markdown', 'code', 'plain', 'any'], 'type': 'string', 'description': 'Expected output format'}, 'must_not_include': {'type': 'string', 'description': 'Forbidden content (comma-separated)'}, 'expected_behavior': {'type': 'string', 'description': 'Description of what the LLM should do (free text)'}, 'adversarial_prompts': {'type': 'boolean', 'description': 'Auto-generate adversarial test variants (jailbreak, injection, edge cases)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'rubric': {}, 'categories': {'type': 'array'}, 'total_tests': {'type': 'number'}, 'instructions': {'type': 'string'}, 'test_suite_name': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['query', 'chunks'], 'properties': {'query': {'type': 'string', 'description': 'The user query'}, 'top_k': {'type': 'number', 'description': 'Return top K results (default: all)'}, 'chunks': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Array of text chunks to rank'}}}
Schéma de sortie
{'type': 'object', 'properties': {'rank': {'type': 'number'}, 'index': {}, 'query': {}, 'score': {'type': 'string'}, 'results': {}, 'returned': {'type': 'number'}, 'total_chunks': {'type': 'number'}, 'chunk_preview': {}, 'keyword_overlap': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['tool_name', 'score'], 'properties': {'score': {'type': 'number', 'maximum': 5, 'minimum': 1, 'description': 'Rating from 1 (poor) to 5 (excellent)'}, 'comment': {'type': 'string', 'description': 'Strongly encouraged — explain what you were trying to do and whether the tool got you there. Be specific about what was missing, wrong, or a poor fit. This is the most valuable part of the rating. Up to 2000 chars are stored; go over and the response says so (truncated: true) — send the remainder as a second call rather than assuming it landed.'}, 'tool_name': {'type': 'string', 'description': 'Name of the MCP tool to rate (e.g. "format_json", "shield_analyze")'}}}
Schéma de sortie
{'type': 'object', 'properties': {'ok': {'type': 'boolean'}, 'score': {}, 'comment': {}, 'message': {'type': 'string'}, 'rated_at': {'type': 'string'}, 'tool_name': {}, 'truncated': {'type': 'boolean'}, 'stored_chars': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text to redact PII from'}, 'types': {'type': 'string', 'description': 'Comma-separated types to redact (default: all). Options: email, phone, ssn, credit_card, ip_address, jwt'}, 'marker': {'type': 'string', 'description': 'Custom replacement marker (default: "REDACTED"). Result: [REDACTED_EMAIL]'}}}
Schéma de sortie
{'type': 'object', 'properties': {'clean': {'type': 'boolean'}, 'pii_found': {}, 'replacements': {}, 'redacted_text': {}, 'total_redactions': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['pattern', 'input'], 'properties': {'flags': {'type': 'string', 'description': 'Regex flags: g (global), i (case-insensitive), m (multiline), s (dotAll) — default: ""'}, 'input': {'type': 'string', 'description': 'The string to test against (max 50 KB)'}, 'pattern': {'type': 'string', 'description': 'Regular expression pattern (without delimiters)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'note': {}, 'flags': {}, 'matched': {}, 'matches': {}, 'pattern': {}, 'verdict': {}, 'elapsed_ms': {'type': 'number'}, 'match_count': {'type': 'number'}, 'redos_detected': {'type': 'boolean'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['query', 'passages'], 'properties': {'query': {'type': 'string', 'description': 'The search query or question to rank against'}, 'top_k': {'type': 'integer', 'maximum': 10, 'minimum': 1, 'description': 'k for Precision@k evaluation (default 3)'}, 'api_key': {'type': 'string', 'description': 'Your NVIDIA API key (BYOK), used only when no passage carries a score. Transits RAM for the single call, never stored.'}, 'passages': {'type': 'array', 'items': {'type': 'object', 'required': ['text'], 'properties': {'id': {'type': 'string'}, 'text': {'type': 'string'}, 'score': {'type': 'number', 'description': 'Relevance score from YOUR reranker. Present on every passage → ranking is done from these (offline, no key). Higher = more relevant. Score all passages or none.'}, 'relevant': {'type': 'boolean', 'description': 'Ground truth: is this passage relevant?'}}}, 'description': 'Array of passage objects to rank (min 2, max 20)'}, 'threshold': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Minimum Precision@k to PASS (0-1, default 0.5)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'k': {'type': 'number'}, 'mode': {'type': 'string'}, 'model': {'type': 'string'}, 'ranked': {'type': 'array', 'items': {'type': 'object'}}, 'verdict': {'type': 'string'}, 'threshold': {'type': 'number'}, 'latency_ms': {'type': 'number'}, 'recall_at_k': {'type': 'number'}, 'precision_at_k': {'type': 'number'}, 'total_passages': {'type': 'number'}, 'has_ground_truth': {'type': 'boolean'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['question', 'response'], 'properties': {'question': {'type': 'string', 'description': 'The original question/prompt'}, 'response': {'type': 'string', 'description': 'The LLM response to score'}, 'max_length': {'type': 'number', 'description': 'Maximum character length. Scored as a proportional penalty beyond it.'}, 'expected_keywords': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Keywords a correct answer must contain (case-insensitive). Scored as coverage.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'grade': {}, 'stats': {'type': 'object'}, 'reason': {'type': 'string'}, 'signals': {'type': 'object'}, 'breakdown': {'type': 'object'}, 'max_score': {'type': 'number'}, 'total_score': {}, 'not_measured': {'type': 'array'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'api_keys': {'type': 'object', 'properties': {'hf': {'type': 'string'}, 'groq': {'type': 'string'}, 'google': {'type': 'string'}, 'openai': {'type': 'string'}, 'anthropic': {'type': 'string'}}, 'description': 'API keys to use for LLM generation (all optional — falls back to server env vars)'}, 'overrides': {'type': 'object', 'properties': {'model': {'type': 'string'}, 'provider': {'type': 'string'}, 'temperature': {'type': 'number'}, 'system_prompt': {'type': 'string'}}, 'description': 'Override contract defaults'}, 'contract_path': {'type': 'string', 'description': 'Absolute or relative path to a .ia-eval.yaml file (required unless inline_contract is provided)'}, 'inline_contract': {'type': 'object', 'description': 'Raw contract object (alternative to contract_path). Must contain top-level "metadata" ({name, version, model?, provider?}), "expectations" ({min_score?}), and "scenarios" ([{id, input, ground_truth?}]) — scenarios alone are rejected. Use generate_eval_yaml to scaffold one.', 'additionalProperties': True}}}
Schéma de sortie
{'type': 'object', 'properties': {'summary': {'type': 'object'}, 'metadata': {'type': 'object'}, 'warnings': {}, 'contract_path': {}, 'scenario_results': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['git_diff'], 'properties': {'context': {'type': 'string', 'description': 'Optional PR title or description for richer analysis'}, 'git_diff': {'type': 'string', 'description': 'Unified git diff (output of `git diff HEAD` or copied from GitHub diff view)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'sla': {}, 'high': {}, 'topBugs': {'type': 'array'}, 'critical': {}, 'bugsFound': {'type': 'number'}, 'riskLevel': {}, 'riskScore': {}, 'disclaimer': {'type': 'string'}, 'impactAreas': {'type': 'array'}, 'inputFormat': {'type': 'string'}, 'notAnalysed': {'type': 'array'}, 'riskFactors': {'type': 'array'}, 'changedFiles': {}, 'severityLevel': {}, 'testCasesGenerated': {}, 'mergeRecommendation': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['cases'], 'properties': {'mode': {'enum': ['tfidf', 'embeddings'], 'type': 'string', 'description': 'tfidf (default): fast, free, lexical. embeddings: OpenAI text-embedding-3-small, true semantic similarity, requires api_key.'}, 'cases': {'type': 'array', 'items': {'type': 'object', 'required': ['actual', 'expected'], 'properties': {'id': {'type': 'string', 'description': 'Optional identifier for this case.'}, 'actual': {'type': 'string', 'description': 'The text produced by your LLM/system.'}, 'expected': {'type': 'string', 'description': 'The reference/ground-truth text.'}}}, 'maxItems': 50, 'description': 'Array of (actual, expected) pairs to evaluate.'}, 'api_key': {'type': 'string', 'description': 'OpenAI API key — required only when mode is embeddings.'}, 'thresholds': {'type': 'object', 'properties': {'cosine': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Minimum cosine similarity to pass (default: 0.75).'}, 'rouge_l': {'type': 'number', 'maximum': 1, 'minimum': 0, 'description': 'Minimum ROUGE-L F1 to pass (default: 0.5).'}}, 'description': 'Pass/fail thresholds (defaults: cosine 0.75, rouge_l 0.5).'}, 'require_all': {'type': 'boolean', 'description': 'If true (default), all cases must pass for overall PASS. If false, at least one case passing returns PASS.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'mode': {'type': 'string'}, 'total': {'type': 'number'}, 'failed': {'type': 'number'}, 'passed': {'type': 'number'}, 'results': {'type': 'array', 'items': {'type': 'object'}}, 'verdict': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['test_cases', 'model', 'api_key'], 'properties': {'model': {'enum': ['gpt-4o', 'gpt-4o-mini', 'claude-3-5-sonnet-20241022', 'claude-3-5-haiku-20241022', 'gemini-1.5-flash', 'gemini-2.0-flash'], 'type': 'string', 'description': 'VLM model to use.'}, 'api_key': {'type': 'string', 'description': 'API key for the model provider (OpenAI sk-, Anthropic sk-ant-, or Google AIzaSy...).'}, 'image_url': {'type': 'string', 'description': 'Public URL of the image to evaluate (required unless image_base64 is provided).'}, 'threshold': {'type': 'number', 'description': 'Pass rate threshold for overall verdict (default: 80, 0–100).'}, 'test_cases': {'type': 'array', 'items': {'type': 'object', 'required': ['question'], 'properties': {'id': {'type': 'string', 'description': 'Optional identifier for this case.'}, 'question': {'type': 'string', 'description': 'Question to ask the VLM about the image.'}, 'assertion_type': {'enum': ['contains', 'not_contains', 'json_format', 'min_length', 'max_length', 'semantic_contains'], 'type': 'string', 'description': 'Assertion to run on the VLM response. semantic_contains uses TF-IDF cosine similarity ≥ 0.4.'}, 'assertion_value': {'type': 'string', 'description': 'Expected value for the assertion (not needed for json_format).'}}}, 'maxItems': 10, 'description': 'Array of test cases to run.'}, 'image_base64': {'type': 'string', 'description': 'Base64-encoded image data (required unless image_url is provided).'}, 'system_prompt': {'type': 'string', 'description': 'Optional system prompt sent to the VLM.'}, 'image_mime_type': {'type': 'string', 'description': 'MIME type of the image if using image_base64 (default: image/jpeg).'}}}
Schéma de sortie
{'type': 'object', 'properties': {'model': {'type': 'string'}, 'total': {'type': 'number'}, 'failed': {'type': 'number'}, 'passed': {'type': 'number'}, 'results': {'type': 'array', 'items': {'type': 'object'}}, 'verdict': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['test_cases', 'models', 'api_keys'], 'properties': {'models': {'type': 'array', 'items': {'enum': ['gpt-4o', 'gpt-4o-mini', 'claude-3-5-sonnet-20241022', 'claude-3-5-haiku-20241022', 'gemini-1.5-flash', 'gemini-2.0-flash'], 'type': 'string'}, 'maxItems': 6, 'minItems': 1, 'description': 'Array of model IDs to compare (runs in parallel).'}, 'api_keys': {'type': 'object', 'description': 'Map of model ID → API key. Example: { "gpt-4o": "sk-...", "claude-3-5-sonnet-20241022": "sk-ant-..." }', 'additionalProperties': {'type': 'string'}}, 'image_url': {'type': 'string', 'description': 'Public URL of the image to evaluate (required unless image_base64 is provided).'}, 'threshold': {'type': 'number', 'description': 'Pass rate threshold for overall verdict (default: 80, 0–100).'}, 'test_cases': {'type': 'array', 'items': {'type': 'object', 'required': ['question'], 'properties': {'id': {'type': 'string', 'description': 'Optional identifier for this case.'}, 'question': {'type': 'string', 'description': 'Question to ask the VLM about the image.'}, 'assertion_type': {'enum': ['contains', 'not_contains', 'json_format', 'min_length', 'max_length', 'semantic_contains'], 'type': 'string', 'description': 'Assertion to run on the VLM response.'}, 'assertion_value': {'type': 'string', 'description': 'Expected value for the assertion (not needed for json_format).'}}}, 'maxItems': 10, 'description': 'Array of test cases to run against every model.'}, 'image_base64': {'type': 'string', 'description': 'Base64-encoded image data (required unless image_url is provided).'}, 'system_prompt': {'type': 'string', 'description': 'Optional system prompt sent to every VLM.'}, 'image_mime_type': {'type': 'string', 'description': 'MIME type of the image if using image_base64 (default: image/jpeg).'}}}
Schéma de sortie
{'type': 'object', 'properties': {'suites': {'type': 'array', 'items': {'type': 'object'}}, 'verdict': {'type': 'string'}, 'total_failed': {'type': 'number'}, 'total_passed': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'scenario': {'type': 'string', 'description': 'Scenario id. Omit to list every available scenario with its expected verdict. Ids: no-change, swap-label, add-testid, duplicate-role-name, remove-element, insert-sibling, rename-label, counter-label, move-behind-menu, add-element'}, 'include_html': {'type': 'boolean', 'description': 'Include the generated HTML of the mutated page (default false). Only useful if you want to render or re-capture it yourself; the loop does not need it.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'html': {}, 'page': {}, 'blurb': {}, 'count': {'type': 'number'}, 'title': {}, 'current': {'type': 'object'}, 'teaches': {}, 'baseline': {'type': 'object'}, 'expected': {'type': 'object'}, 'scenario': {}, 'mutations': {'type': 'array'}, 'scenarios': {'type': 'array'}, 'how_to_run_the_loop': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['head_html'], 'properties': {'head_html': {'type': 'string', 'description': 'Raw HTML of the <head> section (or full page HTML) to analyze'}}}
Schéma de sortie
{'type': 'object', 'properties': {'grade': {}, 'score': {}, 'checks': {}, 'passed': {'type': 'number'}, 'max_score': {'type': 'number'}, 'total_checks': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['jql', 'jira_base_url', 'jira_email', 'jira_token'], 'properties': {'jql': {'type': 'string', 'description': 'JQL query string, e.g. "project = PROJ AND status = Open AND assignee = currentUser() ORDER BY priority DESC"'}, 'fields': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Fields per issue. Default: summary, status, assignee, priority, issuetype, labels, created, updated'}, 'jira_email': {'type': 'string', 'description': 'Atlassian account email'}, 'jira_token': {'type': 'string', 'description': 'Atlassian API token'}, 'max_results': {'type': 'number', 'description': 'Max issues to return (default: 10, max: 50)'}, 'jira_base_url': {'type': 'string', 'description': 'Atlassian base URL, e.g. "https://mycompany.atlassian.net"'}}}
Schéma de sortie
{'type': 'object', 'properties': {'jql': {'type': 'string'}, 'total': {'type': 'number'}, 'issues': {'type': 'array', 'items': {'type': 'object'}}, 'returned': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text or code to scan for secrets'}, 'types': {'type': 'string', 'description': 'Comma-separated families to scan (default: all): aws, gcp, azure, openai, anthropic, huggingface, github, gitlab, stripe, slack, twilio, sendgrid, jwt, private_key, connection_string, bearer, basic_auth, generic. Individual pattern names (e.g. "aws_access_key", "github_fine") are also accepted. An unknown value is rejected with an error — a scoped scan never silently returns "clean".'}}}
Schéma de sortie
{'type': 'object', 'properties': {'summary': {'type': 'string'}, 'findings': {}, 'risk_level': {}, 'input_lines': {'type': 'number'}, 'scanned_types': {}, 'secrets_found': {}, 'findings_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'url': {'type': 'string', 'description': 'Optional. Full public URL to check (e.g. https://example.com). Omit it entirely when using `headers`. The server cannot reach localhost/private IPs.'}, 'headers': {'description': 'Optional, and sufficient on its own (no url needed). The response headers to grade, either as an object {"strict-transport-security": "max-age=...", ...} or as the raw header block pasted as a string (e.g. `curl -sI` output). Use this to audit a local server the remote MCP cannot reach.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'fix': {}, 'key': {}, 'url': {}, 'weak': {}, 'grade': {}, 'score': {}, 'value': {}, 'header': {}, 'source': {}, 'weight': {}, 'details': {}, 'missing': {}, 'weak_count': {'type': 'number'}, 'missing_count': {'type': 'number'}, 'overall_grade': {}, 'headers_checked': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['response'], 'properties': {'model': {'type': 'string', 'description': 'LLM model for AI-powered deep analysis (default: "openai/gpt-oss-20b"). Set to "none" to skip LLM check. Supports any model from list_llm_models.'}, 'rules': {'type': 'array', 'items': {'type': 'object', 'properties': {'type': {'type': 'string'}, 'label': {'type': 'string'}, 'value': {'type': 'string'}}}, 'description': 'Optional guardrail rules array (same format as guardrail_test tool)'}, 'prompt': {'type': 'string', 'description': 'Optional original prompt. Used for quality scoring AND scanned for prompt injection in its own right (checks.injection_prompt) — pass it whenever you have it, it is where the attack actually lands.'}, 'source': {'type': 'string', 'description': 'Optional reference/source text for hallucination grounding check'}, 'response': {'type': 'string', 'description': 'The LLM-generated response to analyze'}}}
Schéma de sortie
{'type': 'object', 'properties': {'flags': {}, 'grade': {}, 'score': {}, 'checks': {'type': 'object'}, 'verdict': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'batch': {'type': 'array', 'items': {'type': 'object', 'required': ['reference', 'hypothesis'], 'properties': {'reference': {'type': 'string'}, 'hypothesis': {'type': 'string'}}}, 'description': 'Batch mode: array of {reference, hypothesis} pairs.'}, 'metrics': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Metrics to compute (default: all). Options: "cosine_bow", "cosine_tfidf", "jaccard", "rouge1", "rouge2", "rougeL", "bleu"'}, 'reference': {'type': 'string', 'description': 'Reference / expected text (ground truth)'}, 'threshold': {'type': 'number', 'description': 'Optional pass/fail threshold (0-1). Applies to ROUGE-L F1 score.'}, 'hypothesis': {'type': 'string', 'description': 'Hypothesis / actual text (LLM output)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'f1': {'type': 'number'}, 'mode': {'type': 'string'}, 'count': {'type': 'number'}, 'recall': {'type': 'number'}, 'results': {}, 'precision': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'trim': {'type': 'boolean', 'description': 'Trim whitespace from each line (default: true)'}, 'input': {'type': 'string', 'description': 'Multi-line text to process'}, 'filter': {'type': 'string', 'description': 'For "filter": keep lines containing this substring (case-insensitive)'}, 'operation': {'type': 'string', 'description': '"sort" (default), "sort_desc", "reverse", "deduplicate", "unique_sort", "filter"'}, 'remove_empty': {'type': 'boolean', 'description': 'Remove empty lines (default: true)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'result': {'type': 'string'}, 'removed': {'type': 'number'}, 'line_count': {'type': 'number'}, 'original_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input', 'chunk_tokens'], 'properties': {'input': {'type': 'string', 'description': 'Text to split into chunks'}, 'overlap': {'type': 'number', 'description': 'Token overlap between consecutive chunks (default: 0)'}, 'chunk_tokens': {'type': 'number', 'description': 'Maximum tokens per chunk (10–8000)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'chunks': {'type': 'array'}, 'chunk_count': {'type': 'number'}, 'overlap_tokens': {}, 'tokens_per_chunk': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['host'], 'properties': {'host': {'type': 'string', 'description': 'Hostname to check (e.g. example.com). Do not include https:// prefix.'}, 'port': {'type': 'number', 'description': 'Port number (default: 443)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'host': {'type': 'string'}, 'grade': {'type': 'string'}, 'cipher': {'type': 'object'}, 'issuer': {'type': 'object'}, 'issues': {'type': 'array', 'items': {'type': 'string'}}, 'subject': {'type': 'object'}, 'protocol': {'type': 'string'}, 'valid_to': {'type': 'string'}, 'is_expired': {'type': 'boolean'}, 'valid_from': {'type': 'string'}, 'is_self_signed': {'type': 'boolean'}, 'days_until_expiry': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Markdown text to convert to plain text'}}}
Schéma de sortie
{'type': 'object', 'properties': {'text': {}, 'original_length': {'type': 'number'}, 'stripped_length': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['role'], 'properties': {'role': {'type': 'string', 'description': 'Role/persona (e.g. "Senior QA Engineer", "JSON extraction assistant")'}, 'task': {'type': 'string', 'description': 'Main task or objective'}, 'tone': {'enum': ['professional', 'friendly', 'concise', 'technical', 'educational'], 'type': 'string', 'description': 'Communication tone'}, 'examples': {'type': 'string', 'description': 'Brief examples to include'}, 'language': {'type': 'string', 'description': 'Response language (e.g. "French")'}, 'constraints': {'type': 'array', 'items': {'type': 'string'}, 'description': 'Rules and constraints to follow'}, 'output_format': {'type': 'string', 'description': 'Expected output format description'}}}
Schéma de sortie
{'type': 'object', 'properties': {'sections': {'type': 'object'}, 'system_prompt': {}, 'token_estimate': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['skill_md'], 'properties': {'model': {'type': 'string', 'description': 'LLM model ID to use for both scenario generation and testing (e.g. gpt-4o-mini, claude-3-5-haiku-20241022). Defaults to openai/gpt-oss-20b (Groq, server key).'}, 'api_key': {'type': 'string', 'description': 'API key for the chosen model provider. Not required when using the default Groq model.'}, 'skill_md': {'type': 'string', 'description': 'Full content of the SKILL.md file to test. Must include a name, a "Use when:" trigger description, and at least one step.'}, 'scenario_count': {'enum': [4, 6, 8, 10], 'type': 'number', 'description': 'Number of test scenarios to generate: half trigger-positive, half trigger-negative. Default: 6.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'score': {'type': 'number'}, 'verdict': {'type': 'string'}, 'scenarios': {'type': 'array', 'items': {'type': 'object'}}, 'step_adherence': {'type': 'number'}, 'trigger_accuracy': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'The text to analyse'}}}
Schéma de sortie
{'type': 'object', 'properties': {'chars': {}, 'lines': {}, 'words': {}, 'sentences': {}, 'paragraphs': {}, 'chars_no_space': {}, 'reading_time_minutes': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'input': {'description': 'Unix timestamp (number, seconds or ms) or ISO date string. Omit to get the current time.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'iso': {'type': 'string'}, 'utc': {'type': 'string'}, 'date': {'type': 'string'}, 'time': {'type': 'string'}, 'unix_s': {'type': 'number'}, 'unix_ms': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['model'], 'properties': {'model': {'type': 'string', 'description': 'Model name (e.g. gpt-4o, claude-3.5-sonnet, gemini-2.0-flash)'}, 'context': {'type': 'string', 'description': 'Actual context text (will estimate tokens)'}, 'user_input': {'type': 'string', 'description': 'Actual user input text (will estimate tokens)'}, 'system_prompt': {'type': 'string', 'description': 'Actual system prompt text (will estimate tokens)'}, 'context_tokens': {'type': 'number', 'description': 'Token count for RAG context / documents'}, 'user_input_tokens': {'type': 'number', 'description': 'Token count for user message'}, 'system_prompt_tokens': {'type': 'number', 'description': 'Token count for system prompt'}, 'expected_output_tokens': {'type': 'number', 'description': 'Expected max output tokens'}}}
Schéma de sortie
{'type': 'object', 'properties': {'model': {}, 'warnings': {}, 'breakdown': {'type': 'object'}, 'context_window': {}, 'fits_in_window': {}, 'remaining_tokens': {}, 'utilization_percent': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['text'], 'properties': {'text': {'type': 'string', 'description': 'Text to scan'}, 'categories': {'type': 'array', 'items': {'enum': ['profanity', 'hate_speech', 'violence', 'sexual', 'self_harm', 'bias'], 'type': 'string'}, 'description': 'Categories to check (default: all)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'method': {'type': 'string'}, 'results': {}, 'text_length': {'type': 'number'}, 'overall_risk': {}, 'categories_checked': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input', 'operation'], 'properties': {'n': {'type': 'number', 'description': 'For first_n / last_n: number of items'}, 'path': {'type': 'string', 'description': 'Optional dot-notation path to the array within the JSON object (e.g. "data.items")'}, 'field': {'type': 'string', 'description': 'Field to operate on (for sort_by, group_by, count_by, uniq_by, filter)'}, 'input': {'type': ['string', 'object', 'array'], 'description': 'The JSON containing an array (or an object with an array at `path`) — a JSON string, or the value itself.'}, 'fields': {'type': 'string', 'description': 'Comma-separated field list for "pluck" (e.g. "id,name,email")'}, 'filter_op': {'type': 'string', 'description': 'For "filter": "==" | "!=" | ">" | ">=" | "<" | "<=" | "contains" | "exists" | "!exists"'}, 'operation': {'type': 'string', 'description': 'Operation: "pluck", "filter", "sort_by", "group_by", "count_by", "uniq_by", "reverse", "first_n", "last_n", "flatten"'}, 'sort_order': {'type': 'string', 'description': 'For sort_by: "asc" (default) or "desc"'}, 'filter_value': {'type': 'string', 'description': 'For "filter": value to compare against'}}}
Schéma de sortie
{'type': 'object', 'properties': {'count': {'type': 'number'}, 'field': {}, 'order': {}, 'total': {'type': 'number'}, 'fields': {}, 'result': {}, 'removed': {'type': 'number'}, 'operation': {'type': 'string'}, 'group_count': {'type': 'number'}, 'unique_values': {'type': 'number'}, 'removed_duplicates': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input', 'max_tokens'], 'properties': {'input': {'type': 'string', 'description': 'Text to truncate'}, 'from_end': {'type': 'boolean', 'description': 'Keep the end of the text instead of the start (default: false)'}, 'max_tokens': {'type': 'number', 'description': 'Maximum number of tokens to keep'}}}
Schéma de sortie
{'type': 'object', 'properties': {'text': {}, 'truncated': {'type': 'boolean'}, 'tokens_estimate': {}, 'original_tokens_estimate': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'HTML-encoded string to unescape'}}}
Schéma de sortie
{'type': 'object', 'properties': {'unescaped': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'URL-encoded string to decode'}}}
Schéma de sortie
{'type': 'object', 'properties': {'decoded': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'mode': {'type': 'string', 'description': '"component" (default) or "full" for encodeURI behavior'}, 'input': {'type': 'string', 'description': 'String to URL-encode'}}}
Schéma de sortie
{'type': 'object', 'properties': {'encoded': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['trace', 'assertions'], 'properties': {'trace': {'oneOf': [{'type': 'string'}, {'type': 'object', 'additionalProperties': True}, {'type': 'array', 'items': {}}], 'description': 'Agent execution trace as JSON (OpenAI messages array, LangChain run tree) or plain text log (Thought/Action/Observation format).'}, 'format': {'enum': ['auto', 'openai', 'langchain'], 'type': 'string', 'description': 'Trace format. auto (default) detects automatically.'}, 'assertions': {'type': 'array', 'items': {'type': 'object', 'required': ['type'], 'properties': {'id': {'type': 'string', 'description': 'Optional assertion identifier.'}, 'max': {'type': 'number', 'description': '[max_calls] Maximum number of allowed calls.'}, 'min': {'type': 'number', 'description': '[min_calls] Minimum number of required calls.'}, 'tool': {'type': 'string', 'description': 'Tool name to check (for must_call, must_not_call, max_calls, min_calls).'}, 'type': {'enum': ['order', 'must_call', 'must_not_call', 'max_calls', 'min_calls', 'no_error', 'recovery'], 'type': 'string', 'description': 'Assertion type.'}, 'after': {'type': 'string', 'description': '[order] Tool that must be called after.'}, 'before': {'type': 'string', 'description': '[order] Tool that must be called first.'}}}, 'maxItems': 30, 'description': 'List of assertions to validate against the trace.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'steps': {'type': 'array', 'items': {'type': 'object'}}, 'results': {'type': 'array', 'items': {'type': 'object'}}, 'summary': {'type': 'object', 'additionalProperties': True}, 'verdict': {'type': 'string'}, 'warnings': {'type': 'array', 'items': {'type': 'string'}}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['email'], 'properties': {'email': {'type': 'string', 'description': 'Email address to validate'}}}
Schéma de sortie
{'type': 'object', 'properties': {'email': {}, 'valid': {'type': 'boolean'}, 'reason': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['response'], 'properties': {'response': {'type': 'string', 'description': 'The MCP tool result as a JSON string to validate'}, 'min_items': {'type': 'number', 'description': 'If response is an array, minimum number of items expected'}, 'expected_type': {'enum': ['object', 'array', 'string', 'number'], 'type': 'string', 'description': 'Expected top-level type: "object", "array", "string", "number"'}, 'required_keys': {'type': 'string', 'description': 'Comma-separated list of keys that MUST exist in the response (dot-notation for nested: "data.id, data.name")'}, 'actual_latency': {'type': 'number', 'description': 'Actual measured latency in ms (from the call)'}, 'forbidden_keys': {'type': 'string', 'description': 'Comma-separated list of keys that MUST NOT exist (e.g. "password, secret, token")'}, 'max_size_bytes': {'type': 'number', 'description': 'Maximum acceptable response size in bytes'}, 'max_response_ms': {'type': 'number', 'description': 'Maximum acceptable latency in ms (will be compared if provided)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'total': {'type': 'number'}, 'checks': {}, 'failed': {'type': 'number'}, 'passed': {'type': 'number'}, 'verdict': {'type': 'string'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'URL to validate and parse'}}}
Schéma de sortie
{'type': 'object', 'properties': {'full': {}, 'hash': {}, 'port': {}, 'valid': {'type': 'boolean'}, 'origin': {}, 'search': {}, 'hostname': {}, 'pathname': {}, 'protocol': {}, 'query_params': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['vector'], 'properties': {'bits': {'type': 'number', 'description': 'Quantization bits: 8 (int8, default) or 4 (int4)'}, 'vector': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Float32 vector to quantize'}}}
Schéma de sortie
{'type': 'object', 'properties': {'mse': {'type': 'number'}, 'bits': {}, 'offset': {'type': 'number'}, 'dimension': {'type': 'number'}, 'quantized': {}, 'scale_factor': {'type': 'number'}, 'compression_ratio': {'type': 'string'}, 'storage_bytes_float32': {}, 'storage_bytes_quantized': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['vector_a', 'vector_b'], 'properties': {'metric': {'enum': ['cosine', 'dot_product', 'euclidean', 'manhattan', 'all'], 'type': 'string', 'description': 'Distance metric (default: all)'}, 'vector_a': {'type': 'array', 'items': {'type': 'number'}, 'description': 'First vector as array of floats'}, 'vector_b': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Second vector as array of floats'}}}
Schéma de sortie
{'type': 'object', 'properties': {'norm_a': {}, 'norm_b': {}, 'dimension': {}, 'dot_product': {}, 'interpretation': {}, 'cosine_distance': {}, 'cosine_similarity': {}, 'euclidean_distance': {}, 'manhattan_distance': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'anyOf': [{'required': ['vector']}, {'required': ['matrix']}], 'properties': {'top_k': {'type': 'number', 'description': 'Return indices of top K absolute values (default: 5)'}, 'matrix': {'type': 'array', 'items': {'type': 'array', 'items': {'type': 'number'}}, 'description': 'Matrix of vectors (overrides vector). Returns per-vector + matrix-level stats. Required unless `vector` is given.'}, 'vector': {'type': 'array', 'items': {'type': 'number'}, 'description': 'Single vector to analyze. Required unless `matrix` is given.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'max': {'type': 'number'}, 'min': {'type': 'number'}, 'std': {'type': 'number'}, 'mean': {'type': 'number'}, 'l2_norm': {'type': 'number'}, 'sparsity': {'type': 'number'}, 'dimension': {}, 'per_vector': {}, 'matrix_shape': {'type': 'array'}, 'matrix_stats': {'type': 'object'}, 'top_k_indices': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'properties': {'base_url': {'type': 'string', 'description': 'Optional public base URL. Default: https://www.ia-qa.com/mcp/webhook (the apex ia-qa.com answers 301 and a redirected POST loses its body, so an apex base_url is normalized to www)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'id': {}, 'url': {'type': 'string'}, 'expires_at': {'type': 'string'}, 'request_count': {'type': 'number'}, 'retention_minutes': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['id'], 'properties': {'id': {'type': 'string', 'description': 'Webhook id returned by webhook_endpoint_create'}, 'limit': {'type': 'number', 'description': 'Maximum number of requests to return (1-100, default: 20)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'id': {'type': 'string'}, 'requests': {'type': 'array'}, 'expires_at': {'type': 'string'}, 'request_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['url'], 'properties': {'url': {'type': 'string', 'description': 'Full URL to audit (e.g. https://example.com)'}, 'model': {'type': 'string', 'description': 'LLM model for AI analysis (default: "openai/gpt-oss-20b"). Set to "none" to skip AI analysis.'}, 'api_key': {'type': 'string', 'description': 'Your Groq or HuggingFace API key. Required to enable AI analysis.'}}}
Schéma de sortie
{'type': 'object', 'properties': {'fix': {}, 'key': {}, 'url': {}, 'name': {}, 'weak': {}, 'grade': {}, 'score': {}, 'tests': {}, 'value': {}, 'header': {}, 'issues': {}, 'secure': {}, 'weight': {}, 'cookies': {'type': 'array'}, 'details': {}, 'message': {'type': 'string'}, 'missing': {}, 'httpOnly': {}, 'sameSite': {}, 'risk_level': {}, 'weak_count': {'type': 'number'}, 'cookies_found': {'type': 'number'}, 'missing_count': {'type': 'number'}, 'overall_grade': {}, 'origins_tested': {'type': 'number'}, 'total_findings': {'type': 'number'}, 'headers_checked': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'Text to analyze'}, 'top_n': {'type': 'number', 'description': 'Return top N words (default: 20, max: 200)'}, 'min_length': {'type': 'number', 'description': 'Minimum word length to include (default: 3)'}, 'remove_stopwords': {'type': 'boolean', 'description': 'Remove common English stopwords (default: true)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'top_words': {'type': 'array'}, 'total_words': {}, 'unique_words': {'type': 'number'}, 'stopwords_removed': {}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'XML string to convert'}, 'attr_prefix': {'type': 'string', 'description': 'Prefix for attribute keys (default: "@_")'}, 'ignore_attrs': {'type': 'boolean', 'description': 'Ignore XML attributes (default: false)'}, 'parse_values': {'type': 'boolean', 'description': 'Auto-parse numbers and booleans (default: true)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'result': {}, 'key_count': {'type': 'number'}}, 'additionalProperties': True}
Schéma d’entrée
{'type': 'object', 'required': ['input'], 'properties': {'input': {'type': 'string', 'description': 'YAML string to parse'}, 'multi': {'type': 'boolean', 'description': 'If true, parse all documents in a multi-document stream and return an array (default: false)'}}}
Schéma de sortie
{'type': 'object', 'properties': {'json': {}, 'count': {'type': 'number'}, 'documents': {}}, 'additionalProperties': True}
Modifications récentes des outils
Serveurs MCP similaires
invinoveritas
Provides agent governance, independent decision reviews, signed proofs, audit trails, persistent memory, code execution, and veri…
hyperion
Acts as a paid MCP tool marketplace and utility gateway with server discovery, HTTP and JavaScript tools, research, data conversi…
Andreax
Offers pay-per-call AI services for inference, agent and workflow design, OCR and transcription, code generation and review, clas…
Vee3
Manages Clerk authentication infrastructure, including users, organizations, domains, sessions, tokens, OAuth, SSO, machines, per…
GoCreative Agent API
Offers pay-per-call LLM completions and data services for company intelligence, KYB, sanctions screening, threat intelligence, co…
validoria-mcp
Runs continuous website, API, and webshop tests covering security, SEO, performance, accessibility, browser journeys, and inciden…
HubVibe: Pay-per-Call Tools for AI Agents: Web Search, Email Verify, KYC, Stocks, Crypto, News, Data
Offers paid utilities for web audits, HTTP fetching and extraction, BigQuery analysis, LLM processing, code execution, blockchain…
developer-tools
Provides general-purpose developer utilities for encoding, hashing, encryption, JSON, HTML, CSS, networking, and related data tra…