{"ok":true,"data":{"ok":true,"status":"ready","traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","generatedAt":"2026-07-09T10:10:19.917Z","demoContract":"{\n  \"openapi\": \"3.1.0\",\n  \"info\": {\n    \"title\": \"PlatPhorm Demo Contract\",\n    \"version\": \"2026.06.01\",\n    \"description\": \"Public-safe demo contract for Spec, MCP, AgentUI, Sandbox, and Evals handoff verification.\"\n  },\n  \"servers\": [\n    {\n      \"url\": \"https://spec.platphormnews.com\"\n    }\n  ],\n  \"paths\": {\n    \"/api/health\": {\n      \"get\": {\n        \"operationId\": \"getSpecHealth\",\n        \"summary\": \"Read public Spec health.\",\n        \"responses\": {\n          \"200\": {\n            \"description\": \"Health payload\",\n            \"content\": {\n              \"application/json\": {\n                \"schema\": {\n                  \"$ref\": \"#/components/schemas/SpecHealth\"\n                }\n              }\n            }\n          }\n        }\n      }\n    },\n    \"/api/mcp\": {\n      \"post\": {\n        \"operationId\": \"callSpecMcp\",\n        \"summary\": \"Call the public-safe Spec MCP endpoint.\",\n        \"requestBody\": {\n          \"required\": true,\n          \"content\": {\n            \"application/json\": {\n              \"schema\": {\n                \"type\": \"object\",\n                \"required\": [\n                  \"jsonrpc\",\n                  \"method\"\n                ],\n                \"properties\": {\n                  \"jsonrpc\": {\n                    \"type\": \"string\",\n                    \"enum\": [\n                      \"2.0\"\n                    ]\n                  },\n                  \"id\": {\n                    \"type\": \"string\"\n                  },\n                  \"method\": {\n                    \"type\": \"string\"\n                  }\n                }\n              }\n            }\n          }\n        },\n        \"responses\": {\n          \"200\": {\n            \"description\": \"JSON-RPC response\"\n          },\n          \"400\": {\n            \"description\": \"Invalid JSON-RPC request\"\n          }\n        }\n      }\n    }\n  },\n  \"components\": {\n    \"schemas\": {\n      \"SpecHealth\": {\n        \"type\": \"object\",\n        \"required\": [\n          \"service\",\n          \"status\",\n          \"timestamp\"\n        ],\n        \"properties\": {\n          \"service\": {\n            \"type\": \"string\",\n            \"description\": \"Service identifier.\"\n          },\n          \"status\": {\n            \"type\": \"string\",\n            \"enum\": [\n              \"healthy\",\n              \"degraded\",\n              \"unavailable\"\n            ]\n          },\n          \"timestamp\": {\n            \"type\": \"string\",\n            \"format\": \"date-time\"\n          }\n        }\n      }\n    }\n  }\n}","targets":[{"id":"spec","name":"Spec Workbench","baseUrl":"https://spec.platphormnews.com","role":"Validate, normalize, generate artifacts, and create evidence before remote tools run.","artifactType":null,"publicRoute":"/api/v1/validate","protectedRoute":"/api/v1/contracts","demoStep":"Validate the source contract and produce trace-linked evidence."},{"id":"root","name":"PlatPhorm Root Graph","baseUrl":"https://platphormnews.com","role":"Provide network topology and discover contract source URLs for import.","artifactType":"cli_command","publicRoute":"https://platphormnews.com/api/network/graph","protectedRoute":"/api/v1/import/network","demoStep":"Use root graph discovery as public provenance for source selection."},{"id":"mcp","name":"MCP Gateway","baseUrl":"https://mcp.platphormnews.com","role":"Receive validated MCP tool candidates and expose public MCP capability discovery.","artifactType":"mcp_tool","publicRoute":"https://mcp.platphormnews.com/.well-known/mcp.json","protectedRoute":"/api/v1/handoffs/dispatch","demoStep":"Generate an MCP tool candidate from the parsed OpenAPI operation."},{"id":"agentui","name":"AgentUI","baseUrl":"https://agentui.platphormnews.com","role":"Render generated forms and protected action panels from contract schemas.","artifactType":"agentui_form","publicRoute":"/api/v1/agentui/preview-form","protectedRoute":"/api/v1/agentui/send-form","demoStep":"Generate a form payload suitable for local AgentUI preview."},{"id":"sandbox","name":"Sandbox","baseUrl":"https://sandbox.platphormnews.com","role":"Run generated contract tests only when protected execution evidence exists.","artifactType":"sandbox_script","publicRoute":"/api/v1/sandbox/generate-test","protectedRoute":"/api/v1/sandbox/run-test","demoStep":"Generate a deterministic Sandbox script without claiming command output."},{"id":"evals","name":"Evals","baseUrl":"https://evals.platphormnews.com","role":"Score contract readiness, release gates, and generated artifact behavior.","artifactType":"eval_suite","publicRoute":"/api/v1/evals/generate-suite","protectedRoute":"/api/v1/evals/trigger","demoStep":"Generate a contract eval suite draft from validation evidence."}],"handoffs":[{"id":"handoff_spec_fd2e05f5-d9f","target":{"id":"spec","name":"Spec Workbench","baseUrl":"https://spec.platphormnews.com","role":"Validate, normalize, generate artifacts, and create evidence before remote tools run.","artifactType":null,"publicRoute":"/api/v1/validate","protectedRoute":"/api/v1/contracts","demoStep":"Validate the source contract and produce trace-linked evidence."},"state":"completed","publicSafe":true,"protected":true,"sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","artifact":null,"evidence":{"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","validationStatus":"valid","generatedAt":"2026-07-09T10:10:19.917Z","source":"demo-api","noRemoteCompletionClaimed":false},"nextAction":"Open the Workbench, validate the contract, then use generated evidence for downstream tools.","operatorCommand":"platphormctl spec validate c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656.json","reason":null},{"id":"handoff_root_fd2e05f5-d9f","target":{"id":"root","name":"PlatPhorm Root Graph","baseUrl":"https://platphormnews.com","role":"Provide network topology and discover contract source URLs for import.","artifactType":"cli_command","publicRoute":"https://platphormnews.com/api/network/graph","protectedRoute":"/api/v1/import/network","demoStep":"Use root graph discovery as public provenance for source selection."},"state":"preview_ready","publicSafe":true,"protected":true,"sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","artifact":{"id":"cli_command_c01ac96423b2_fd2e05f5","type":"cli_command","filename":"platphorm-demo-contract.platphormctl.md","content":"```bash\nplatphormctl site inspect spec\nplatphormctl mcp validate spec\nplatphormctl policy inspect spec\nplatphormctl spec validate c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656.json\nplatphormctl spec diff <a> <b>\nplatphormctl spec generate-tests spec\nplatphormctl harness run spec-evals-browserops-loop --dry-run\nplatphormctl harness run developer-validation --target https://spec.platphormnews.com --dry-run\n```","warnings":[],"limitations":[]},"evidence":{"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","validationStatus":"valid","generatedAt":"2026-07-09T10:10:19.917Z","source":"demo-api","noRemoteCompletionClaimed":true},"nextAction":"Preview platphorm-demo-contract.platphormctl.md, then dispatch through /api/v1/import/network when protected credentials are available.","operatorCommand":"platphormctl site inspect platphormnews --best-effort","reason":null},{"id":"handoff_mcp_fd2e05f5-d9f","target":{"id":"mcp","name":"MCP Gateway","baseUrl":"https://mcp.platphormnews.com","role":"Receive validated MCP tool candidates and expose public MCP capability discovery.","artifactType":"mcp_tool","publicRoute":"https://mcp.platphormnews.com/.well-known/mcp.json","protectedRoute":"/api/v1/handoffs/dispatch","demoStep":"Generate an MCP tool candidate from the parsed OpenAPI operation."},"state":"preview_ready","publicSafe":true,"protected":true,"sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","artifact":{"id":"mcp_tool_c01ac96423b2_fd2e05f5","type":"mcp_tool","filename":"platphorm-demo-contract.mcp-tool.json","content":"{\n  \"name\": \"getSpecHealth\",\n  \"description\": \"Read public Spec health.\",\n  \"inputSchema\": {\n    \"type\": \"object\",\n    \"properties\": {},\n    \"additionalProperties\": false\n  },\n  \"annotations\": {\n    \"publicSafe\": true,\n    \"protected\": false,\n    \"sourceOperation\": \"GET /api/health\"\n  }\n}","warnings":[],"limitations":[]},"evidence":{"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","validationStatus":"valid","generatedAt":"2026-07-09T10:10:19.917Z","source":"demo-api","noRemoteCompletionClaimed":true},"nextAction":"Preview platphorm-demo-contract.mcp-tool.json, then dispatch through /api/v1/handoffs/dispatch when protected credentials are available.","operatorCommand":"platphormctl spec generate mcp-tool c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656.json","reason":null},{"id":"handoff_agentui_fd2e05f5-d9f","target":{"id":"agentui","name":"AgentUI","baseUrl":"https://agentui.platphormnews.com","role":"Render generated forms and protected action panels from contract schemas.","artifactType":"agentui_form","publicRoute":"/api/v1/agentui/preview-form","protectedRoute":"/api/v1/agentui/send-form","demoStep":"Generate a form payload suitable for local AgentUI preview."},"state":"preview_ready","publicSafe":true,"protected":true,"sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","artifact":{"id":"agentui_form_c01ac96423b2_fd2e05f5","type":"agentui_form","filename":"platphorm-demo-contract.agentui-form.json","content":"{\n  \"version\": \"agentui.form.v1\",\n  \"title\": \"PlatPhorm Demo Contract\",\n  \"sourceSpecHash\": \"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656\",\n  \"publicSafe\": true,\n  \"protectedActionPolicy\": \"Remote send requires PLATPHORM_API_KEY; local preview is public-safe.\",\n  \"schema\": {\n    \"type\": \"object\",\n    \"required\": [\n      \"service\",\n      \"status\",\n      \"timestamp\"\n    ],\n    \"properties\": {\n      \"service\": {\n        \"type\": \"string\",\n        \"description\": \"Service identifier.\"\n      },\n      \"status\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"healthy\",\n          \"degraded\",\n          \"unavailable\"\n        ]\n      },\n      \"timestamp\": {\n        \"type\": \"string\",\n        \"format\": \"date-time\"\n      }\n    }\n  }\n}","warnings":[],"limitations":[]},"evidence":{"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","validationStatus":"valid","generatedAt":"2026-07-09T10:10:19.917Z","source":"demo-api","noRemoteCompletionClaimed":true},"nextAction":"Preview platphorm-demo-contract.agentui-form.json, then dispatch through /api/v1/agentui/send-form when protected credentials are available.","operatorCommand":"platphormctl spec generate agentui-form c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656.json","reason":null},{"id":"handoff_sandbox_fd2e05f5-d9f","target":{"id":"sandbox","name":"Sandbox","baseUrl":"https://sandbox.platphormnews.com","role":"Run generated contract tests only when protected execution evidence exists.","artifactType":"sandbox_script","publicRoute":"/api/v1/sandbox/generate-test","protectedRoute":"/api/v1/sandbox/run-test","demoStep":"Generate a deterministic Sandbox script without claiming command output."},"state":"preview_ready","publicSafe":true,"protected":true,"sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","artifact":{"id":"sandbox_script_c01ac96423b2_fd2e05f5","type":"sandbox_script","filename":"platphorm-demo-contract.sandbox-test.js","content":"const assert = require(\"node:assert/strict\")\n\nconst contract = {\n  \"type\": \"openapi\",\n  \"title\": \"PlatPhorm Demo Contract\",\n  \"hash\": \"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656\"\n}\n\nassert.ok(contract.hash, \"source spec hash is required\")\nassert.ok([\"openapi\",\"asyncapi\",\"jsonschema\",\"mcp\",\"webhook\",\"event\"].includes(contract.type), \"supported contract type\")\nconsole.log(JSON.stringify({ ok: true, data: { contract } }))\n","warnings":[],"limitations":[]},"evidence":{"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","validationStatus":"valid","generatedAt":"2026-07-09T10:10:19.917Z","source":"demo-api","noRemoteCompletionClaimed":true},"nextAction":"Preview platphorm-demo-contract.sandbox-test.js, then dispatch through /api/v1/sandbox/run-test when protected credentials are available.","operatorCommand":"platphormctl spec generate sandbox-test c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656.json","reason":null},{"id":"handoff_evals_fd2e05f5-d9f","target":{"id":"evals","name":"Evals","baseUrl":"https://evals.platphormnews.com","role":"Score contract readiness, release gates, and generated artifact behavior.","artifactType":"eval_suite","publicRoute":"/api/v1/evals/generate-suite","protectedRoute":"/api/v1/evals/trigger","demoStep":"Generate a contract eval suite draft from validation evidence."},"state":"preview_ready","publicSafe":true,"protected":true,"sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","artifact":{"id":"eval_suite_c01ac96423b2_fd2e05f5","type":"eval_suite","filename":"platphorm-demo-contract.evals.json","content":"{\n  \"suite\": \"platphorm-demo-contract-contract-evals\",\n  \"sourceSpecHash\": \"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656\",\n  \"cases\": [\n    {\n      \"id\": \"contract-validates\",\n      \"assertion\": \"Spec validation status is valid, warn, or degraded with explicit reasons.\"\n    },\n    {\n      \"id\": \"public-protected-boundary\",\n      \"assertion\": \"Protected actions require PLATPHORM_API_KEY.\"\n    },\n    {\n      \"id\": \"trace-metadata\",\n      \"assertion\": \"Generated handoffs include traceId evidence.\"\n    }\n  ]\n}","warnings":[],"limitations":[]},"evidence":{"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","validationStatus":"valid","generatedAt":"2026-07-09T10:10:19.917Z","source":"demo-api","noRemoteCompletionClaimed":true},"nextAction":"Preview platphorm-demo-contract.evals.json, then dispatch through /api/v1/evals/trigger when protected credentials are available.","operatorCommand":"platphormctl spec release-gate c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","reason":null}],"artifacts":[{"id":"cli_command_c01ac96423b2_fd2e05f5","type":"cli_command","filename":"platphorm-demo-contract.platphormctl.md","content":"```bash\nplatphormctl site inspect spec\nplatphormctl mcp validate spec\nplatphormctl policy inspect spec\nplatphormctl spec validate c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656.json\nplatphormctl spec diff <a> <b>\nplatphormctl spec generate-tests spec\nplatphormctl harness run spec-evals-browserops-loop --dry-run\nplatphormctl harness run developer-validation --target https://spec.platphormnews.com --dry-run\n```","sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","generatedAt":"2026-07-09T10:10:19.921Z","generatorVersion":"spec-workbench-phase3-artifacts-2026-05-20","warnings":[],"limitations":[],"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","publicSafe":true,"protected":false},{"id":"mcp_tool_c01ac96423b2_fd2e05f5","type":"mcp_tool","filename":"platphorm-demo-contract.mcp-tool.json","content":"{\n  \"name\": \"getSpecHealth\",\n  \"description\": \"Read public Spec health.\",\n  \"inputSchema\": {\n    \"type\": \"object\",\n    \"properties\": {},\n    \"additionalProperties\": false\n  },\n  \"annotations\": {\n    \"publicSafe\": true,\n    \"protected\": false,\n    \"sourceOperation\": \"GET /api/health\"\n  }\n}","sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","generatedAt":"2026-07-09T10:10:19.921Z","generatorVersion":"spec-workbench-phase3-artifacts-2026-05-20","warnings":[],"limitations":[],"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","publicSafe":true,"protected":false},{"id":"agentui_form_c01ac96423b2_fd2e05f5","type":"agentui_form","filename":"platphorm-demo-contract.agentui-form.json","content":"{\n  \"version\": \"agentui.form.v1\",\n  \"title\": \"PlatPhorm Demo Contract\",\n  \"sourceSpecHash\": \"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656\",\n  \"publicSafe\": true,\n  \"protectedActionPolicy\": \"Remote send requires PLATPHORM_API_KEY; local preview is public-safe.\",\n  \"schema\": {\n    \"type\": \"object\",\n    \"required\": [\n      \"service\",\n      \"status\",\n      \"timestamp\"\n    ],\n    \"properties\": {\n      \"service\": {\n        \"type\": \"string\",\n        \"description\": \"Service identifier.\"\n      },\n      \"status\": {\n        \"type\": \"string\",\n        \"enum\": [\n          \"healthy\",\n          \"degraded\",\n          \"unavailable\"\n        ]\n      },\n      \"timestamp\": {\n        \"type\": \"string\",\n        \"format\": \"date-time\"\n      }\n    }\n  }\n}","sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","generatedAt":"2026-07-09T10:10:19.921Z","generatorVersion":"spec-workbench-phase3-artifacts-2026-05-20","warnings":[],"limitations":[],"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","publicSafe":true,"protected":false},{"id":"sandbox_script_c01ac96423b2_fd2e05f5","type":"sandbox_script","filename":"platphorm-demo-contract.sandbox-test.js","content":"const assert = require(\"node:assert/strict\")\n\nconst contract = {\n  \"type\": \"openapi\",\n  \"title\": \"PlatPhorm Demo Contract\",\n  \"hash\": \"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656\"\n}\n\nassert.ok(contract.hash, \"source spec hash is required\")\nassert.ok([\"openapi\",\"asyncapi\",\"jsonschema\",\"mcp\",\"webhook\",\"event\"].includes(contract.type), \"supported contract type\")\nconsole.log(JSON.stringify({ ok: true, data: { contract } }))\n","sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","generatedAt":"2026-07-09T10:10:19.921Z","generatorVersion":"spec-workbench-phase3-artifacts-2026-05-20","warnings":[],"limitations":[],"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","publicSafe":true,"protected":false},{"id":"eval_suite_c01ac96423b2_fd2e05f5","type":"eval_suite","filename":"platphorm-demo-contract.evals.json","content":"{\n  \"suite\": \"platphorm-demo-contract-contract-evals\",\n  \"sourceSpecHash\": \"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656\",\n  \"cases\": [\n    {\n      \"id\": \"contract-validates\",\n      \"assertion\": \"Spec validation status is valid, warn, or degraded with explicit reasons.\"\n    },\n    {\n      \"id\": \"public-protected-boundary\",\n      \"assertion\": \"Protected actions require PLATPHORM_API_KEY.\"\n    },\n    {\n      \"id\": \"trace-metadata\",\n      \"assertion\": \"Generated handoffs include traceId evidence.\"\n    }\n  ]\n}","sourceSpecHash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","generatedAt":"2026-07-09T10:10:19.921Z","generatorVersion":"spec-workbench-phase3-artifacts-2026-05-20","warnings":[],"limitations":[],"traceId":"fd2e05f5-d9fb-4ca5-a4bd-b4fb5d06e848","publicSafe":true,"protected":false}],"validation":{"isValid":true,"errors":[],"warnings":[],"info":[],"status":"valid","detectedType":"openapi","validator":"spec-workbench-openapi","validatorVersion":"spec-workbench-phase3-2026-05-20","durationMs":0,"suggestions":[],"normalizedDocument":{"openapi":"3.1.0","info":{"title":"PlatPhorm Demo Contract","version":"2026.06.01","description":"Public-safe demo contract for Spec, MCP, AgentUI, Sandbox, and Evals handoff verification."},"servers":[{"url":"https://spec.platphormnews.com"}],"paths":{"/api/health":{"get":{"operationId":"getSpecHealth","summary":"Read public Spec health.","responses":{"200":{"description":"Health payload","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SpecHealth"}}}}}}},"/api/mcp":{"post":{"operationId":"callSpecMcp","summary":"Call the public-safe Spec MCP endpoint.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["jsonrpc","method"],"properties":{"jsonrpc":{"type":"string","enum":["2.0"]},"id":{"type":"string"},"method":{"type":"string"}}}}}},"responses":{"200":{"description":"JSON-RPC response"},"400":{"description":"Invalid JSON-RPC request"}}}}},"components":{"schemas":{"SpecHealth":{"type":"object","required":["service","status","timestamp"],"properties":{"service":{"type":"string","description":"Service identifier."},"status":{"type":"string","enum":["healthy","degraded","unavailable"]},"timestamp":{"type":"string","format":"date-time"}}}}}},"redactionSummary":{"secretLikeValues":0,"rawVercelJa4Digest":false}},"errors":[],"source":{"title":"PlatPhorm Demo Contract","detectedType":"openapi","hash":"c01ac96423b2698b1d91b9586ff5952934467a21689fd1337c290d4ad1e4b656","validation":{"ok":true,"status":"valid","errors":0,"warnings":0}},"policy":{"publicPreview":"Validation, generation previews, demo runway evidence, and public discovery are available without login.","protectedDispatch":"Remote dispatch, durable registry mutation, execution, and scoring require PLATPHORM_API_KEY.","noFakeExecution":"Spec does not claim Evals scoring, MCP publishing, Sandbox execution, or AgentUI remote rendering unless downstream evidence exists."}}}