{"service":"platphorm-sandbox","version":"2.0.0-phase2","baseUrl":"https://sandbox.platphormnews.com","endpoints":["GET /api/sandbox/status","GET /api/sandbox/provider-status","GET /api/sandbox/database-status","GET /api/sandbox/templates","GET /api/sandbox/templates/{id}","GET /api/sandbox/runs","GET /api/sandbox/runs/{id}","GET /api/sandbox/runs/{id}/files","GET /api/sandbox/runs/{id}/logs","GET /api/sandbox/runs/{id}/commands","GET /api/sandbox/runs/{id}/artifacts","GET /api/sandbox/runs/{id}/validations","GET /api/sandbox/runs/{id}/handoffs","GET /api/sandbox/runs/{id}/events","POST /api/sandbox/create","POST /api/sandbox/write-files","POST /api/sandbox/exec","POST /api/sandbox/validate-artifact","POST /api/sandbox/receive-handoff","POST /api/sandbox/send-handoff","GET /api/sandbox/suite","GET /api/sandbox/evidence","GET /api/web4/status","GET /api/web4/manifest","GET /api/web4/scorecard","GET /api/web4/fingerprints","GET /api/provenance/lookup","GET /api/provenance/verify","GET /api/v1/provider/status","GET /api/v1/database/status","GET /api/v1/rate-limits","GET /api/v1/audit","GET /api/v1/sandboxes","POST /api/v1/sandboxes","GET /api/v1/sandboxes/{id}","PATCH /api/v1/sandboxes/{id}","DELETE /api/v1/sandboxes/{id}","POST /api/v1/sandboxes/{id}/execute","POST /api/v1/sandboxes/{id}/stop","POST /api/v1/sandboxes/{id}/extend-timeout","POST /api/v1/sandboxes/{id}/network-policy","GET /api/v1/sandboxes/{id}/routes","GET /api/v1/named-sandboxes","POST /api/v1/named-sandboxes","GET /api/v1/named-sandboxes/{name}","PATCH /api/v1/named-sandboxes/{name}","DELETE /api/v1/named-sandboxes/{name}","POST /api/v1/named-sandboxes/{name}/resume","GET /api/v1/sessions","GET /api/v1/sessions/{id}","POST /api/v1/sessions/{id}/stop","POST /api/v1/sessions/{id}/extend-timeout","POST /api/v1/sessions/{id}/network-policy","GET /api/v1/sandboxes/{id}/commands","POST /api/v1/sandboxes/{id}/commands","GET /api/v1/commands/{commandId}","POST /api/v1/commands/{commandId}/kill","GET /api/v1/commands/{commandId}/logs","GET /api/v1/commands/{commandId}/logs/stream","POST /api/v1/sandboxes/{id}/files/read","POST /api/v1/sandboxes/{id}/files/write","POST /api/v1/sandboxes/{id}/files/mkdir","POST /api/v1/sandboxes/{id}/files/upload","POST /api/v1/sandboxes/{id}/files/download","GET /api/v1/snapshots","GET /api/v1/snapshots/{id}","POST /api/v1/sandboxes/{id}/snapshots","DELETE /api/v1/snapshots/{id}","POST /api/v1/snapshots/{id}/restore","GET /api/v1/templates","GET /api/v1/templates/{id}","POST /api/v1/templates/{id}/instantiate","GET /api/v1/lifecycle/templates","GET /api/v1/lifecycle/templates/{id}","POST /api/v1/lifecycle/run","GET /api/v1/lifecycle/runs","GET /api/v1/lifecycle/runs/{id}","POST /api/v1/lifecycle/runs/{id}/next","POST /api/v1/lifecycle/runs/{id}/send-to/{service}","GET /api/v1/lifecycle/runs/{id}/evidence","GET /api/v1/mcp/tools","GET /api/v1/mcp/tools/{name}","POST /api/v1/mcp/tools/{name}/test","POST /api/v1/mcp/tools/{name}/execute","GET /api/v1/mcp/servers","POST /api/v1/mcp/sync","POST /api/v1/json-rpc/replay","POST /api/v1/api-tests","GET /api/v1/api-tests","GET /api/v1/api-tests/{id}","POST /api/v1/api-tests/{id}/run","POST /api/v1/openapi/import","GET /api/v1/openapi/imports/{id}","POST /api/v1/openapi/imports/{id}/generate-tests","POST /api/v1/webhooks/replay","GET /api/v1/webhooks/replay/{id}","POST /api/v1/schema/validate","POST /api/v1/schema/generate-example","GET /api/v1/integrations/status","GET /api/v1/integrations/mcp","POST /api/v1/integrations/spec/validate","GET /api/v1/integrations/spec","POST /api/v1/integrations/evals/run","GET /api/v1/integrations/evals","POST /api/v1/integrations/mcp/test-tool","POST /api/v1/integrations/claws/run","GET /api/v1/integrations/browserops","POST /api/v1/integrations/browserops/run","GET /api/v1/integrations/agentui","POST /api/v1/integrations/agentui/render","GET /api/v1/integrations/phorm","POST /api/v1/integrations/phorm/prototype","GET /api/v1/integrations/fingerprint","POST /api/v1/integrations/fingerprint/check","GET /api/v1/integrations/trace","POST /api/v1/integrations/trace/span-completion","GET /api/v1/integrations/cli","POST /api/v1/integrations/cli/dry-run","GET /api/v1/integrations/json","POST /api/v1/integrations/json/validate","GET /api/v1/integrations/xml","POST /api/v1/integrations/xml/validate","GET /api/v1/integrations/markdown","POST /api/v1/integrations/markdown/validate","POST /api/v1/integrations/platphorm/validate-site","GET /api/v1/agent-policy","GET /api/v1/agent-policy/platforms","GET /api/v1/agent-policy/platforms/{id}","GET /api/v1/agent-policy/robots","GET /api/v1/agent-policy/summary","GET /api/v1/network/graph","POST /api/v1/network/graph/sync","GET /api/v1/network/sites","GET /api/v1/network/trusted-domains","GET /api/v1/network/route-compliance","GET /api/v1/network/discovery-compliance"],"auth":{"sharedKey":"PLATPHORM_API_KEY","acceptedHeaders":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"],"publicSafeNoAuth":["public dry-run previews for templates, file manifests, command plans, provider availability, auth requirements, artifacts, and handoffs","public status, templates, docs, discovery, route evidence, Web4 status, scorecard, fingerprints, and provenance lookup","browser-local draft workspace operations that do not touch provider execution or protected persistence","JSON/XML/spec validation","public MCP introspection and public-safe read-only tool calls"],"protectedActions":["provider-backed sandbox creation","provider command execution","provider file writes and protected file reads","provider snapshots","API key issuance","global sandbox policy mutation","provider credential changes","raw audit export","unbounded compute","cross-user access","registry mutation","deployment mutation","trusted-domain mutation","report publishing"]},"sandboxes":{"storageModes":["server","indexeddb","localstorage","degraded"],"localDrafts":true},"templates":[{"id":"hello-node-command","name":"Hello Node Command","category":"code-execution","language":"javascript","tags":["hello","node","command","logs"],"status":"available","version":"2.5.0","commands":[{"id":"run-hello-node","command":"node","args":["hello.js"]}],"nextTools":[{"service":"docs","action":"export_report","publicSafe":false,"protected":true},{"service":"trace","action":"open_trace","publicSafe":true,"protected":false}]},{"id":"hello-python-command","name":"Hello Python Command","category":"code-execution","language":"python","tags":["hello","python","provider-runtime"],"status":"degraded","version":"2.5.0","commands":[{"id":"run-hello-python","command":"python3","args":["main.py"]}],"nextTools":[{"service":"evals","action":"score_runtime_output","publicSafe":true,"protected":false}]},{"id":"json-validator","name":"JSON Validator","category":"validation","language":"mixed","tags":["json","validation","chain"],"status":"available","version":"2.5.0","commands":[{"id":"validate-json","command":"node","args":["-e","const fs=require('fs'); const value=JSON.parse(fs.readFileSync('sample.json','utf8')); console.log(JSON.stringify({valid:true, keys:Object.keys(value)}, null, 2));"]}],"nextTools":[{"service":"json","action":"validate_json","publicSafe":true,"protected":false},{"service":"sheets","action":"export_validation_rows","publicSafe":false,"protected":true}]},{"id":"xml-rss-validator","name":"XML/RSS Validator","category":"validation","language":"mixed","tags":["xml","rss","feed","validation"],"status":"available","version":"2.5.0","commands":[{"id":"validate-feed","command":"node","args":["-e","const fs=require('fs'); const xml=fs.readFileSync('feed.xml','utf8'); console.log(JSON.stringify({valid: xml.includes('<rss') && xml.includes('<channel>'), bytes: Buffer.byteLength(xml)}, null, 2));"]}],"nextTools":[{"service":"xml","action":"validate_xml","publicSafe":true,"protected":false},{"service":"trace","action":"link_validation_trace","publicSafe":true,"protected":false}]},{"id":"markdown-report-builder","name":"Markdown Report Builder","category":"reporting","language":"mixed","tags":["markdown","docs","report"],"status":"available","version":"2.5.0","commands":[{"id":"validate-markdown","command":"node","args":["-e","const fs=require('fs'); const md=fs.readFileSync('report.md','utf8'); console.log(JSON.stringify({valid:/^# /m.test(md), bytes: Buffer.byteLength(md)}, null, 2));"]}],"nextTools":[{"service":"markdown","action":"validate_markdown","publicSafe":true,"protected":false},{"service":"docs","action":"publish_report","publicSafe":false,"protected":true}]},{"id":"mcp-tool-tester","name":"MCP Tool Tester","category":"mcp","language":"mixed","tags":["mcp","json-rpc","tool-test"],"status":"available","version":"2.5.0","commands":[{"id":"validate-mcp-call","command":"node","args":["-e","const req=require('./tool-call.json'); console.log(JSON.stringify({valid:req.jsonrpc==='2.0' && req.method==='tools/call', tool:req.params?.name}, null, 2));"]}],"nextTools":[{"service":"mcp","action":"test_mcp_tool","publicSafe":true,"protected":false},{"service":"evals","action":"score_mcp_response","publicSafe":true,"protected":false}]},{"id":"openapi-contract-tester","name":"OpenAPI Contract Tester","category":"spec","language":"mixed","tags":["openapi","spec","contract"],"status":"available","version":"2.5.0","commands":[{"id":"generate-contract-tests","command":"node","args":["-e","const doc=require('./openapi.json'); console.log(JSON.stringify({valid:!!doc.openapi, tests:Object.keys(doc.paths || {})}, null, 2));"]}],"nextTools":[{"service":"spec","action":"validate_spec","publicSafe":true,"protected":false},{"service":"evals","action":"run_contract_eval","publicSafe":true,"protected":false}]},{"id":"evals-suite-runner","name":"Evals Suite Runner","category":"evals","language":"mixed","tags":["evals","scorecard","quality"],"status":"available","version":"2.5.0","commands":[{"id":"score-eval-case","command":"node","args":["-e","const c=require('./eval-case.json'); console.log(JSON.stringify({suite:c.suite, score:c.checks.length ? 1 : 0}, null, 2));"]}],"nextTools":[{"service":"evals","action":"run_eval","publicSafe":true,"protected":false}]},{"id":"browserops-journey-preflight","name":"BrowserOps Journey Preflight","category":"browserops","language":"javascript","tags":["browserops","route-check","preflight"],"status":"available","version":"2.5.0","commands":[{"id":"run-route-preflight","command":"node","args":["route-check.js"]}],"nextTools":[{"service":"browserops","action":"run_browserops_check","publicSafe":true,"protected":false}]},{"id":"agentui-tool-renderer","name":"AgentUI Tool Renderer","category":"agentui","language":"mixed","tags":["agentui","mcp","render"],"status":"available","version":"2.5.0","commands":[{"id":"validate-agentui-payload","command":"node","args":["-e","const p=require('./agentui-payload.json'); console.log(JSON.stringify({valid:Array.isArray(p.fields), fieldCount:p.fields.length}, null, 2));"]}],"nextTools":[{"service":"agentui","action":"render_agentui_tool","publicSafe":true,"protected":false},{"service":"browserops","action":"check_rendered_form","publicSafe":true,"protected":false}]},{"id":"phorm-interface-prototype","name":"Phorm Interface Prototype","category":"phorm","language":"mixed","tags":["phorm","prototype","agentui"],"status":"degraded","version":"2.5.0","commands":[{"id":"validate-phorm-prompt","command":"node","args":["-e","const fs=require('fs'); const md=fs.readFileSync('phorm-prompt.md','utf8'); console.log(JSON.stringify({valid:['command','args','timeout'].every(x=>md.includes(x))}, null, 2));"]}],"nextTools":[{"service":"phorm","action":"prototype_with_phorm","publicSafe":true,"protected":false},{"service":"agentui","action":"convert_to_tool_render","publicSafe":true,"protected":false}]},{"id":"fingerprint-redaction-check","name":"Fingerprint Redaction Check","category":"fingerprint","language":"javascript","tags":["fingerprint","ja4","redaction"],"status":"available","version":"2.5.0","commands":[{"id":"check-ja4-redaction","command":"node","args":["redact-ja4.js"]}],"nextTools":[{"service":"fingerprint","action":"check_fingerprint_redaction","publicSafe":true,"protected":false},{"service":"trace","action":"correlate_fingerprint_trace","publicSafe":true,"protected":false}]},{"id":"trace-span-completion","name":"Trace Span Completion","category":"trace","language":"javascript","tags":["trace","span","observability"],"status":"available","version":"2.5.0","commands":[{"id":"complete-span","command":"node","args":["trace-span.js"]}],"nextTools":[{"service":"trace","action":"complete_trace_span","publicSafe":true,"protected":false}]},{"id":"cli-harness-dry-run","name":"CLI Harness Dry Run","category":"cli","language":"mixed","tags":["platphormctl","cli","dry-run"],"status":"degraded","version":"2.5.0","commands":[{"id":"validate-cli-commands","command":"node","args":["-e","const fs=require('fs'); const text=fs.readFileSync('platphormctl-commands.txt','utf8'); console.log(JSON.stringify({valid:text.includes('--dry-run'), lines:text.trim().split(/\\n/).length}, null, 2));"]}],"nextTools":[{"service":"cli","action":"generate_platphormctl_command","publicSafe":true,"protected":false}]},{"id":"opencontent-ingest-prep","name":"OpenContent Ingest Prep","category":"content","language":"mixed","tags":["opencontent","ingest","manifest"],"status":"available","version":"2.5.0","commands":[{"id":"validate-opencontent-manifest","command":"node","args":["-e","const m=require('./opencontent-manifest.json'); console.log(JSON.stringify({valid:m.sourceUrl.includes('platphormnews.com') && m.publish === false}, null, 2));"]}],"nextTools":[{"service":"opencontent","action":"ingest_preview","publicSafe":true,"protected":false},{"service":"docs","action":"publish_ingest_report","publicSafe":false,"protected":true}]},{"id":"podcasts-feed-validation","name":"Podcasts Feed Validation","category":"feeds","language":"mixed","tags":["podcasts","rss","xml"],"status":"available","version":"2.5.0","commands":[{"id":"validate-podcast-feed","command":"node","args":["-e","const fs=require('fs'); const xml=fs.readFileSync('podcast-feed.xml','utf8'); console.log(JSON.stringify({valid:xml.includes('<channel>') && xml.includes('<enclosure')}, null, 2));"]}],"nextTools":[{"service":"podcasts","action":"validate_feed","publicSafe":true,"protected":false},{"service":"xml","action":"validate_xml","publicSafe":true,"protected":false}]},{"id":"desa-script-health-static-check","name":"DESA Script Health Static Check","category":"static-analysis","language":"mixed","tags":["desa","powershell","static-check"],"status":"available","version":"2.5.0","commands":[{"id":"static-check-desa","command":"node","args":["-e","const fs=require('fs'); const s=fs.readFileSync('script.ps1','utf8'); console.log(JSON.stringify({valid:!/(Remove-Item|Invoke-WebRequest|Get-Credential)/i.test(s)}, null, 2));"]}],"nextTools":[{"service":"docs","action":"publish_static_check_report","publicSafe":false,"protected":true}]},{"id":"msi-static-inspection-prep","name":"MSI Static Inspection Prep","category":"static-analysis","language":"mixed","tags":["msi","static-inspection","manifest"],"status":"available","version":"2.5.0","commands":[{"id":"validate-msi-manifest","command":"node","args":["-e","const m=require('./msi-inspection.json'); console.log(JSON.stringify({valid:m.privateBinaryUploaded === false, checks:m.checks.length}, null, 2));"]}],"nextTools":[{"service":"docs","action":"publish_inspection_prep","publicSafe":false,"protected":true}]},{"id":"calendar-kanban-remediation-flow","name":"Calendar/Kanban Remediation Flow","category":"workflow","language":"mixed","tags":["kanban","calendar","remediation"],"status":"protected","version":"2.5.0","commands":[{"id":"validate-remediation-plan","command":"node","args":["-e","const r=require('./remediation.json'); console.log(JSON.stringify({valid:!!r.finding && !!r.severity, protectedActions:['kanban','calendar']}, null, 2));"]}],"nextTools":[{"service":"kanban","action":"create_remediation_task","publicSafe":false,"protected":true},{"service":"calendar","action":"create_reminder","publicSafe":false,"protected":true}]},{"id":"validate-json-artifact","name":"Validate JSON Artifact","category":"validation","language":"mixed","tags":["json","artifact","validation"],"status":"available","version":"2.5.0","commands":[{"id":"validate-json-artifact","command":"node","args":["-e","const fs=require('fs'); JSON.parse(fs.readFileSync('artifact.json','utf8')); console.log(JSON.stringify({status:'pass', kind:'json'}));"]}],"nextTools":[{"service":"json","action":"validate_json","publicSafe":true,"protected":false}]},{"id":"validate-openapi-artifact","name":"Validate OpenAPI Artifact","category":"spec","language":"mixed","tags":["openapi","artifact","validation"],"status":"available","version":"2.5.0","commands":[{"id":"validate-openapi-artifact","command":"node","args":["-e","const doc=require('./openapi.json'); console.log(JSON.stringify({status:doc.openapi&&doc.info&&doc.paths?'pass':'fail', paths:Object.keys(doc.paths||{})}));"]}],"nextTools":[{"service":"spec","action":"validate_openapi","publicSafe":true,"protected":false},{"service":"evals","action":"score_contract","publicSafe":true,"protected":false}]},{"id":"validate-mcp-envelope","name":"Validate MCP Envelope","category":"mcp","language":"mixed","tags":["mcp","json-rpc","envelope"],"status":"available","version":"2.5.0","commands":[{"id":"validate-mcp-envelope","command":"node","args":["-e","const req=require('./mcp-envelope.json'); console.log(JSON.stringify({status:req.jsonrpc==='2.0'&&req.method==='tools/call'?'pass':'fail', method:req.method}));"]}],"nextTools":[{"service":"mcp","action":"validate_mcp_envelope","publicSafe":true,"protected":false}]},{"id":"validate-rss-or-sitemap","name":"Validate RSS or Sitemap","category":"feeds","language":"mixed","tags":["rss","sitemap","xml"],"status":"available","version":"2.5.0","commands":[{"id":"validate-rss-or-sitemap","command":"node","args":["-e","const fs=require('fs'); const x=fs.readFileSync('rss.xml','utf8'); console.log(JSON.stringify({status:/<rss|<urlset/.test(x)?'pass':'fail'}));"]}],"nextTools":[{"service":"xml","action":"validate_feed","publicSafe":true,"protected":false}]},{"id":"generate-markdown-report","name":"Generate Markdown Report","category":"reporting","language":"mixed","tags":["markdown","report","docs"],"status":"available","version":"2.5.0","commands":[{"id":"validate-markdown-report","command":"node","args":["-e","const fs=require('fs'); const md=fs.readFileSync('report.md','utf8'); console.log(JSON.stringify({status:/^# /m.test(md)&&!/PLATPHORM_API_KEY|Bearer /i.test(md)?'pass':'fail'}));"]}],"nextTools":[{"service":"markdown","action":"validate_markdown","publicSafe":true,"protected":false},{"service":"docs","action":"publish_report","publicSafe":false,"protected":true}]},{"id":"spec-to-sandbox-test","name":"Spec to Sandbox Test","category":"workflow","language":"mixed","tags":["spec","sandbox","evals"],"status":"protected","version":"2.5.0","commands":[{"id":"preview-spec-test-plan","command":"node","args":["-e","const p=require('./spec-test-plan.json'); console.log(JSON.stringify({status:Array.isArray(p.steps)?'pass':'fail', steps:p.steps.length}));"]}],"nextTools":[{"service":"spec","action":"contract_validation","publicSafe":true,"protected":false},{"service":"evals","action":"score_sandbox_results","publicSafe":false,"protected":true}]},{"id":"sandbox-to-browserops-preview","name":"Sandbox to BrowserOps Preview","category":"handoff","language":"mixed","tags":["browserops","handoff","preview"],"status":"available","version":"2.5.0","commands":[{"id":"validate-browserops-preview","command":"node","args":["-e","const h=require('./browserops-handoff.json'); const u=new URL(h.previewUrl); console.log(JSON.stringify({status:u.hostname.endsWith('.platphormnews.com')?'pass':'fail', confirmed:h.browseropsConfirmed}));"]}],"nextTools":[{"service":"browserops","action":"run_preview_check","publicSafe":false,"protected":true}]},{"id":"sandbox-to-evals-score","name":"Sandbox to Evals Score","category":"handoff","language":"mixed","tags":["evals","scorecard","handoff"],"status":"available","version":"2.5.0","commands":[{"id":"validate-evals-input","command":"node","args":["-e","const i=require('./evals-input.json'); console.log(JSON.stringify({status:Array.isArray(i.checks)&&i.noFakeSuccess?'pass':'fail'}));"]}],"nextTools":[{"service":"evals","action":"score_sandbox_results","publicSafe":false,"protected":true}]},{"id":"sandbox-to-docs-report","name":"Sandbox to Docs Report","category":"handoff","language":"mixed","tags":["docs","report","handoff"],"status":"available","version":"2.5.0","commands":[{"id":"validate-docs-report","command":"node","args":["-e","const fs=require('fs'); const md=fs.readFileSync('docs-report.md','utf8'); console.log(JSON.stringify({status:md.includes('protected authorization required')?'pass':'fail'}));"]}],"nextTools":[{"service":"docs","action":"publish_sandbox_report","publicSafe":false,"protected":true}]},{"id":"trace-linked-command","name":"Trace-linked Command","category":"trace","language":"javascript","tags":["trace","command","evidence"],"status":"available","version":"2.5.0","commands":[{"id":"trace-linked-command","command":"node","args":["trace-command.js"]}],"nextTools":[{"service":"trace","action":"open_trace","publicSafe":true,"protected":false}]},{"id":"secret-redaction-check","name":"Secret Redaction Check","category":"security","language":"javascript","tags":["secret-scan","redaction","security"],"status":"available","version":"2.5.0","commands":[{"id":"secret-redaction-check","command":"node","args":["secret-check.js"]}],"nextTools":[{"service":"fingerprint","action":"check_redaction","publicSafe":true,"protected":false}]},{"id":"fingerprint-public-artifact","name":"Fingerprint Public Artifact","category":"web4","language":"javascript","tags":["fingerprint","provenance","web4"],"status":"available","version":"2.5.0","commands":[{"id":"fingerprint-public-artifact","command":"node","args":["public-fingerprint.js"]}],"nextTools":[{"service":"fingerprint","action":"record_public_artifact_hash","publicSafe":true,"protected":false}]},{"id":"platphormctl-smoke-test","name":"platphormctl Smoke Test","category":"cli","language":"mixed","tags":["platphormctl","smoke","dry-run"],"status":"available","version":"2.5.0","commands":[{"id":"validate-platphormctl-smoke","command":"node","args":["-e","const fs=require('fs'); const text=fs.readFileSync('platphormctl-smoke.txt','utf8'); console.log(JSON.stringify({status:text.includes('dry-run')?'pass':'warn'}));"]}],"nextTools":[{"service":"platphormctl","action":"operator_smoke_test","publicSafe":true,"protected":false}]},{"id":"llms-discovery-validation","name":"LLMS Discovery Validation","category":"discovery","language":"mixed","tags":["llms","discovery","agents"],"status":"available","version":"2.5.0","commands":[{"id":"validate-llms-routes","command":"node","args":["-e","const r=require('./llms-routes.json'); console.log(JSON.stringify({status:r.routes.every(x=>x.startsWith('/llms'))?'pass':'fail', routes:r.routes.length}));"]}],"nextTools":[{"service":"mcp","action":"refresh_discovery_manifest","publicSafe":false,"protected":true}]},{"id":"web4-manifest-validation","name":"Web4 Manifest Validation","category":"web4","language":"mixed","tags":["web4","manifest","provenance"],"status":"available","version":"2.5.0","commands":[{"id":"validate-web4-manifest","command":"node","args":["-e","const m=require('./web4-manifest.json'); console.log(JSON.stringify({status:m.schemaVersion==='web4.v1'&&m.suiteRole?'pass':'fail'}));"]}],"nextTools":[{"service":"trace","action":"link_web4_manifest_evidence","publicSafe":true,"protected":false}]}],"runs":{"artifactTypes":["log","json","trace","report","file"],"publicSafeSummaries":true},"web4":{"manifest":"https://sandbox.platphormnews.com/.well-known/web4.json","status":"https://sandbox.platphormnews.com/api/web4/status","scorecard":"https://sandbox.platphormnews.com/api/web4/scorecard","fingerprints":"https://sandbox.platphormnews.com/api/web4/fingerprints","provenance":"https://sandbox.platphormnews.com/.well-known/provenance.json","asyncapi":"https://sandbox.platphormnews.com/asyncapi.yaml"},"tools":["get_sandbox_status","get_sandbox_provider_status","list_sandbox_templates","get_sandbox_template","list_public_sandbox_runs","get_public_sandbox_run","get_sandbox_run_timeline","list_sandbox_artifacts","get_public_sandbox_artifact","list_sandbox_integrations","get_sandbox_integration","get_sandbox_suite_registry","get_sandbox_web4_manifest","get_sandbox_web4_status","get_sandbox_scorecard","list_sandbox_fingerprints","lookup_sandbox_provenance","verify_sandbox_provenance","dry_run_sandbox_template","write_sandbox_files","exec_sandbox_command","read_sandbox_file","snapshot_sandbox","rerun_sandbox_template","validate_sandbox_artifact","send_sandbox_results_to_evals","send_sandbox_results_to_browserops","publish_sandbox_report_to_docs","send_sandbox_results_to_sheets","send_sandbox_trace_update","send_sandbox_handoff","rebuild_sandbox_fingerprints","create_sandbox_provenance","sign_sandbox_provenance","publish_sandbox_artifact_to_ipfs","get_sandbox_info","list_lifecycle_templates","get_lifecycle_template","start_lifecycle_run","get_lifecycle_run","advance_lifecycle_run","send_artifact_to_tool","list_sandboxes","create_sandbox","get_sandbox","stop_sandbox","extend_sandbox_timeout","list_named_sandboxes","create_named_sandbox","get_named_sandbox","list_sessions","get_session","list_commands","execute_command","get_command","kill_command","stream_command_logs","read_file","write_files","create_directory","list_snapshots","get_snapshot","create_snapshot","delete_snapshot","restore_snapshot","get_provider_status","get_database_status","get_rate_limits","validate_json","validate_xml","validate_markdown","validate_spec","run_eval","test_mcp_tool","run_browserops_check","render_agentui_tool","prototype_with_phorm","check_fingerprint_redaction","complete_trace_span","generate_platphormctl_command","get_integration_status","get_agent_policy","list_agent_platforms","get_agent_platform","evaluate_agent_access","get_robots_policy","get_ai_policy","get_trust_policy","get_discovery_manifest","get_public_access_summary","get_health","get_info","get_route_compliance","get_discovery_compliance","update_global_sandbox_policy","update_agent_policy","refresh_agent_platform_registry","create_docs_report","create_sheet_report","create_deck_summary","prune_sandbox_records","run_database_backfill"],"resources":["sandbox://overview","sandbox://lifecycle/templates","sandbox://lifecycle/runs","sandbox://sandboxes","sandbox://sandbox/{id}","sandbox://sessions","sandbox://session/{id}","sandbox://commands","sandbox://command/{id}","sandbox://snapshots","sandbox://snapshot/{id}","sandbox://integrations","sandbox://suite-registry","sandbox://web4/manifest","sandbox://web4/status","sandbox://web4/fingerprints","sandbox://provenance","sandbox://provider-status","sandbox://database-status","sandbox://rate-limits","sandbox://audit","sandbox://templates","sandbox://mcp/tools","sandbox://api-tests","sandbox://openapi/imports","sandbox://network/sites","sandbox://network/compliance","sandbox://openapi","sandbox://llms","sandbox://trust-policy","agent-policy://summary","agent-policy://platforms","agent-policy://robots","agent-policy://ai-policy","agent-policy://trust-policy"],"prompts":["create_sandbox_lifecycle_plan","create_sandbox_test_plan","explain_sandbox_result","debug_command_failure","generate_spec_validation_plan","generate_eval_run_plan","generate_browserops_test_plan","generate_agentui_render_test","generate_phorm_prototype_prompt","create_fingerprint_redaction_test","create_trace_span_completion_example","explain_sandbox_security","create_sandbox_report","explain_agent_policy","human_machine_sandbox_handoff"],"trustedDomains":["platphormnews.com","*.platphormnews.com"],"routeStandard":["/api/health","/api/v1/health","/api/docs","/openapi.yaml","/asyncapi.yaml","/llms.txt","/llms-full.txt","/llms-index.json","/robots.txt","/sitemap.xml","/sitemap-index.xml","/rss.xml","/feed.xml","/manifest.webmanifest","/.well-known/web4.json","/.well-known/provenance.json","/.well-known/mcp.json","/.well-known/agents.json","/.well-known/agent-policy.json","/.well-known/ai-policy.json","/.well-known/ai-plugin.json","/.well-known/security.txt","/.well-known/trust.json","/api/mcp"],"integrations":{"platphormRoot":{"service":"platphormnews.com","status":"live-or-degraded","purpose":"root network graph and public manifest"},"spec":{"service":"spec.platphormnews.com","status":"degraded-until-configured","purpose":"OpenAPI/spec validation"},"evals":{"service":"evals.platphormnews.com","status":"degraded-until-configured","purpose":"release gates and scoring"},"mcp":{"service":"mcp.platphormnews.com","status":"live-or-degraded","purpose":"MCP tool discovery and tool-call testing"},"claws":{"service":"claws.platphormnews.com","status":"degraded-until-configured","purpose":"remediation workflow dry-runs"},"json":{"service":"json.platphormnews.com","status":"local-validator-available","purpose":"JSON validation and formatting"},"xml":{"service":"xml.platphormnews.com","status":"local-validator-available","purpose":"XML, RSS, Atom, and sitemap validation"},"markdown":{"service":"markdown.platphormnews.com","status":"local-validator-available","purpose":"Markdown report validation and parsing"},"browserops":{"service":"browserops.platphormnews.com","status":"degraded-until-configured","purpose":"browser journey validation"},"agentui":{"service":"agentui.platphormnews.com","status":"degraded-until-configured","purpose":"MCP tool render payload validation"},"phorm":{"service":"phorm.platphormnews.com","status":"degraded-until-configured","purpose":"interface prototype generation"},"fingerprint":{"service":"fingerprint.platphormnews.com","status":"degraded-until-configured","purpose":"JA4 and public-safe fingerprint evidence checks"},"trace":{"service":"trace.platphormnews.com","status":"best-effort","purpose":"trace links and span export when configured"},"cli":{"service":"cli.platphormnews.com","status":"docs-available-dry-run-local","purpose":"platphormctl command generation and dry-run harnesses"},"monitor":{"service":"monitor.platphormnews.com","status":"degraded-until-configured","purpose":"provider and sandbox health summaries"},"docs":{"service":"docs.platphormnews.com","status":"degraded-until-configured","purpose":"publishing run reports"},"catalog":{"service":"catalog.platphormnews.com","status":"degraded-until-configured","purpose":"publishing reusable sandbox workflows"},"webhooks":{"service":"webhooks.platphormnews.com","status":"degraded-until-configured","purpose":"webhook replay delivery"},"sheets":{"service":"sheets.platphormnews.com","status":"degraded-until-configured","purpose":"structured reports"},"decks":{"service":"decks.platphormnews.com","status":"degraded-until-configured","purpose":"presentation summaries"}},"ja4DigestPolicy":"x-vercel-ja4-digest is hashed before public display and never emitted raw in public artifacts.","trustPolicy":"Web sandbox exploration, public-safe dry-run planning, public-safe template discovery, browser-based local drafts, validation, trusted-domain discovery, standard route compliance, Vercel metadata capture, trace-linked public evidence, and MCP/API test discovery are intentionally supported for public read-only debugging and operator workflows. Provider-backed sandbox creation, command execution, file reads and writes, snapshots, publishing, global policy changes, provider credential changes, unbounded compute, raw audit export, registry mutation, deployment mutation, and sensitive administrative actions require PLATPHORM_API_KEY.","updatedAt":"2026-06-06T01:09:13.063Z"}