{"service":"phorm","version":"0.1.0","baseUrl":"https://phorm.platphormnews.com","endpoints":["/api/health","/api/v1/health","/api/docs","/openapi.json","/openapi.yaml","/llms.txt","/llms-full.txt","/llms-index.json","/rss.xml","/feed.xml","/sitemap.xml","/sitemap-main.xml","/sitemap-index.xml","/.well-known/agents.json","/.well-known/agent-policy.json","/.well-known/ai-policy.json","/.well-known/trust.json","/api/v1/designs","/api/v1/designs/{id}","/api/v1/templates","/api/v1/templates/{id}","/api/v1/templates/{id}/instantiate","/api/v1/generate/design","/api/v1/generate/layout","/api/v1/generate/variants","/api/v1/generate/from-schema","/api/v1/generate/from-mcp-tool","/api/v1/generate/from-openapi-operation","/api/v1/generate","/api/v1/generation-runs/{id}","/api/v1/designs/{id}/prompts","/api/v1/designs/{id}/export","/api/v1/designs/{id}/review","/api/v1/designs/{id}/preview","/api/v1/preview","/api/v1/preview/responsive","/api/v1/preview/accessibility","/api/v1/preview/export","/api/v1/designs/{id}/screenshot","/api/v1/designs/{id}/review/browserops","/api/v1/designs/{id}/review/evals","/api/v1/designs/{id}/reviews","/api/v1/network/graph","/api/v1/network/sites","/api/v1/network/trusted-domains","/api/v1/network/route-compliance","/api/v1/network/discovery-compliance","/api/v1/network/graph/sync","/api/v1/integrations","/api/v1/integrations/status","/api/v1/integrations/agentui/status","/api/v1/agentui/preview-handoff","/api/v1/agentui/create-workflow","/api/v1/agentui/validate-design","/api/v1/agentui/handoffs/{id}","/api/v1/integrations/cli/status","/api/v1/cli/examples","/api/v1/cli/examples/{id}","/api/v1/agent-policy","/api/v1/agent-policy/platforms","/api/v1/agent-policy/platforms/{id}","/api/v1/agent-policy/robots","/api/v1/agent-policy/summary","/api/mcp"],"auth":{"sharedKey":"PLATPHORM_API_KEY","acceptedHeaders":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]},"designs":{"serverPersistence":{"mode":"degraded_server_memory","databaseConfigured":false,"status":"degraded","message":"Canonical database persistence is not wired in this Phase 1 slice. Protected server writes use process memory and public UI drafts use browser storage with explicit local-only state."},"localDraftPolicy":"Use browser IndexedDB/local storage only for non-sensitive local drafts and UI state."},"templates":[{"id":"template-product-dashboard","slug":"product-dashboard","name":"Product Dashboard","category":"dashboard","tags":["dashboard","operations","review","status"],"status":"public"},{"id":"template-prompt-interface","slug":"prompt-interface","name":"Prompt-To-Interface","category":"tool","tags":["prompt","agent","preview","iteration"],"status":"public"},{"id":"template-docs-handoff","slug":"docs-handoff","name":"Docs Handoff","category":"docs","tags":["handoff","documentation","brief","states"],"status":"public"},{"id":"template-visual-report","slug":"visual-report","name":"Visual Review Report","category":"report","tags":["review","accessibility","screenshot","report"],"status":"public"},{"id":"template-mcp-tool-form","slug":"mcp-tool-form","name":"MCP Tool Form","category":"form","tags":["mcp","schema","form","agentui"],"status":"public"},{"id":"template-openapi-operation-form","slug":"openapi-operation-form","name":"OpenAPI Operation Form","category":"api","tags":["openapi","api","form","response"],"status":"public"},{"id":"template-agentui-workflow","slug":"agentui-workflow","name":"AgentUI Workflow","category":"agentui","tags":["agentui","workflow","approval","protected-action"],"status":"public"},{"id":"template-browserops-evidence-dashboard","slug":"browserops-evidence-dashboard","name":"BrowserOps Evidence Dashboard","category":"browserops","tags":["browserops","evidence","screenshots","mobile"],"status":"public"},{"id":"template-evals-scorecard","slug":"evals-scorecard","name":"Evals Scorecard","category":"evals","tags":["evals","scorecard","quality","rubric"],"status":"public"},{"id":"template-sandbox-lifecycle-demo","slug":"sandbox-lifecycle-demo","name":"Sandbox Lifecycle Demo","category":"sandbox","tags":["sandbox","prototype","dry-run","states"],"status":"public"},{"id":"template-trace-timeline","slug":"trace-timeline","name":"Trace Timeline","category":"trace","tags":["trace","timeline","spans","observability"],"status":"public"},{"id":"template-api-catalog-page","slug":"api-catalog-page","name":"API Catalog Page","category":"api","tags":["catalog","api","capabilities","docs"],"status":"public"},{"id":"template-opencontent-submission-page","slug":"opencontent-submission-page","name":"OpenContent Submission Page","category":"content","tags":["opencontent","submission","preview","publish"],"status":"public"},{"id":"template-podcast-episode-page","slug":"podcast-episode-page","name":"Podcast Episode Page","category":"content","tags":["podcasts","rss","reader","media"],"status":"public"},{"id":"template-docs-report","slug":"docs-report","name":"Docs Report","category":"docs","tags":["docs","report","handoff","decisions"],"status":"public"},{"id":"template-sheets-dashboard","slug":"sheets-dashboard","name":"Sheets Dashboard","category":"data","tags":["sheets","dashboard","table","report"],"status":"public"},{"id":"template-echo-findings-dashboard","slug":"echo-findings-dashboard","name":"Echo Findings Dashboard","category":"dashboard","tags":["findings","api","review","catalog"],"status":"public"},{"id":"template-dictionary-term-page","slug":"dictionary-term-page","name":"Dictionary Term Page","category":"content","tags":["dictionary","terms","reader","docs"],"status":"public"},{"id":"template-emoji-proposal-form","slug":"emoji-proposal-form","name":"Emoji Proposal Form","category":"form","tags":["emoji","proposal","form","scoring"],"status":"public"},{"id":"template-reader-translation-widget","slug":"reader-translation-widget","name":"Reader Translation Widget","category":"tool","tags":["reader","translation","widget","content"],"status":"public"},{"id":"template-raindeer-crm-dashboard","slug":"raindeer-crm-dashboard","name":"Raindeer CRM Dashboard","category":"dashboard","tags":["crm","dashboard","accounts","workflow"],"status":"public"},{"id":"template-monitor-operations-dashboard","slug":"monitor-operations-dashboard","name":"Monitor Operations Dashboard","category":"dashboard","tags":["monitor","uptime","status","remediation"],"status":"public"},{"id":"template-kanban-board","slug":"kanban-board","name":"Kanban Board","category":"workflow","tags":["kanban","board","workflow","mobile"],"status":"public"},{"id":"template-calendar-event-flow","slug":"calendar-event-flow","name":"Calendar Event Flow","category":"workflow","tags":["calendar","event","workflow","form"],"status":"public"},{"id":"template-mobile-command-center","slug":"mobile-command-center","name":"Mobile Command Center","category":"mobile","tags":["mobile","command-center","touch","responsive"],"status":"public"},{"id":"template-cli-command-recipe-page","slug":"cli-command-recipe-page","name":"CLI Command Recipe Page","category":"docs","tags":["cli","platphormctl","recipe","docs"],"status":"public"}],"artifacts":["json","markdown","html","react","tailwind","svg","ascii","agentui","docs-report","browserops-plan","evals-rubric","platphormctl"],"reviews":["local_accessibility","browserops_degraded","evals_degraded"],"tools":["list_designs","get_design","create_design","update_design","export_design","list_templates","instantiate_template","generate_design_from_prompt","get_design_preview","capture_design_screenshot","run_browserops_review","run_evals_review","list_design_artifacts","get_design_artifact","generate_brand_kit","generate_theme_tokens","generate_component_composition","generate_design_report","create_docs_report","create_sheet_report","create_deck_summary","get_route_compliance","get_discovery_compliance"],"resources":["phorm://designs","phorm://design/{id}","phorm://templates","phorm://artifacts","phorm://artifact/{id}","phorm://brand-kits","phorm://theme-tokens","phorm://reviews","phorm://openapi","phorm://llms","phorm://trust-policy"],"prompts":["create_design_brief","generate_design_from_goal","improve_landing_page_ux","generate_component_layout","generate_brand_kit","review_design_accessibility","summarize_design_review","create_phorm_handoff"],"trustedDomains":["*.platphormnews.com"],"canonicalDomains":{"service":"https://phorm.platphormnews.com","designFacing":"https://design.platphormnews.com","policy":"phorm.platphormnews.com is canonical for sitemap/OpenAPI/metadata; design.platphormnews.com is the polished design-facing product domain and must canonicalize consistently."},"cliExamples":[{"id":"site-inspect","title":"Inspect Phorm site","description":"Read public route, discovery, and health status.","command":"platphormctl site inspect phorm --best-effort","publicSafe":true,"protected":false},{"id":"mcp-validate","title":"Validate Phorm MCP","description":"Validate JSON-RPC metadata, tools/list, resources/list, and prompts/list.","command":"platphormctl mcp validate phorm --best-effort","publicSafe":true,"protected":false},{"id":"policy-inspect","title":"Inspect Phorm policy","description":"Review public/protected boundary, trust policy, robots, and agent policy.","command":"platphormctl policy inspect phorm --best-effort","publicSafe":true,"protected":false},{"id":"prompt-design","title":"Generate a design draft","description":"Create a deterministic prompt-to-interface Phorm draft.","command":"platphormctl phorm design --prompt \"Create an MCP tool form\"","publicSafe":true,"protected":false},{"id":"export-json","title":"Export JSON artifact","description":"Export a real JSON design artifact by id.","command":"platphormctl phorm export <id> --format json","publicSafe":true,"protected":false},{"id":"send-agentui","title":"Send to AgentUI","description":"Create or preview a Phorm-to-AgentUI handoff.","command":"platphormctl phorm send-agentui <id> --protected --yes","publicSafe":false,"protected":true},{"id":"browserops-check","title":"BrowserOps check","description":"Run a best-effort browser check against the canonical domain.","command":"platphormctl browserops check https://phorm.platphormnews.com --best-effort","publicSafe":true,"protected":false},{"id":"agentui-harness","title":"AgentUI design harness","description":"Dry-run the Phorm AgentUI workflow validation harness.","command":"platphormctl harness run phorm-agentui-design-check --dry-run","publicSafe":true,"protected":false},{"id":"loop-harness","title":"Spec/Evals/BrowserOps loop","description":"Dry-run the end-to-end design validation loop.","command":"platphormctl harness run spec-evals-browserops-loop --target https://phorm.platphormnews.com --dry-run","publicSafe":true,"protected":false}],"routeStandard":["/api/health","/api/v1/health","/api/docs","/openapi.json","/openapi.yaml","/llms.txt","/llms-full.txt","/llms-index.json","/robots.txt","/sitemap.xml","/sitemap-main.xml","/sitemap-index.xml","/rss.xml","/feed.xml","/manifest.webmanifest","/.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":[{"id":"agentui","name":"AgentUI","url":"https://agentui.platphormnews.com","purpose":"First-class workflow/form handoff target","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Preview Phorm-to-AgentUI handoff"},{"id":"api","name":"API","url":"https://api.platphormnews.com","purpose":"API catalog and operation metadata","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open API"},{"id":"mcp","name":"MCP","url":"https://mcp.platphormnews.com","purpose":"Capability discovery and schema-backed tools","status":"available","health":"public surface documented","openapiStatus":"linked","mcpStatus":"canonical registry","lastChecked":null,"capabilities":[],"degradedReason":null,"traceLink":"https://trace.platphormnews.com","exampleAction":"Open MCP"},{"id":"spec","name":"Spec","url":"https://spec.platphormnews.com","purpose":"Design/spec validation","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Spec"},{"id":"evals","name":"Evals","url":"https://evals.platphormnews.com","purpose":"Design readiness scoring","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Evals"},{"id":"sandbox","name":"Sandbox","url":"https://sandbox.platphormnews.com","purpose":"Safe prototype replay and dry-runs","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Sandbox"},{"id":"browserops","name":"BrowserOps","url":"https://browserops.platphormnews.com","purpose":"Viewport, screenshot, accessibility, and journey checks","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open BrowserOps"},{"id":"claws","name":"Claws","url":"https://claws.platphormnews.com","purpose":"Agentic remediation workflows","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Claws"},{"id":"trace","name":"Trace","url":"https://trace.platphormnews.com","purpose":"Trace-linked design operations","status":"best_effort","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Trace"},{"id":"docs","name":"Docs","url":"https://docs.platphormnews.com","purpose":"Design reports and public handoff docs","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Docs"},{"id":"sheets","name":"Sheets","url":"https://sheets.platphormnews.com","purpose":"Structured design reports","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Sheets"},{"id":"catalog","name":"Catalog","url":"https://catalog.platphormnews.com","purpose":"Capability catalog entries","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Catalog"},{"id":"opencontent","name":"OpenContent","url":"https://opencontent.platphormnews.com","purpose":"Content submission and preview UI generation","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open OpenContent"},{"id":"podcasts","name":"Podcasts","url":"https://podcasts.platphormnews.com","purpose":"Episode and feed UI generation","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Podcasts"},{"id":"json","name":"JSON","url":"https://json.platphormnews.com","purpose":"JSON/schema-to-UI input source","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open JSON"},{"id":"xml","name":"XML","url":"https://xml.platphormnews.com","purpose":"XML tool UI and schema source","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open XML"},{"id":"markdown","name":"Markdown","url":"https://markdown.platphormnews.com","purpose":"Markdown outline-to-interface input","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Markdown"},{"id":"layout","name":"Layout","url":"https://layout.platphormnews.com","purpose":"Layout pattern and responsive behavior companion","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Layout"},{"id":"svg","name":"SVG","url":"https://svg.platphormnews.com","purpose":"SVG wireframe import/export","status":"available","health":"public surface documented","openapiStatus":"linked","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":null,"traceLink":"https://trace.platphormnews.com","exampleAction":"Open SVG"},{"id":"ascii","name":"ASCII","url":"https://ascii.platphormnews.com","purpose":"ASCII wireframe export and text blocks","status":"available","health":"public surface documented","openapiStatus":"linked","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":null,"traceLink":"https://trace.platphormnews.com","exampleAction":"Open ASCII"},{"id":"emoji","name":"Emoji","url":"https://emoji.platphormnews.com","purpose":"Emoji proposal and iconography templates","status":"available","health":"public surface documented","openapiStatus":"linked","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":null,"traceLink":"https://trace.platphormnews.com","exampleAction":"Open Emoji"},{"id":"reader","name":"Reader","url":"https://reader.platphormnews.com","purpose":"Reader widgets and content summaries","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Reader"},{"id":"insights","name":"Insights","url":"https://insights.platphormnews.com","purpose":"Design insight reports","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Insights"},{"id":"monitor","name":"Monitor","url":"https://monitor.platphormnews.com","purpose":"Availability/status design surfaces","status":"degraded","health":"not checked in this request","openapiStatus":"degraded","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":"No configured downstream adapter or live check result in this deployment.","traceLink":"https://trace.platphormnews.com","exampleAction":"Open Monitor"},{"id":"cli","name":"CLI","url":"https://cli.platphormnews.com","purpose":"platphormctl command recipes and validation harnesses","status":"available","health":"public surface documented","openapiStatus":"linked","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":null,"traceLink":"https://trace.platphormnews.com","exampleAction":"Open CLI"}],"trustPolicy":"Web dashboard, public-safe discovery, browser-based operations, trusted-domain discovery, standard route compliance, Vercel metadata capture, trace inspection, and agentic workflow discovery are intentionally supported for public read-only debugging and operator workflows. Mutating, administrative, ingestion, replay, fork, remediation, deployment, sync, test-triggering, reporting, and write actions require PLATPHORM_API_KEY.","updatedAt":"2026-05-25T09:22:14.668Z"}