{"service":"phorm","version":"0.6.0","baseUrl":"https://phorm.platphormnews.com","endpoints":["/api/health","/api/v1/health","/api/docs","/api/v1/docs","/openapi.json","/openapi.yaml","/llms.txt","/llms-full.txt","/llms-index.json","/rss.xml","/feed.xml","/atom.xml","/sitemap.xml","/sitemap-main.xml","/sitemap-full.xml","/sitemap-index.xml","/sitemap-network.xml","/humans.txt","/attribution.json","/index.jsonld","/.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/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","/api/v1/mcp"],"auth":{"sharedKey":"PLATPHORM_API_KEY","acceptedHeaders":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"]},"designs":{"serverPersistence":{"mode":"aurora_postgresql","source":"aurora","databaseConfigured":true,"status":"configured","durable":true,"tables":["phorm_designs","phorm_prompts","phorm_artifacts","phorm_reviews","phorm_generation_runs"],"message":"Protected server records use Phorm-owned tables in the shared PlatPhorm Aurora PostgreSQL cluster."},"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-data-pipeline","slug":"data-pipeline","name":"Data Pipeline Studio","category":"data","tags":["data","pipeline","lineage","quality","workflow"],"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":["get_phorm_info","list_designs","get_design","create_design_draft","create_design","generate_design","generate_design_from_prompt","generate_layout","generate_variants","generate_from_schema","generate_from_mcp_tool","generate_from_openapi_operation","review_design","preview_design","export_design","list_templates","get_template","instantiate_template","preview_agentui_handoff","validate_agentui_compatibility","get_integration_status","list_platform_integrations","get_platform_integration","list_cli_examples","get_cli_example","get_health","get_info","get_route_compliance","get_discovery_compliance","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","save_design","update_design","delete_design","publish_design"],"resources":["phorm://designs","phorm://design/{id}","phorm://templates","phorm://template/{id}","phorm://integrations","phorm://agentui","phorm://cli","phorm://exports","phorm://openapi","phorm://llms","phorm://trust-policy","agent-policy://summary","agent-policy://platforms","agent-policy://robots","agent-policy://ai-policy","agent-policy://trust-policy"],"prompts":["create_interface_design","create_mobile_first_design","create_mcp_tool_ui","create_openapi_operation_ui","review_design","improve_design_for_mobile","generate_agentui_handoff","create_browserops_test_plan","create_evals_rubric","generate_phorm_template","human_machine_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","/api/v1/docs","/openapi.json","/openapi.yaml","/openapi.yml","/llms.txt","/llms-full.txt","/llms-index.json","/llm-index.json","/robots.txt","/sitemap.xml","/sitemap-main.xml","/sitemap-full.xml","/sitemap-index.xml","/sitemap-network.xml","/rss.xml","/feed.xml","/atom.xml","/humans.txt","/attribution.json","/index.jsonld","/manifest.json","/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","/.well-known/llms.txt","/.well-known/llms-full.txt","/.well-known/llms-index.json","/.well-known/sitemap.xml","/.well-known/sitemap-full.xml","/.well-known/sitemap-index.xml","/api/mcp","/api/v1/mcp","/api/network/graph"],"integrations":[{"id":"files","name":"Files","url":"https://files.platphormnews.com","purpose":"Portable design files and public artifacts","status":"available","health":"public surface documented","openapiStatus":"linked","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":null,"traceLink":"https://trace.platphormnews.com","exampleAction":"Open Files"},{"id":"docs","name":"Docs","url":"https://docs.platphormnews.com","purpose":"Design documentation and handoff guidance","status":"available","health":"public surface documented","openapiStatus":"linked","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":null,"traceLink":"https://trace.platphormnews.com","exampleAction":"Open Docs"},{"id":"ascii","name":"ASCII","url":"https://ascii.platphormnews.com","purpose":"Text-first wireframes and ASCII output","status":"available","health":"public surface documented","openapiStatus":"linked","mcpStatus":"degraded","lastChecked":null,"capabilities":[],"degradedReason":null,"traceLink":"https://trace.platphormnews.com","exampleAction":"Open ASCII"},{"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"}],"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-07-23T02:00:55.847Z"}