{"service":"layout","version":"0.7.0","baseUrl":"https://layout.platphormnews.com","endpoints":[{"path":"/api/health","methods":["GET"],"description":"Standard public-safe health summary","boundary":"public-safe"},{"path":"/api/v1/health","methods":["GET"],"description":"Versioned public-safe health summary","boundary":"public-safe"},{"path":"/api/docs","methods":["GET"],"description":"OpenAPI 3.1 JSON document","boundary":"public-safe"},{"path":"/api/v1/templates","methods":["GET"],"description":"List real public layout templates","boundary":"public-safe"},{"path":"/api/v1/templates/{slug}","methods":["GET"],"description":"Fetch one template","boundary":"public-safe"},{"path":"/api/v1/layouts","methods":["GET"],"description":"Public-safe persistence status without exposing protected drafts","boundary":"public-safe"},{"path":"/api/v1/layouts","methods":["POST"],"description":"Create a protected ephemeral server layout","boundary":"protected"},{"path":"/api/v1/layouts/{id}","methods":["GET","PUT"],"description":"Read or update a protected ephemeral server layout","boundary":"protected"},{"path":"/api/v1/layouts/preview","methods":["POST"],"description":"Generate deterministic responsive preview data","boundary":"public-safe"},{"path":"/api/v1/layouts/score","methods":["POST"],"description":"Run deterministic Layout score","boundary":"public-safe"},{"path":"/api/v1/layouts/export","methods":["POST"],"description":"Export JSON, HTML/CSS, React/Tailwind, Markdown, design spec JSON, or report output","boundary":"public-safe"},{"path":"/api/v1/viewport/check","methods":["POST"],"description":"Check one viewport for overflow and tap-target risk","boundary":"public-safe"},{"path":"/api/v1/grid/analyze","methods":["POST"],"description":"Analyze grid and region structure","boundary":"public-safe"},{"path":"/api/v1/accessibility/check","methods":["POST"],"description":"Run deterministic accessibility hints","boundary":"public-safe"},{"path":"/api/v1/responsive/check","methods":["POST"],"description":"Check configured breakpoints","boundary":"public-safe"},{"path":"/api/v1/audit/url","methods":["POST"],"description":"Run public deterministic scoring and optional key-gated trusted-domain DOM inspection","boundary":"public-safe"},{"path":"/api/v1/audit/config","methods":["POST"],"description":"Audit layout config with deterministic findings","boundary":"public-safe"},{"path":"/api/v1/reports/layout","methods":["POST"],"description":"Return unsupported until protected report publishing is implemented","boundary":"protected"},{"path":"/api/v1/integrations/status","methods":["GET"],"description":"List Layout integration configuration/degraded state","boundary":"public-safe"},{"path":"/api/v1/integrations/phorm","methods":["POST"],"description":"Protected Phorm handoff; currently unsupported","boundary":"protected"},{"path":"/api/v1/integrations/browserops","methods":["POST"],"description":"Protected BrowserOps check; currently unsupported","boundary":"protected"},{"path":"/api/v1/integrations/docs","methods":["POST"],"description":"Protected Docs publishing; currently unsupported","boundary":"protected"},{"path":"/api/v1/integrations/decks","methods":["POST"],"description":"Protected Deck generation; currently unsupported","boundary":"protected"},{"path":"/api/v1/integrations/sheets","methods":["POST"],"description":"Protected Sheets reporting; currently unsupported","boundary":"protected"},{"path":"/api/v1/integrations/insights","methods":["POST"],"description":"Protected Insights handoff; currently unsupported","boundary":"protected"},{"path":"/api/indexnow","methods":["GET"],"description":"Read IndexNow configuration status","boundary":"public-safe"},{"path":"/api/indexnow","methods":["POST"],"description":"Submit bounded canonical Layout URLs to IndexNow","boundary":"protected"},{"path":"/api/mcp","methods":["GET","POST"],"description":"Layout MCP JSON-RPC endpoint","boundary":"public-safe"},{"path":"/api/health","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/api/v1/health","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/api/docs","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/openapi.yaml","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/openapi.json","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/llms.txt","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/llms-full.txt","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/llms-index.json","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/robots.txt","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/sitemap.xml","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/sitemap-main.xml","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/sitemap-index.xml","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/rss.xml","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/feed.xml","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/manifest.webmanifest","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/.well-known/mcp.json","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/.well-known/agents.json","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/.well-known/ai-plugin.json","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/.well-known/security.txt","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/.well-known/trust.json","methods":["GET"],"description":"Discovery route","boundary":"public-safe"},{"path":"/api/mcp","methods":["GET"],"description":"Discovery route","boundary":"public-safe"}],"authPolicy":{"boundary":"protected","requireApiKey":true,"acceptedHeaders":["Authorization: Bearer $PLATPHORM_API_KEY","X-PlatPhorm-API-Key: $PLATPHORM_API_KEY"],"keyName":"PLATPHORM_API_KEY","message":"This protected action requires PLATPHORM_API_KEY."},"publicAccess":{"enabled":true,"statement":"Public-safe Layout functionality is open by default in Phase 2."},"layoutBuilder":{"publicSafe":true,"storage":"browser-local IndexedDB for non-sensitive drafts; protected server records are ephemeral and never claimed durable","viewports":["narrow","mobile","tablet","desktop","wide"]},"templates":{"count":15,"slugs":["article-brief","dashboard-command","card-grid","form-flow","docs-layout","gallery-wall","landing-system","news-feed","faq-knowledge","product-service","status-page","api-docs","mcp-capability","network-directory","report-page"],"active":15},"responsiveChecks":["overflow","tap-target-size","heading-hierarchy","landmark-presence","grid-consistency","spacing","alignment","density","readability","mobile-usability","route-readiness","platform-integration","breakpoint-coverage","image-alt","form-labels","semantic-regions","navigation-clarity","footer-discovery-presence","faq-breadcrumb-hints","public-protected-label-presence","trace-api-mcp-discovery-link-presence"],"scoring":{"deterministic":true,"modelAssisted":false,"checks":["overflow","tap-target-size","heading-hierarchy","landmark-presence","grid-consistency","spacing","alignment","density","readability","mobile-usability","route-readiness","platform-integration","breakpoint-coverage","image-alt","form-labels","semantic-regions","navigation-clarity","footer-discovery-presence","faq-breadcrumb-hints","public-protected-label-presence","trace-api-mcp-discovery-link-presence"]},"audits":{"deterministic":true,"urlAudit":"public deterministic config scoring plus PLATPHORM_API_KEY-gated trusted-domain DOM inspection","configAudit":"active"},"exports":["json","html-css","react-tailwind","markdown","design-spec-json","report","spec"],"integrations":[{"key":"phorm","name":"Phorm","url":"https://phorm.platphormnews.com","status":"unsupported","publicSafe":true,"boundary":"protected","message":"Phorm handoff is not implemented. Configuration alone does not constitute execution."},{"key":"browserops","name":"BrowserOps","url":"https://browserops.platphormnews.com","status":"unsupported","publicSafe":true,"boundary":"protected","message":"BrowserOps execution is not implemented. No browser run is created by Layout."},{"key":"docs","name":"Docs","url":"https://docs.platphormnews.com","status":"unsupported","publicSafe":true,"boundary":"protected","message":"Docs publishing is not implemented. No document artifact is created."},{"key":"decks","name":"Decks","url":"https://decks.platphormnews.com","status":"unsupported","publicSafe":true,"boundary":"protected","message":"Deck generation is not implemented. No deck artifact is created."},{"key":"sheets","name":"Sheets","url":"https://sheets.platphormnews.com","status":"unsupported","publicSafe":true,"boundary":"protected","message":"Sheets reporting is not implemented. No sheet artifact is created."},{"key":"insights","name":"Insights","url":"https://insights.platphormnews.com","status":"unsupported","publicSafe":true,"boundary":"protected","message":"Insights handoff is not implemented. No downstream score or ranking is claimed."},{"key":"trace","name":"Trace","url":"https://trace.platphormnews.com","status":"degraded","publicSafe":true,"boundary":"public-safe","message":"Trace headers and public links are active. Public-safe server request journeys are exported when PLATPHORM_API_KEY is configured and otherwise report disabled."}],"modelScaffolding":{"configured":false,"provider":"unsupported","gatewayReady":false,"status":"unsupported","message":"No server-side model handler is implemented. Layout guidance uses deterministic checks only."},"tools":["list_layout_templates","get_layout_template","create_layout","preview_layout","score_layout","audit_layout_url","audit_layout_config","analyze_grid","check_responsive_layout","check_accessibility_layout","export_layout_json","export_layout_html_css","export_layout_react_tailwind","export_layout_spec","export_layout_markdown","export_layout_design_spec_json","export_layout_report","send_to_phorm","run_browserops_layout_check","get_health","get_info","get_route_compliance","get_discovery_compliance","create_docs_report","create_sheet_report","create_deck_summary","send_to_insights"],"resources":["layout://templates","layout://template/{slug}","layout://layouts","layout://layout/{id}","layout://examples","layout://audits/{id}","layout://standards","layout://scores/{id}","layout://faq","layout://openapi","layout://llms","layout://trust-policy"],"prompts":["generate_responsive_layout","improve_page_layout","analyze_layout_issues","create_dashboard_layout","create_article_layout","create_card_grid_layout","create_form_layout","create_platphorm_standard_layout","explain_layout_score","create_layout_export_plan","human_machine_layout_handoff"],"trustedDomains":["*.platphormnews.com"],"routeStandard":{"expectedCount":49,"implementedCount":49,"missing":[],"degraded":["Server-side persistence is not implemented; browser-local drafts are active and protected server records are ephemeral.","Model suggestions are unsupported; deterministic guidance is active.","Protected cross-site execution and publishing integrations are unsupported; no downstream artifact or run is claimed."],"score":100,"routes":["/api/health","/api/v1/health","/api/docs","/openapi.yaml","/openapi.json","/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/ai-plugin.json","/.well-known/security.txt","/.well-known/trust.json","/api/mcp","/api/health","/api/v1/health","/api/docs","/api/v1/templates","/api/v1/templates/{slug}","/api/v1/layouts","/api/v1/layouts","/api/v1/layouts/{id}","/api/v1/layouts/preview","/api/v1/layouts/score","/api/v1/layouts/export","/api/v1/viewport/check","/api/v1/grid/analyze","/api/v1/accessibility/check","/api/v1/responsive/check","/api/v1/audit/url","/api/v1/audit/config","/api/v1/reports/layout","/api/v1/integrations/status","/api/v1/integrations/phorm","/api/v1/integrations/browserops","/api/v1/integrations/docs","/api/v1/integrations/decks","/api/v1/integrations/sheets","/api/v1/integrations/insights","/api/indexnow","/api/indexnow","/api/mcp"]},"discoveryCompliance":{"status":"healthy","files":["/api/health","/api/docs","/openapi.yaml","/openapi.json","/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/ai-plugin.json","/.well-known/security.txt","/.well-known/trust.json","/api/mcp"],"noDeadSitemapLinks":true,"canonicalSources":["https://platphormnews.com/api/network/graph","https://base.platphormnews.com/sitemap-index.xml"]},"trustPolicy":"https://layout.platphormnews.com/.well-known/trust.json","updatedAt":"2026-08-07T22:27:09.968Z"}