{"apiVersion":"v1","directorySlug":"cloudroots-mcp-6fa2441a2a","title":"Cloudroots","description":null,"pageUrl":"https://www.mcpbundles.com/skills/cloudroots-mcp-6fa2441a2a","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://mcp.cloudroots.co.in/mcp","hostedMcpUrl":null,"toolCount":31,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"in.co.cloudroots/cloudroots-mcp-6fa2441a2a","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"inspect_website","description":"Fetch public HTML and return observed controls and constraints. Order: inspect_website, then generate_test_cases, then optionally check_links and audit_page for verified and observed cases, then validate_test_case, detect_duplicates, analyze_coverage, score_test_case, review_test_cases, generate_report, export_report. Phase 1 is read-only and does not click, submit, pay, or delete. Does not execute forms. Private networks and non-http(s) URLs are blocked.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"render":{"type":"boolean"},"browser":{"enum":["chromium","firefox","webkit"],"type":"string"},"maxPages":{"type":"integer","maximum":20,"minimum":1}},"additionalProperties":false},"title":"Inspect website","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"inspect_website","displayName":"Inspect website"},{"name":"generate_test_cases","description":"Turn observations into functional, negative, and boundary cases with concrete synthetic data. Order: inspect_website, then generate_test_cases, then optionally check_links and audit_page for verified and observed cases, then validate_test_case, detect_duplicates, analyze_coverage, score_test_case, review_test_cases, generate_report, export_report. Phase 1 is read-only and does not click, submit, pay, or delete. Empty input returns a message, not a silent empty list.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["observations"],"properties":{"observations":{"type":"array","items":{"type":"object","required":["observationId","url","type"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","default":""},"text":{"type":"string","default":""},"type":{"enum":["page","form","input","textarea","select","button","link"],"type":"string"},"label":{"type":"string","default":""},"formId":{"type":"string","default":""},"region":{"type":"string","default":""},"trigger":{"type":"string","default":""},"selector":{"type":"string","default":""},"constraints":{"type":"object","default":{"max":null,"min":null,"step":null,"accept":null,"options":[],"pattern":null,"disabled":false,"multiple":false,"readOnly":false,"required":false,"inputType":null,"maxLength":null,"minLength":null},"properties":{"max":{"$ref":"#/properties/observations/items/properties/constraints/properties/min","default":null},"min":{"type":["number","null"],"default":null},"step":{"type":["string","null"],"default":null},"accept":{"type":["string","null"],"default":null},"options":{"type":"array","items":{"type":"string"},"default":[]},"pattern":{"type":["string","null"],"default":null},"disabled":{"type":"boolean","default":false},"multiple":{"type":"boolean","default":false},"readOnly":{"type":"boolean","default":false},"required":{"type":"boolean","default":false},"inputType":{"type":["string","null"],"default":null},"maxLength":{"$ref":"#/properties/observations/items/properties/constraints/properties/minLength","default":null},"minLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null}},"additionalProperties":false},"evidenceIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"observationId":{"type":"string","minLength":1}},"additionalProperties":false}},"includeBoundary":{"type":"boolean"},"includeNegative":{"type":"boolean"},"includePositive":{"type":"boolean"}},"additionalProperties":false},"title":"Generate test cases","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"generate_test_cases","displayName":"Generate test cases"},{"name":"generate_boundary_cases","description":"Build concrete boundary values from one observation's min, max, minLength, or maxLength. If no limit was observed, returns EMPTY instead of a generic sentence.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["observation"],"properties":{"observation":{"type":"object","required":["observationId","url","type"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","default":""},"text":{"type":"string","default":""},"type":{"enum":["page","form","input","textarea","select","button","link"],"type":"string"},"label":{"type":"string","default":""},"formId":{"type":"string","default":""},"region":{"type":"string","default":""},"trigger":{"type":"string","default":""},"selector":{"type":"string","default":""},"constraints":{"type":"object","default":{"max":null,"min":null,"step":null,"accept":null,"options":[],"pattern":null,"disabled":false,"multiple":false,"readOnly":false,"required":false,"inputType":null,"maxLength":null,"minLength":null},"properties":{"max":{"$ref":"#/properties/observation/properties/constraints/properties/min","default":null},"min":{"type":["number","null"],"default":null},"step":{"type":["string","null"],"default":null},"accept":{"type":["string","null"],"default":null},"options":{"type":"array","items":{"type":"string"},"default":[]},"pattern":{"type":["string","null"],"default":null},"disabled":{"type":"boolean","default":false},"multiple":{"type":"boolean","default":false},"readOnly":{"type":"boolean","default":false},"required":{"type":"boolean","default":false},"inputType":{"type":["string","null"],"default":null},"maxLength":{"$ref":"#/properties/observation/properties/constraints/properties/minLength","default":null},"minLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null}},"additionalProperties":false},"evidenceIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"observationId":{"type":"string","minLength":1}},"additionalProperties":false}},"additionalProperties":false},"title":"Generate boundary cases","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"generate_boundary_cases","displayName":"Generate boundary cases"},{"name":"validate_test_case","description":"Check structure, evidence, honesty of basis, and destructive-action approval. Returns PASS, FAIL, or NEEDS_REVIEW. Malformed cases return INVALID_TEST_CASE instead of crashing.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["testCase"],"properties":{"testCase":{"type":"object","additionalProperties":{}},"observations":{"type":"array","items":{"type":"object","required":["observationId","url","type"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","default":""},"text":{"type":"string","default":""},"type":{"enum":["page","form","input","textarea","select","button","link"],"type":"string"},"label":{"type":"string","default":""},"formId":{"type":"string","default":""},"region":{"type":"string","default":""},"trigger":{"type":"string","default":""},"selector":{"type":"string","default":""},"constraints":{"type":"object","default":{"max":null,"min":null,"step":null,"accept":null,"options":[],"pattern":null,"disabled":false,"multiple":false,"readOnly":false,"required":false,"inputType":null,"maxLength":null,"minLength":null},"properties":{"max":{"$ref":"#/properties/observations/items/properties/constraints/properties/min","default":null},"min":{"type":["number","null"],"default":null},"step":{"type":["string","null"],"default":null},"accept":{"type":["string","null"],"default":null},"options":{"type":"array","items":{"type":"string"},"default":[]},"pattern":{"type":["string","null"],"default":null},"disabled":{"type":"boolean","default":false},"multiple":{"type":"boolean","default":false},"readOnly":{"type":"boolean","default":false},"required":{"type":"boolean","default":false},"inputType":{"type":["string","null"],"default":null},"maxLength":{"$ref":"#/properties/observations/items/properties/constraints/properties/minLength","default":null},"minLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null}},"additionalProperties":false},"evidenceIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"observationId":{"type":"string","minLength":1}},"additionalProperties":false}}},"additionalProperties":false},"title":"Validate test case","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"validate_test_case","displayName":"Validate test case"},{"name":"detect_duplicates","description":"Find exact and semantic duplicates. Cases for different targets are never duplicates, even when the wording is similar.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["testCases"],"properties":{"testCases":{"type":"array","items":{"type":"object","required":["testCaseId","module","title","scenario","steps","testData","expectedResult","testType","priority","basis","confidence","target","action","inputClass","riskLevel","requiresApproval","destructiveAction"],"properties":{"basis":{"enum":["observed_fact","inferred_behavior","verified_runtime_result"],"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["order","action","target"],"properties":{"data":{"type":"string"},"order":{"type":"integer","exclusiveMinimum":0},"action":{"type":"string","minLength":1},"target":{"type":"string","minLength":1}},"additionalProperties":false},"minItems":1},"action":{"type":"string","minLength":1},"module":{"type":"string","minLength":1},"target":{"type":"string","minLength":1},"priority":{"enum":["P1","P2","P3"],"type":"string"},"scenario":{"type":"string","minLength":1},"testData":{"type":"string","minLength":1},"testType":{"enum":["Functional","Negative","Boundary"],"type":"string"},"riskLevel":{"enum":["read","state_change","destructive"],"type":"string"},"approvalId":{"type":"string"},"confidence":{"type":"number","maximum":1,"minimum":0},"inputClass":{"enum":["valid","invalid","boundary","empty","special","interaction"],"type":"string"},"testCaseId":{"type":"string","minLength":1},"evidenceIds":{"type":"array","items":{"type":"string"},"default":[]},"reviewStatus":{"enum":["PENDING","NEEDS_EDIT","APPROVED","REJECTED"],"type":"string"},"preconditions":{"type":"array","items":{"type":"string"},"default":[]},"expectedResult":{"type":"string","minLength":1},"requiresApproval":{"type":"boolean"},"destructiveAction":{"type":"boolean"}},"additionalProperties":false}}},"additionalProperties":false},"title":"Detect duplicates","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"detect_duplicates","displayName":"Detect duplicates"},{"name":"analyze_coverage","description":"Report observation coverage for testable controls only. This is not requirements coverage. Page and form observations are excluded from the percentage.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["observations","testCases"],"properties":{"testCases":{"type":"array","items":{"type":"object","required":["testCaseId","module","title","scenario","steps","testData","expectedResult","testType","priority","basis","confidence","target","action","inputClass","riskLevel","requiresApproval","destructiveAction"],"properties":{"basis":{"enum":["observed_fact","inferred_behavior","verified_runtime_result"],"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["order","action","target"],"properties":{"data":{"type":"string"},"order":{"type":"integer","exclusiveMinimum":0},"action":{"type":"string","minLength":1},"target":{"type":"string","minLength":1}},"additionalProperties":false},"minItems":1},"action":{"type":"string","minLength":1},"module":{"type":"string","minLength":1},"target":{"type":"string","minLength":1},"priority":{"enum":["P1","P2","P3"],"type":"string"},"scenario":{"type":"string","minLength":1},"testData":{"type":"string","minLength":1},"testType":{"enum":["Functional","Negative","Boundary"],"type":"string"},"riskLevel":{"enum":["read","state_change","destructive"],"type":"string"},"approvalId":{"type":"string"},"confidence":{"type":"number","maximum":1,"minimum":0},"inputClass":{"enum":["valid","invalid","boundary","empty","special","interaction"],"type":"string"},"testCaseId":{"type":"string","minLength":1},"evidenceIds":{"type":"array","items":{"type":"string"},"default":[]},"reviewStatus":{"enum":["PENDING","NEEDS_EDIT","APPROVED","REJECTED"],"type":"string"},"preconditions":{"type":"array","items":{"type":"string"},"default":[]},"expectedResult":{"type":"string","minLength":1},"requiresApproval":{"type":"boolean"},"destructiveAction":{"type":"boolean"}},"additionalProperties":false}},"observations":{"type":"array","items":{"type":"object","required":["observationId","url","type"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","default":""},"text":{"type":"string","default":""},"type":{"enum":["page","form","input","textarea","select","button","link"],"type":"string"},"label":{"type":"string","default":""},"formId":{"type":"string","default":""},"region":{"type":"string","default":""},"trigger":{"type":"string","default":""},"selector":{"type":"string","default":""},"constraints":{"type":"object","default":{"max":null,"min":null,"step":null,"accept":null,"options":[],"pattern":null,"disabled":false,"multiple":false,"readOnly":false,"required":false,"inputType":null,"maxLength":null,"minLength":null},"properties":{"max":{"$ref":"#/properties/observations/items/properties/constraints/properties/min","default":null},"min":{"type":["number","null"],"default":null},"step":{"type":["string","null"],"default":null},"accept":{"type":["string","null"],"default":null},"options":{"type":"array","items":{"type":"string"},"default":[]},"pattern":{"type":["string","null"],"default":null},"disabled":{"type":"boolean","default":false},"multiple":{"type":"boolean","default":false},"readOnly":{"type":"boolean","default":false},"required":{"type":"boolean","default":false},"inputType":{"type":["string","null"],"default":null},"maxLength":{"$ref":"#/properties/observations/items/properties/constraints/properties/minLength","default":null},"minLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null}},"additionalProperties":false},"evidenceIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"observationId":{"type":"string","minLength":1}},"additionalProperties":false}}},"additionalProperties":false},"title":"Analyze observation coverage","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"analyze_coverage","displayName":"Analyze observation coverage"},{"name":"score_test_case","description":"Score completeness, expected-result text, evidence honesty, and safety on a 1-5 rubric. MIN_QUALITY_SCORE (default 3.5) sets meetsThreshold.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["testCase"],"properties":{"testCase":{"type":"object","additionalProperties":{}}},"additionalProperties":false},"title":"Score test case","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"score_test_case","displayName":"Score test case"},{"name":"review_test_cases","description":"Mark cases PENDING, or NEEDS_EDIT when they score below the threshold. This tool cannot approve or reject.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["testCases"],"properties":{"testCases":{"type":"array","items":{"type":"object","required":["testCaseId","module","title","scenario","steps","testData","expectedResult","testType","priority","basis","confidence","target","action","inputClass","riskLevel","requiresApproval","destructiveAction"],"properties":{"basis":{"enum":["observed_fact","inferred_behavior","verified_runtime_result"],"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["order","action","target"],"properties":{"data":{"type":"string"},"order":{"type":"integer","exclusiveMinimum":0},"action":{"type":"string","minLength":1},"target":{"type":"string","minLength":1}},"additionalProperties":false},"minItems":1},"action":{"type":"string","minLength":1},"module":{"type":"string","minLength":1},"target":{"type":"string","minLength":1},"priority":{"enum":["P1","P2","P3"],"type":"string"},"scenario":{"type":"string","minLength":1},"testData":{"type":"string","minLength":1},"testType":{"enum":["Functional","Negative","Boundary"],"type":"string"},"riskLevel":{"enum":["read","state_change","destructive"],"type":"string"},"approvalId":{"type":"string"},"confidence":{"type":"number","maximum":1,"minimum":0},"inputClass":{"enum":["valid","invalid","boundary","empty","special","interaction"],"type":"string"},"testCaseId":{"type":"string","minLength":1},"evidenceIds":{"type":"array","items":{"type":"string"},"default":[]},"reviewStatus":{"enum":["PENDING","NEEDS_EDIT","APPROVED","REJECTED"],"type":"string"},"preconditions":{"type":"array","items":{"type":"string"},"default":[]},"expectedResult":{"type":"string","minLength":1},"requiresApproval":{"type":"boolean"},"destructiveAction":{"type":"boolean"}},"additionalProperties":false}}},"additionalProperties":false},"title":"Queue test cases for review","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"review_test_cases","displayName":"Queue test cases for review"},{"name":"generate_report","description":"Summarize observations, validation, quality, duplicates, coverage, and destructive cases. Order: inspect_website, then generate_test_cases, then optionally check_links and audit_page for verified and observed cases, then validate_test_case, detect_duplicates, analyze_coverage, score_test_case, review_test_cases, generate_report, export_report. Phase 1 is read-only and does not click, submit, pay, or delete.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["observations","testCases"],"properties":{"url":{"type":"string","format":"uri"},"testCases":{"type":"array","items":{"type":"object","required":["testCaseId","module","title","scenario","steps","testData","expectedResult","testType","priority","basis","confidence","target","action","inputClass","riskLevel","requiresApproval","destructiveAction"],"properties":{"basis":{"enum":["observed_fact","inferred_behavior","verified_runtime_result"],"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["order","action","target"],"properties":{"data":{"type":"string"},"order":{"type":"integer","exclusiveMinimum":0},"action":{"type":"string","minLength":1},"target":{"type":"string","minLength":1}},"additionalProperties":false},"minItems":1},"action":{"type":"string","minLength":1},"module":{"type":"string","minLength":1},"target":{"type":"string","minLength":1},"priority":{"enum":["P1","P2","P3"],"type":"string"},"scenario":{"type":"string","minLength":1},"testData":{"type":"string","minLength":1},"testType":{"enum":["Functional","Negative","Boundary"],"type":"string"},"riskLevel":{"enum":["read","state_change","destructive"],"type":"string"},"approvalId":{"type":"string"},"confidence":{"type":"number","maximum":1,"minimum":0},"inputClass":{"enum":["valid","invalid","boundary","empty","special","interaction"],"type":"string"},"testCaseId":{"type":"string","minLength":1},"evidenceIds":{"type":"array","items":{"type":"string"},"default":[]},"reviewStatus":{"enum":["PENDING","NEEDS_EDIT","APPROVED","REJECTED"],"type":"string"},"preconditions":{"type":"array","items":{"type":"string"},"default":[]},"expectedResult":{"type":"string","minLength":1},"requiresApproval":{"type":"boolean"},"destructiveAction":{"type":"boolean"}},"additionalProperties":false}},"observations":{"type":"array","items":{"type":"object","required":["observationId","url","type"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","default":""},"text":{"type":"string","default":""},"type":{"enum":["page","form","input","textarea","select","button","link"],"type":"string"},"label":{"type":"string","default":""},"formId":{"type":"string","default":""},"region":{"type":"string","default":""},"trigger":{"type":"string","default":""},"selector":{"type":"string","default":""},"constraints":{"type":"object","default":{"max":null,"min":null,"step":null,"accept":null,"options":[],"pattern":null,"disabled":false,"multiple":false,"readOnly":false,"required":false,"inputType":null,"maxLength":null,"minLength":null},"properties":{"max":{"$ref":"#/properties/observations/items/properties/constraints/properties/min","default":null},"min":{"type":["number","null"],"default":null},"step":{"type":["string","null"],"default":null},"accept":{"type":["string","null"],"default":null},"options":{"type":"array","items":{"type":"string"},"default":[]},"pattern":{"type":["string","null"],"default":null},"disabled":{"type":"boolean","default":false},"multiple":{"type":"boolean","default":false},"readOnly":{"type":"boolean","default":false},"required":{"type":"boolean","default":false},"inputType":{"type":["string","null"],"default":null},"maxLength":{"$ref":"#/properties/observations/items/properties/constraints/properties/minLength","default":null},"minLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null}},"additionalProperties":false},"evidenceIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"observationId":{"type":"string","minLength":1}},"additionalProperties":false}}},"additionalProperties":false},"title":"Generate functional testing report","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"generate_report","displayName":"Generate functional testing report"},{"name":"compare_observations","description":"Compare observations from an earlier inspect_website run with a newer one. Lists controls that were added, removed, or changed (required, limits, options, labels) and the existing test cases that need re-running. Use it for regression checks after a release.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["before","after"],"properties":{"after":{"type":"array","items":{"$ref":"#/properties/before/items"},"maxItems":5000},"before":{"type":"array","items":{"type":"object","required":["observationId","url","type"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","default":""},"text":{"type":"string","default":""},"type":{"enum":["page","form","input","textarea","select","button","link"],"type":"string"},"label":{"type":"string","default":""},"formId":{"type":"string","default":""},"region":{"type":"string","default":""},"trigger":{"type":"string","default":""},"selector":{"type":"string","default":""},"constraints":{"type":"object","default":{"max":null,"min":null,"step":null,"accept":null,"options":[],"pattern":null,"disabled":false,"multiple":false,"readOnly":false,"required":false,"inputType":null,"maxLength":null,"minLength":null},"properties":{"max":{"$ref":"#/properties/before/items/properties/constraints/properties/min","default":null},"min":{"type":["number","null"],"default":null},"step":{"type":["string","null"],"default":null},"accept":{"type":["string","null"],"default":null},"options":{"type":"array","items":{"type":"string"},"default":[]},"pattern":{"type":["string","null"],"default":null},"disabled":{"type":"boolean","default":false},"multiple":{"type":"boolean","default":false},"readOnly":{"type":"boolean","default":false},"required":{"type":"boolean","default":false},"inputType":{"type":["string","null"],"default":null},"maxLength":{"$ref":"#/properties/before/items/properties/constraints/properties/minLength","default":null},"minLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null}},"additionalProperties":false},"evidenceIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"observationId":{"type":"string","minLength":1}},"additionalProperties":false},"maxItems":5000},"testCases":{"type":"array","items":{"type":"object","required":["testCaseId","module","title","scenario","steps","testData","expectedResult","testType","priority","basis","confidence","target","action","inputClass","riskLevel","requiresApproval","destructiveAction"],"properties":{"basis":{"enum":["observed_fact","inferred_behavior","verified_runtime_result"],"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["order","action","target"],"properties":{"data":{"type":"string"},"order":{"type":"integer","exclusiveMinimum":0},"action":{"type":"string","minLength":1},"target":{"type":"string","minLength":1}},"additionalProperties":false},"minItems":1},"action":{"type":"string","minLength":1},"module":{"type":"string","minLength":1},"target":{"type":"string","minLength":1},"priority":{"enum":["P1","P2","P3"],"type":"string"},"scenario":{"type":"string","minLength":1},"testData":{"type":"string","minLength":1},"testType":{"enum":["Functional","Negative","Boundary"],"type":"string"},"riskLevel":{"enum":["read","state_change","destructive"],"type":"string"},"approvalId":{"type":"string"},"confidence":{"type":"number","maximum":1,"minimum":0},"inputClass":{"enum":["valid","invalid","boundary","empty","special","interaction"],"type":"string"},"testCaseId":{"type":"string","minLength":1},"evidenceIds":{"type":"array","items":{"type":"string"},"default":[]},"reviewStatus":{"enum":["PENDING","NEEDS_EDIT","APPROVED","REJECTED"],"type":"string"},"preconditions":{"type":"array","items":{"type":"string"},"default":[]},"expectedResult":{"type":"string","minLength":1},"requiresApproval":{"type":"boolean"},"destructiveAction":{"type":"boolean"}},"additionalProperties":false},"maxItems":2000}},"additionalProperties":false},"title":"Compare two inspections","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"compare_observations","displayName":"Compare two inspections"},{"name":"check_links","description":"Request each unique link on a public page with a real GET and report the HTTP status, redirects and timing. Returns verified runtime results (basis verified_runtime_result), not inferences. Same-origin links are checked first. Read-only, nothing is submitted. Order: inspect_website, then generate_test_cases, then optionally check_links and audit_page for verified and observed cases, then validate_test_case, detect_duplicates, analyze_coverage, score_test_case, review_test_cases, generate_report,","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url"],"properties":{"url":{"type":"string","format":"uri"},"maxLinks":{"type":"integer","maximum":50,"minimum":1}},"additionalProperties":false},"title":"Check links","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"check_links","displayName":"Check links"},{"name":"audit_page","description":"Fetch a public page and check title, meta description, lang, viewport, h1, canonical, image alt text, form labels, link text, duplicate ids, HTTPS and security headers. Returns findings plus observed_fact test cases. Read-only. Order: inspect_website, then generate_test_cases, then optionally check_links and audit_page for verified and observed cases, then validate_test_case, detect_duplicates, analyze_coverage, score_test_case, review_test_cases, generate_report, export_report. Phase 1 is read-","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url"],"properties":{"url":{"type":"string","format":"uri"}},"additionalProperties":false},"title":"Audit page quality","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"audit_page","displayName":"Audit page quality"},{"name":"export_report","description":"Build a downloadable .xlsx (Summary, Test Cases, Observations sheets), .docx, .csv, Playwright .spec.ts, or Gherkin .feature file from observations and test cases. Over HTTP it returns a downloadUrl valid for 30 minutes; over stdio it saves the file and returns savedPath. Give the user the link or path. Order: inspect_website, then generate_test_cases, then optionally check_links and audit_page for verified and observed cases, then validate_test_case, detect_duplicates, analyze_coverage, score_t","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["observations","testCases"],"properties":{"url":{"type":"string","format":"uri"},"format":{"enum":["xlsx","docx","csv","playwright","gherkin","jira","github","testrail","xray","html","pdf"],"type":"string"},"testCases":{"type":"array","items":{"type":"object","required":["testCaseId","module","title","scenario","steps","testData","expectedResult","testType","priority","basis","confidence","target","action","inputClass","riskLevel","requiresApproval","destructiveAction"],"properties":{"basis":{"enum":["observed_fact","inferred_behavior","verified_runtime_result"],"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["order","action","target"],"properties":{"data":{"type":"string"},"order":{"type":"integer","exclusiveMinimum":0},"action":{"type":"string","minLength":1},"target":{"type":"string","minLength":1}},"additionalProperties":false},"minItems":1},"action":{"type":"string","minLength":1},"module":{"type":"string","minLength":1},"target":{"type":"string","minLength":1},"priority":{"enum":["P1","P2","P3"],"type":"string"},"scenario":{"type":"string","minLength":1},"testData":{"type":"string","minLength":1},"testType":{"enum":["Functional","Negative","Boundary"],"type":"string"},"riskLevel":{"enum":["read","state_change","destructive"],"type":"string"},"approvalId":{"type":"string"},"confidence":{"type":"number","maximum":1,"minimum":0},"inputClass":{"enum":["valid","invalid","boundary","empty","special","interaction"],"type":"string"},"testCaseId":{"type":"string","minLength":1},"evidenceIds":{"type":"array","items":{"type":"string"},"default":[]},"reviewStatus":{"enum":["PENDING","NEEDS_EDIT","APPROVED","REJECTED"],"type":"string"},"preconditions":{"type":"array","items":{"type":"string"},"default":[]},"expectedResult":{"type":"string","minLength":1},"requiresApproval":{"type":"boolean"},"destructiveAction":{"type":"boolean"}},"additionalProperties":false},"maxItems":2000},"includeFile":{"type":"boolean"},"observations":{"type":"array","items":{"type":"object","required":["observationId","url","type"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","default":""},"text":{"type":"string","default":""},"type":{"enum":["page","form","input","textarea","select","button","link"],"type":"string"},"label":{"type":"string","default":""},"formId":{"type":"string","default":""},"region":{"type":"string","default":""},"trigger":{"type":"string","default":""},"selector":{"type":"string","default":""},"constraints":{"type":"object","default":{"max":null,"min":null,"step":null,"accept":null,"options":[],"pattern":null,"disabled":false,"multiple":false,"readOnly":false,"required":false,"inputType":null,"maxLength":null,"minLength":null},"properties":{"max":{"$ref":"#/properties/observations/items/properties/constraints/properties/min","default":null},"min":{"type":["number","null"],"default":null},"step":{"type":["string","null"],"default":null},"accept":{"type":["string","null"],"default":null},"options":{"type":"array","items":{"type":"string"},"default":[]},"pattern":{"type":["string","null"],"default":null},"disabled":{"type":"boolean","default":false},"multiple":{"type":"boolean","default":false},"readOnly":{"type":"boolean","default":false},"required":{"type":"boolean","default":false},"inputType":{"type":["string","null"],"default":null},"maxLength":{"$ref":"#/properties/observations/items/properties/constraints/properties/minLength","default":null},"minLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null}},"additionalProperties":false},"evidenceIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"observationId":{"type":"string","minLength":1}},"additionalProperties":false},"maxItems":5000}},"additionalProperties":false},"title":"Export test cases to Excel or Word","logicalName":"export_report","displayName":"Export test cases to Excel or Word","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"generate_journeys","description":"Build end-to-end journeys from observations: walk the main navigation, follow each call to action, complete a form with valid data, refuse a bad email, refuse an empty form, open and close a dialog. Each journey is a list of steps with expectations. Nothing runs yet; pass the journeys to run_journeys.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url","observations"],"properties":{"url":{"type":"string","format":"uri"},"observations":{"type":"array","items":{"type":"object","required":["observationId","url","type"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","default":""},"text":{"type":"string","default":""},"type":{"enum":["page","form","input","textarea","select","button","link"],"type":"string"},"label":{"type":"string","default":""},"formId":{"type":"string","default":""},"region":{"type":"string","default":""},"trigger":{"type":"string","default":""},"selector":{"type":"string","default":""},"constraints":{"type":"object","default":{"max":null,"min":null,"step":null,"accept":null,"options":[],"pattern":null,"disabled":false,"multiple":false,"readOnly":false,"required":false,"inputType":null,"maxLength":null,"minLength":null},"properties":{"max":{"$ref":"#/properties/observations/items/properties/constraints/properties/min","default":null},"min":{"type":["number","null"],"default":null},"step":{"type":["string","null"],"default":null},"accept":{"type":["string","null"],"default":null},"options":{"type":"array","items":{"type":"string"},"default":[]},"pattern":{"type":["string","null"],"default":null},"disabled":{"type":"boolean","default":false},"multiple":{"type":"boolean","default":false},"readOnly":{"type":"boolean","default":false},"required":{"type":"boolean","default":false},"inputType":{"type":["string","null"],"default":null},"maxLength":{"$ref":"#/properties/observations/items/properties/constraints/properties/minLength","default":null},"minLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null}},"additionalProperties":false},"evidenceIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"observationId":{"type":"string","minLength":1}},"additionalProperties":false},"maxItems":5000}},"additionalProperties":false},"title":"Generate multi-step journeys","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"generate_journeys","displayName":"Generate multi-step journeys"},{"name":"start_domain_verification","description":"Browser tests that click and type may only run on sites the account owns. This returns a token to publish as a file at /.well-known/cloudroots-verification.txt or as a DNS TXT record. Then call check_domain_verification.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["host"],"properties":{"host":{"type":"string","maxLength":253,"minLength":3}},"additionalProperties":false},"title":"Start proving you own a site","logicalName":"start_domain_verification","displayName":"Start proving you own a site","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"check_domain_verification","description":"Looks for the verification file or DNS TXT record. When it matches, the host (and its subdomains) can be driven by browser tests for this account.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["host"],"properties":{"host":{"type":"string","maxLength":253,"minLength":3}},"additionalProperties":false},"title":"Check domain ownership","logicalName":"check_domain_verification","displayName":"Check domain ownership","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_domains","description":"Domains this account has started or finished verifying, plus the hosts the operator allowlisted.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"List verified domains","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_domains","displayName":"List verified domains"},{"name":"remove_domain","description":"Stops browser tests from driving this host for the account.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["host"],"properties":{"host":{"type":"string","maxLength":253,"minLength":3}},"additionalProperties":false},"title":"Remove a domain","logicalName":"remove_domain","displayName":"Remove a domain","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"store_login","description":"Save a test account so browser runs can sign in first. The username and password are asked from the person through the client, never through the AI, and stored encrypted. Only works when the client supports private prompts, and only for a host this account may drive.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name","loginUrl"],"properties":{"name":{"type":"string","pattern":"^[A-Za-z0-9_-]{1,40}$"},"loginUrl":{"type":"string","format":"uri"}},"additionalProperties":false},"title":"Save a login for test runs","logicalName":"store_login","displayName":"Save a login for test runs","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_logins","description":"Names and hosts only. Credentials are never returned.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"List saved logins","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_logins","displayName":"List saved logins"},{"name":"delete_login","description":"Removes the stored credentials.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name"],"properties":{"name":{"type":"string","maxLength":40}},"additionalProperties":false},"title":"Delete a saved login","logicalName":"delete_login","displayName":"Delete a saved login","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"save_run","description":"Keep the observations and test cases from a run so it can be compared later with compare_runs. Needs an account.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["name","url","observations"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","maxLength":80,"minLength":1},"testCases":{"type":"array","items":{"type":"object","required":["testCaseId","module","title","scenario","steps","testData","expectedResult","testType","priority","basis","confidence","target","action","inputClass","riskLevel","requiresApproval","destructiveAction"],"properties":{"basis":{"enum":["observed_fact","inferred_behavior","verified_runtime_result"],"type":"string"},"steps":{"type":"array","items":{"type":"object","required":["order","action","target"],"properties":{"data":{"type":"string"},"order":{"type":"integer","exclusiveMinimum":0},"action":{"type":"string","minLength":1},"target":{"type":"string","minLength":1}},"additionalProperties":false},"minItems":1},"action":{"type":"string","minLength":1},"module":{"type":"string","minLength":1},"target":{"type":"string","minLength":1},"priority":{"enum":["P1","P2","P3"],"type":"string"},"scenario":{"type":"string","minLength":1},"testData":{"type":"string","minLength":1},"testType":{"enum":["Functional","Negative","Boundary"],"type":"string"},"riskLevel":{"enum":["read","state_change","destructive"],"type":"string"},"approvalId":{"type":"string"},"confidence":{"type":"number","maximum":1,"minimum":0},"inputClass":{"enum":["valid","invalid","boundary","empty","special","interaction"],"type":"string"},"testCaseId":{"type":"string","minLength":1},"evidenceIds":{"type":"array","items":{"type":"string"},"default":[]},"reviewStatus":{"enum":["PENDING","NEEDS_EDIT","APPROVED","REJECTED"],"type":"string"},"preconditions":{"type":"array","items":{"type":"string"},"default":[]},"expectedResult":{"type":"string","minLength":1},"requiresApproval":{"type":"boolean"},"destructiveAction":{"type":"boolean"}},"additionalProperties":false},"maxItems":2000},"observations":{"type":"array","items":{"type":"object","required":["observationId","url","type"],"properties":{"url":{"type":"string","format":"uri"},"name":{"type":"string","default":""},"text":{"type":"string","default":""},"type":{"enum":["page","form","input","textarea","select","button","link"],"type":"string"},"label":{"type":"string","default":""},"formId":{"type":"string","default":""},"region":{"type":"string","default":""},"trigger":{"type":"string","default":""},"selector":{"type":"string","default":""},"constraints":{"type":"object","default":{"max":null,"min":null,"step":null,"accept":null,"options":[],"pattern":null,"disabled":false,"multiple":false,"readOnly":false,"required":false,"inputType":null,"maxLength":null,"minLength":null},"properties":{"max":{"$ref":"#/properties/observations/items/properties/constraints/properties/min","default":null},"min":{"type":["number","null"],"default":null},"step":{"type":["string","null"],"default":null},"accept":{"type":["string","null"],"default":null},"options":{"type":"array","items":{"type":"string"},"default":[]},"pattern":{"type":["string","null"],"default":null},"disabled":{"type":"boolean","default":false},"multiple":{"type":"boolean","default":false},"readOnly":{"type":"boolean","default":false},"required":{"type":"boolean","default":false},"inputType":{"type":["string","null"],"default":null},"maxLength":{"$ref":"#/properties/observations/items/properties/constraints/properties/minLength","default":null},"minLength":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"default":null}},"additionalProperties":false},"evidenceIds":{"type":"array","items":{"type":"string","minLength":1},"default":[]},"observationId":{"type":"string","minLength":1}},"additionalProperties":false},"maxItems":5000}},"additionalProperties":false},"title":"Save a run to history","logicalName":"save_run","displayName":"Save a run to history","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_runs","description":"Newest first. Includes runs saved by scheduled monitors.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"url":{"type":"string","format":"uri"},"limit":{"type":"integer","maximum":100,"minimum":1}},"additionalProperties":false},"title":"List saved runs","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_runs","displayName":"List saved runs"},{"name":"get_run","description":"Returns the stored observations and test cases for a run id.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Get a saved run","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_run","displayName":"Get a saved run"},{"name":"delete_run","description":"Removes a run from history.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Delete a saved run","logicalName":"delete_run","displayName":"Delete a saved run","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"compare_runs","description":"Added, removed, and changed controls between two saved runs, and the cases from the earlier run that need re-running.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["before","after"],"properties":{"after":{"type":"string","minLength":1},"before":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Compare two saved runs","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"compare_runs","displayName":"Compare two saved runs"},{"name":"schedule_monitor","description":"Re-inspect a public page every N hours, compare it with the previous run, check its links, audit it, and call your webhook when controls disappear or change, links break, or audit checks fail. Needs an account and a server with monitoring turned on.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["url","everyHours"],"properties":{"url":{"type":"string","format":"uri"},"everyHours":{"type":"integer","maximum":720,"minimum":1},"webhookUrl":{"type":"string","format":"uri"}},"additionalProperties":false},"title":"Watch a site on a schedule","logicalName":"schedule_monitor","displayName":"Watch a site on a schedule","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"list_monitors","description":"Your scheduled monitors and when each runs next.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"title":"List monitors","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"list_monitors","displayName":"List monitors"},{"name":"run_monitor_now","description":"Runs one monitor immediately and returns its report. The result is saved to history.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Run a monitor now","logicalName":"run_monitor_now","displayName":"Run a monitor now","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"delete_monitor","description":"Stops a scheduled monitor.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string","minLength":1}},"additionalProperties":false},"title":"Delete a monitor","logicalName":"delete_monitor","displayName":"Delete a monitor","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"usage_report","description":"Your plan limits and what you used over the last days. Useful before an invoice or an upgrade.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"days":{"type":"integer","maximum":90,"minimum":1}},"additionalProperties":false},"title":"Usage and plan","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"usage_report","displayName":"Usage and plan"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Cloudroots&config=eyJ1cmwiOiAiaHR0cHM6Ly9tY3AuY2xvdWRyb290cy5jby5pbi9tY3AifQ%3D%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Cloudroots%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.cloudroots.co.in%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Cloudroots%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.cloudroots.co.in%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Cloudroots&connectorUrl=https%3A%2F%2Fmcp.cloudroots.co.in%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Cloudroots\" --url \"https://mcp.cloudroots.co.in/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/cloudroots-mcp-6fa2441a2a","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/cloudroots-mcp-6fa2441a2a/tools/{tool}","mcpServerUrl":"https://mcp.cloudroots.co.in/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/cloudroots-mcp-6fa2441a2a?live=1"}