{"name":"PlatPhormNews MCP Gateway API","version":"0.1.0","description":"Canonical MCP gateway with 140 tools, 16 resources, and 23 prompts for network-wide MCP discovery, capability registry introspection, OpenAPI-to-MCP bridge work, agent policy, safe gateway proxying, and protected platform operations.","protocolVersion":"2024-11-05","supportedProtocolVersions":["2025-06-18","2024-11-05"],"transport":"streamable-http","stats":{"tools":140,"resources":16,"prompts":23,"categories":16,"phase2":{"tools":140,"resources":16,"prompts":23,"categories":16,"registeredSites":142,"generatedTools":11,"draftTools":11,"protectedTools":39,"publicTools":101,"degradedTools":11,"integrations":11,"policyPlatforms":12,"mcpClientsSupported":13,"evals":11,"sandboxTests":11,"browserOpsTests":11}},"tools":[{"name":"get_network_info","description":"Get metadata about the PlatPhorm News network: owner, orgs, verticals, stats, and MCP hub info. Always available (no database dependency).","inputSchema":{"type":"object","properties":{}}},{"name":"network_status","description":"Check the status of the entire PlatPhorm News network or specific sites.","inputSchema":{"type":"object","properties":{"domain":{"type":"string"}}}},{"name":"get_network_sites","description":"List known sites in the PlatPhorm News network (*.platphormnews.com, *.ph3ar.com). Merges Redis overlay, root graph, base sitemap index, bootstrap fallback, and configured extras with source labels.","inputSchema":{"type":"object","properties":{"vertical":{"type":"string"},"mcpOnly":{"type":"boolean"},"withApiDocs":{"type":"boolean"}}}},{"name":"discover_network_sites","description":"Discover trusted PlatPhormNews sites automatically from the root graph, base sitemap index, bootstrap fallback, and EXTRA_DISCOVERY_DOMAINS. Public-safe: does not mutate registry state.","inputSchema":{"type":"object","properties":{"limit":{"type":"number"},"timeoutMs":{"type":"number"}}}},{"name":"list_federated_mcp_tools","description":"List source-labeled remote MCP tools discovered from trusted PlatPhormNews MCP endpoints. Remote tools are not local callable tools unless delegated through policy.","inputSchema":{"type":"object","properties":{"live":{"type":"boolean"},"limit":{"type":"number"},"concurrency":{"type":"number"},"timeoutMs":{"type":"number"},"query":{"type":"string"}}}},{"name":"resolve_trusted_site","description":"Resolve a trusted PlatPhormNews or ph3ar domain from automatic discovery sources and return public discovery artifact URLs.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Trusted site domain or URL, such as searchops.platphormnews.com"}},"required":["domain"]}},{"name":"get_network_mcp_servers","description":"List known and candidate MCP servers in the PlatPhorm News federation from automatic trusted-site discovery plus optional Redis overlay.","inputSchema":{"type":"object","properties":{}}},{"name":"resolve_network_domain","description":"Resolve any *.platphormnews.com or *.ph3ar.com domain to its site data. Uses Redis and graph/bootstrap discovery with explicit source labels.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain to resolve (e.g. ascii.platphormnews.com)"}},"required":["domain"]}},{"name":"fetch_network_sitemap","description":"Fetch and parse platphormnews.com/sitemap-main.xml to discover all URLs across the network. Returns structured sitemap data with lastmod, changefreq, and priority.","inputSchema":{"type":"object","properties":{"sitemapUrl":{"type":"string"},"headers":{"type":"object","additionalProperties":true},"timeout":{"type":"number"},"maxRetries":{"type":"number"}}}},{"name":"discover_site_api","description":"Fetch /api/docs from any *.platphormnews.com site to discover its available API endpoints, tools, and capabilities. Supports quake.platphormnews.com, calendar.platphormnews.com, ascii.platphormnews.com, and any other network site with API docs.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain or URL of the site (e.g. quake.platphormnews.com or https://calendar.platphormnews.com)"},"headers":{"type":"object","additionalProperties":true},"timeout":{"type":"number"},"maxRetries":{"type":"number"}},"required":["domain"]}},{"name":"get_site_health","description":"Fetch /api/health from any network site to check its current status, uptime, and capabilities. Works with any *.platphormnews.com or *.ph3ar.com site.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain to health-check (e.g. quake.platphormnews.com)"},"headers":{"type":"object","additionalProperties":true},"timeout":{"type":"number"},"maxRetries":{"type":"number"}},"required":["domain"]}},{"name":"list_articles","description":"List articles with pagination and optional filtering by category, tag, or status.","inputSchema":{"type":"object","properties":{"page":{"type":"number"},"limit":{"type":"number"},"category":{"type":"string"},"tag":{"type":"string"},"status":{"type":"string","enum":["draft","published","archived"]}}}},{"name":"get_article","description":"Get a single article by ID or slug. Returns full content and increments view counter.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"slug":{"type":"string"}}}},{"name":"create_article","description":"Create a new article. Slug auto-generated from title. Defaults to draft.","inputSchema":{"type":"object","properties":{"title":{"type":"string","description":"Article title"},"content":{"type":"string","description":"Article body (markdown)"},"excerpt":{"type":"string","description":"Short excerpt"},"author":{"type":"string","description":"Author name"},"category":{"type":"string","description":"Category slug"},"tags":{"type":"array","items":{"type":"string"}},"status":{"type":"string","enum":["draft","published"]}},"required":["title","content","excerpt","author","category"]}},{"name":"update_article","description":"Update an existing article by ID. Only provided fields are changed.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Article ID to update"},"title":{"type":"string"},"content":{"type":"string"},"excerpt":{"type":"string"},"author":{"type":"string"},"category":{"type":"string"},"tags":{"type":"array","items":{"type":"string"}}},"required":["id"]}},{"name":"delete_article","description":"Soft-delete an article by archiving it.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Article ID to archive"}},"required":["id"]}},{"name":"publish_article","description":"Publish a draft article and record the publish timestamp.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Article ID to publish"}},"required":["id"]}},{"name":"list_categories","description":"List all content categories.","inputSchema":{"type":"object","properties":{}}},{"name":"create_category","description":"Create a new content category. Slug auto-generated from name.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Category display name"},"description":{"type":"string","description":"Category description"}},"required":["name","description"]}},{"name":"update_category","description":"Update an existing category by ID.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Category ID"},"name":{"type":"string"},"description":{"type":"string"}},"required":["id"]}},{"name":"delete_category","description":"Delete a category by ID.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Category ID"}},"required":["id"]}},{"name":"list_faqs","description":"List all FAQs, optionally filtered by category.","inputSchema":{"type":"object","properties":{"category":{"type":"string"}}}},{"name":"create_faq","description":"Create a new FAQ entry.","inputSchema":{"type":"object","properties":{"question":{"type":"string","description":"The FAQ question"},"answer":{"type":"string","description":"The FAQ answer"},"category":{"type":"string","description":"FAQ category"},"order":{"type":"number","description":"Display order (lower = first)"}},"required":["question","answer","category","order"]}},{"name":"update_faq","description":"Update an existing FAQ entry by ID.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"FAQ ID"},"question":{"type":"string"},"answer":{"type":"string"},"category":{"type":"string"},"order":{"type":"number"}},"required":["id"]}},{"name":"delete_faq","description":"Permanently delete an FAQ entry by ID.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"FAQ ID"}},"required":["id"]}},{"name":"search_articles","description":"Full-text search across articles by title, content, excerpt, and tags.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query string"},"limit":{"type":"number"}},"required":["query"]}},{"name":"get_analytics","description":"Get view counts for a specific article or trending articles across the platform.","inputSchema":{"type":"object","properties":{"articleId":{"type":"string"},"trendingLimit":{"type":"number"}}}},{"name":"list_org_repos","description":"List repositories for a GitHub org (mbarbine, process-co, ph3ar).","inputSchema":{"type":"object","properties":{"org":{"type":"string","enum":["mbarbine","process-co","ph3ar"],"description":"GitHub org"},"sort":{"type":"string","enum":["updated","created","pushed","full_name"]},"per_page":{"type":"number"},"page":{"type":"number"},"include_archived":{"type":"boolean"}},"required":["org"]}},{"name":"get_repo_details","description":"Get detailed info about a specific repo including README, languages, contributors.","inputSchema":{"type":"object","properties":{"owner":{"type":"string","description":"Repo owner"},"repo":{"type":"string","description":"Repo name"},"include_readme":{"type":"boolean"},"include_contributors":{"type":"boolean"}},"required":["owner","repo"]}},{"name":"get_org_info","description":"Get profile info for a supported GitHub org (mbarbine, process-co, ph3ar).","inputSchema":{"type":"object","properties":{"org":{"type":"string","enum":["mbarbine","process-co","ph3ar"],"description":"GitHub org"}},"required":["org"]}},{"name":"search_org_code","description":"Search code across supported orgs (mbarbine, process-co, ph3ar). Requires GITHUB_TOKEN.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Code search query"},"org":{"type":"string","enum":["mbarbine","process-co","ph3ar"],"description":"Org to search"},"language":{"type":"string"},"per_page":{"type":"number"}},"required":["query","org"]}},{"name":"get_trending_repos","description":"Get trending repos on GitHub by recent stars. Useful for discovering popular projects.","inputSchema":{"type":"object","properties":{"language":{"type":"string"},"since":{"type":"string","enum":["daily","weekly","monthly"]},"per_page":{"type":"number"}}}},{"name":"list_sites","description":"List all registered sites in the platform registry with optional vertical filter.","inputSchema":{"type":"object","properties":{"vertical":{"type":"string"}}}},{"name":"get_site","description":"Get site metadata by ID or domain. Returns full site record including aliases and MCP config.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"domain":{"type":"string"}}}},{"name":"register_site","description":"Register a new Vercel-hosted site in the platform inventory.","inputSchema":{"type":"object","properties":{"name":{"type":"string","description":"Site display name"},"domain":{"type":"string","description":"Primary domain"},"aliases":{"type":"array","items":{"type":"string"}},"vertical":{"type":"string","description":"Vertical category"},"description":{"type":"string","description":"Site description"},"mcpEnabled":{"type":"boolean"},"mcpUrl":{"type":"string"}},"required":["name","domain","vertical","description"]}},{"name":"generate_site_token","description":"Generate a secure bearer token for a site to authenticate future MCP requests.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string","description":"Site ID"},"ttlDays":{"type":"number"}},"required":["siteId"]}},{"name":"register_capability","description":"Register a tool, resource, or prompt capability for a site.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string","description":"Site ID"},"type":{"type":"string","enum":["tool","resource","prompt"],"description":"Capability type"},"name":{"type":"string","description":"Capability name"},"description":{"type":"string","description":"What this capability does"},"schema":{"type":"object","additionalProperties":true},"exampleUsage":{"type":"string"}},"required":["siteId","type","name","description"]}},{"name":"update_site","description":"Update site metadata for a registered site.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Site ID to update"},"name":{"type":"string"},"description":{"type":"string"},"status":{"type":"string","enum":["active","inactive","maintenance"]},"mcpEnabled":{"type":"boolean"},"mcpUrl":{"type":"string"}},"required":["id"]}},{"name":"resolve_domain","description":"Resolve any domain or subdomain to its canonical site record.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Domain to resolve"}},"required":["domain"]}},{"name":"list_site_domains","description":"List all domain aliases for a given site.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Site ID"}},"required":["id"]}},{"name":"sync_sitemap","description":"Sync a site's sitemap by appending its URL to a GitHub repository.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string","description":"Site ID"},"owner":{"type":"string","description":"GitHub owner/org"},"repo":{"type":"string","description":"GitHub repo name"},"path":{"type":"string"}},"required":["siteId","owner","repo"]}},{"name":"crawl_site_capabilities","description":"Crawl and index tools, resources, and prompts from all MCP-enabled sites in the network.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string"}}}},{"name":"validate_site_mcp","description":"Live health check of a site's MCP endpoint. Verifies protocol compatibility and tool availability.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string","description":"Site ID to validate"}},"required":["siteId"]}},{"name":"list_events","description":"List recent platform events from the outbox with optional type filter.","inputSchema":{"type":"object","properties":{"limit":{"type":"number"},"type":{"type":"string"}}}},{"name":"get_audit_trail","description":"Get the audit trail for a specific site, showing all write operations with timestamps and changes.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string"},"limit":{"type":"number"}}}},{"name":"emit_event","description":"Emit a platform event to the outbox for downstream consumers.","inputSchema":{"type":"object","properties":{"type":{"type":"string","description":"Event type (e.g. site.created, article.published)"},"source":{"type":"string","description":"Event source (e.g. mcp-server, api)"},"data":{"type":"object","additionalProperties":true,"description":"Event payload data"}},"required":["type","source","data"]}},{"name":"list_deployments","description":"List recent deployments, optionally scoped to a specific site.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string"},"limit":{"type":"number"}}}},{"name":"record_deployment","description":"Record a new deployment event. Writes audit log and emits an event to the outbox.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string","description":"Site ID being deployed"},"url":{"type":"string","description":"Deployment URL"},"status":{"type":"string","enum":["building","ready","error","canceled"],"description":"Deploy status"},"gitRef":{"type":"string"},"commitMessage":{"type":"string"}},"required":["siteId","url","status"]}},{"name":"get_deployment","description":"Get deployment details by ID.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Deployment ID"}},"required":["id"]}},{"name":"search_all_sites","description":"Cross-site full-text search across all registered sites. Currently searches the local content store; will extend to federate across MCP-enabled remote sites.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query"},"limit":{"type":"number"}},"required":["query"]}},{"name":"aggregate_analytics","description":"Roll up analytics (view counts, trending articles) across the platform.","inputSchema":{"type":"object","properties":{"trendingLimit":{"type":"number"}}}},{"name":"get_platform_stats","description":"Get platform-wide statistics: total sites, articles, deployments, events, and audit entries.","inputSchema":{"type":"object","properties":{}}},{"name":"search_producthunt","description":"Search Product Hunt posts by topic/keyword. Requires PRODUCTHUNT_TOKEN env var.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search query or topic"},"first":{"type":"number"}},"required":["query"]}},{"name":"get_producthunt_post","description":"Get details of a specific Product Hunt post by ID.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Product Hunt post ID"}},"required":["id"]}},{"name":"trending_producthunt","description":"Get today's trending Product Hunt launches sorted by votes.","inputSchema":{"type":"object","properties":{"first":{"type":"number"}}}},{"name":"list_mcp_servers","description":"List all known MCP servers across the platform, including status and endpoints.","inputSchema":{"type":"object","properties":{}}},{"name":"proxy_mcp_call","description":"Call a tool on a remote MCP server. Enables cross-subdomain MCP federation (e.g. mcp.platphormnews.com -> mcp.ph3ar.com).","inputSchema":{"type":"object","properties":{"server":{"type":"string","description":"Target MCP server name (from list_mcp_servers)"},"tool":{"type":"string","description":"Tool name to call on remote server"},"args":{"type":"object","additionalProperties":true}},"required":["server","tool"]}},{"name":"track_event","description":"Track a custom platform event for orchestration and analytics.","inputSchema":{"type":"object","properties":{"type":{"type":"string","description":"Event type (e.g. tool_invocation, site_registration, error)"},"source":{"type":"string","description":"Source of the event (e.g. site_id, user_id)"},"data":{"type":"object","additionalProperties":true,"description":"Event payload"}},"required":["type","source","data"]}},{"name":"list_recent_events","description":"List recent platform events with optional type filtering.","inputSchema":{"type":"object","properties":{"type":{"type":"string"},"limit":{"type":"number"}}}},{"name":"list_neon_infrastructure","description":"List all Neon serverless Postgres projects and their status.","inputSchema":{"type":"object","properties":{}}},{"name":"list_render_infrastructure","description":"List all Render services (web services, crons, DBs) and their live status.","inputSchema":{"type":"object","properties":{}}},{"name":"list_vercel_infrastructure","description":"List all Vercel projects and their basic metadata.","inputSchema":{"type":"object","properties":{"teamId":{"type":"string"}}}},{"name":"get_vercel_project_details","description":"Get detailed information and domains for a specific Vercel project.","inputSchema":{"type":"object","properties":{"projectId":{"type":"string","description":"Vercel project ID or name"},"teamId":{"type":"string"}},"required":["projectId"]}},{"name":"search_capability_graph","description":"Search across the global inventory of tools, resources, and prompts. Provides proxy call instructions.","inputSchema":{"type":"object","properties":{"query":{"type":"string","description":"Search term for tool names or descriptions"}},"required":["query"]}},{"name":"get_subdomain_orchestration_profile","description":"Get a unified profile for a subdomain: registry info, capabilities, and infrastructure links.","inputSchema":{"type":"object","properties":{"domain":{"type":"string","description":"Subdomain to profile (e.g. fashion.platphormnews.com)"}},"required":["domain"]}},{"name":"get_network_health_summary","description":"Provides a high-level orchestration health summary for the entire network. Ideal for monitor dashboards.","inputSchema":{"type":"object","properties":{}}},{"name":"get_quake_stats","description":"Get live server statistics and player counts for quake.platphormnews.com.","inputSchema":{"type":"object","properties":{}}},{"name":"search_platform_jobs","description":"Search for job openings across the PlatphormNews network via jobs.platphormnews.com API.","inputSchema":{"type":"object","properties":{"query":{"type":"string"}}}},{"name":"get_fashion_trends","description":"Fetch AI-analyzed fashion trends from fashion.platphormnews.com API.","inputSchema":{"type":"object","properties":{}}},{"name":"get_claws_intelligence","description":"Query CLAWS (claws.platphormnews.com) security intelligence platform for threat data and policy information.","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"type":{"type":"string","enum":["threats","policies","domains","status"]}}}},{"name":"sync_network_graph","description":"Fetch the canonical root network graph and return a bounded sync snapshot. Durable writes require configured persistence.","inputSchema":{"type":"object","properties":{}}},{"name":"list_network_sites","description":"List trusted PlatPhormNews sites discovered from root graph, base sitemap index, bootstrap sites, and configured extras with source labels.","inputSchema":{"type":"object","properties":{"limit":{"type":"number"}}}},{"name":"list_trusted_domains","description":"Return the public-safe trusted-domain policy and current graph-derived trusted-domain count.","inputSchema":{"type":"object","properties":{}}},{"name":"get_route_compliance","description":"Return a public-safe route-compliance summary for the MCP hub route standard.","inputSchema":{"type":"object","properties":{}}},{"name":"get_discovery_compliance","description":"Return a public-safe discovery-compliance summary for MCP discovery surfaces.","inputSchema":{"type":"object","properties":{}}},{"name":"get_network_capability_matrix","description":"Summarize local registry counts and known MCP federation endpoints from canonical state.","inputSchema":{"type":"object","properties":{}}},{"name":"list_capabilities","description":"List canonical local tools, resources, and prompts as capability records.","inputSchema":{"type":"object","properties":{"kind":{"type":"string","enum":["tool","resource","prompt"]}}}},{"name":"get_capability","description":"Get one canonical capability by tool name, resource URI/name, or prompt name.","inputSchema":{"type":"object","properties":{"id":{"type":"string","description":"Capability id, tool name, resource URI, resource name, or prompt name"}},"required":["id"]}},{"name":"deprecate_capability","description":"Mark a capability deprecated when durable registry persistence is configured.","inputSchema":{"type":"object","properties":{"id":{"type":"string"},"reason":{"type":"string"}},"required":["id"]}},{"name":"validate_capability","description":"Validate that a capability exists in the canonical registry and has public/protected classification.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"reconcile_registry_counts","description":"Reconcile canonical registry counts across dashboard, health, docs, llms, OpenAPI, well-known, and JSON-RPC surfaces.","inputSchema":{"type":"object","properties":{}}},{"name":"get_mcp_server","description":"Get one known MCP server by name or URL from the trusted federation registry.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"sync_mcp_server","description":"Fetch and validate a trusted remote MCP server. Durable federation snapshots require configured persistence.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"validate_mcp_server","description":"Initialize a trusted registered MCP server and report public protocol readiness.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"validate_discovery_files","description":"Validate MCP's own public discovery files without requiring protected access.","inputSchema":{"type":"object","properties":{}}},{"name":"read_llms_file","description":"Read llms.txt or llms-full.txt from the public MCP discovery surface.","inputSchema":{"type":"object","properties":{"full":{"type":"boolean"}}}},{"name":"read_llms_index","description":"Read and parse llms-index.json from the public MCP discovery surface.","inputSchema":{"type":"object","properties":{}}},{"name":"validate_openapi","description":"Validate that OpenAPI YAML and JSON public endpoints are reachable and describe MCP.","inputSchema":{"type":"object","properties":{}}},{"name":"validate_rss","description":"Validate public RSS and Atom feed endpoints are reachable and parseable enough for discovery.","inputSchema":{"type":"object","properties":{}}},{"name":"validate_sitemap","description":"Validate public sitemap endpoints and return bounded URL counts.","inputSchema":{"type":"object","properties":{}}},{"name":"validate_well_known_files","description":"Validate well-known MCP, agents, policy, trust, security, and ai-plugin discovery files.","inputSchema":{"type":"object","properties":{}}},{"name":"validate_no_dead_sitemap_links","description":"Bounded dead-link check for URLs generated into MCP sitemap files.","inputSchema":{"type":"object","properties":{"limit":{"type":"number"}}}},{"name":"create_docs_report","description":"Create a Docs remediation report when report persistence is configured.","inputSchema":{"type":"object","properties":{"scope":{"type":"string"}}}},{"name":"create_sheet_report","description":"Create a Sheets structured registry report when report persistence is configured.","inputSchema":{"type":"object","properties":{"scope":{"type":"string"}}}},{"name":"create_deck_summary","description":"Create a Decks executive capability summary when report persistence is configured.","inputSchema":{"type":"object","properties":{"scope":{"type":"string"}}}},{"name":"summarize_capability","description":"Return a deterministic capability summary; model provider enhancement is scaffolded separately.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"recommend_tools","description":"Deterministically recommend matching tools by name or description without requiring a model provider.","inputSchema":{"type":"object","properties":{"query":{"type":"string"},"limit":{"type":"number"}},"required":["query"]}},{"name":"explain_tool_risk","description":"Explain a tool's deterministic auth, mutability, and risk posture from registry metadata.","inputSchema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}},{"name":"generate_client_config","description":"Generate deterministic MCP client config examples. Private model-assisted generation is scaffolded separately.","inputSchema":{"type":"object","properties":{"client":{"type":"string","enum":["cursor","windsurf","vscode","claude-desktop"]}}}},{"name":"generate_remediation_summary","description":"Return a deterministic registry remediation summary; model provider enhancement is scaffolded separately.","inputSchema":{"type":"object","properties":{}}},{"name":"get_network_graph","description":"Return the current root network graph summary and bounded site list from the canonical graph source.","inputSchema":{"type":"object","properties":{"limit":{"type":"number"}}}},{"name":"list_registered_sites","description":"List public-safe registered/discovered sites from merged trusted-site discovery.","inputSchema":{"type":"object","properties":{"limit":{"type":"number"}}}},{"name":"list_tools","description":"List tools from the canonical MCP registry.","inputSchema":{"type":"object","properties":{}}},{"name":"get_tool","description":"Get one tool from the canonical MCP registry.","inputSchema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}},{"name":"list_resources","description":"List resources from the canonical MCP registry.","inputSchema":{"type":"object","properties":{}}},{"name":"get_resource","description":"Get one resource by URI or name from the canonical MCP registry.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"list_prompts","description":"List prompts from the canonical MCP registry.","inputSchema":{"type":"object","properties":{}}},{"name":"get_prompt","description":"Get one prompt from the canonical MCP registry.","inputSchema":{"type":"object","properties":{"name":{"type":"string"}},"required":["name"]}},{"name":"get_gateway_status","description":"Return public-safe MCP gateway status, proxy guardrails, and JA4 redaction policy.","inputSchema":{"type":"object","properties":{}}},{"name":"get_integration_status","description":"Return public-safe integration matrix status for Spec, Evals, Sandbox, BrowserOps, JSON, XML, AgentUI, OpenContent, Docs, Podcasts, and Catalog.","inputSchema":{"type":"object","properties":{}}},{"name":"get_client_config","description":"Return a deterministic MCP client config for supported IDE/client profiles.","inputSchema":{"type":"object","properties":{"client":{"type":"string","enum":["cursor","windsurf","vscode","claude-desktop","codex","curl","node","python"]}}}},{"name":"get_ide_instructions","description":"Return supported IDE/client instructions and troubleshooting links.","inputSchema":{"type":"object","properties":{}}},{"name":"get_agent_policy","description":"Return the versioned public-safe agent access policy.","inputSchema":{"type":"object","properties":{}}},{"name":"list_agent_platforms","description":"List supported agent platform families with source-labeled user-agent policy.","inputSchema":{"type":"object","properties":{}}},{"name":"get_agent_platform","description":"Get one agent platform family policy by id.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"evaluate_agent_access","description":"Evaluate whether an agent operation is public-safe or requires PLATPHORM_API_KEY.","inputSchema":{"type":"object","properties":{"operation":{"type":"string"},"platformId":{"type":"string"}},"required":["operation"]}},{"name":"get_robots_policy","description":"Return the robots.txt policy as structured JSON.","inputSchema":{"type":"object","properties":{}}},{"name":"get_ai_policy","description":"Return the versioned public AI access and content-use policy.","inputSchema":{"type":"object","properties":{}}},{"name":"get_trust_policy","description":"Read the public trust policy manifest.","inputSchema":{"type":"object","properties":{}}},{"name":"get_discovery_manifest","description":"Return the public llms-index discovery manifest.","inputSchema":{"type":"object","properties":{}}},{"name":"get_public_access_summary","description":"Summarize MCP public-safe and protected-action boundaries.","inputSchema":{"type":"object","properties":{}}},{"name":"get_health","description":"Read the public health summary for the MCP gateway.","inputSchema":{"type":"object","properties":{}}},{"name":"get_info","description":"Return MCP hub product identity, counts, gateway, factory, and discovery endpoints.","inputSchema":{"type":"object","properties":{}}},{"name":"unregister_site","description":"Unregister a site when durable registry storage is configured.","inputSchema":{"type":"object","properties":{"siteSlug":{"type":"string"}},"required":["siteSlug"]}},{"name":"refresh_site_discovery","description":"Refresh one site's discovery artifacts when protected sync storage is configured.","inputSchema":{"type":"object","properties":{"siteSlug":{"type":"string"}},"required":["siteSlug"]}},{"name":"generate_tools_from_site","description":"Generate draft MCP tools from a site's public discovery artifacts; drafts are not active until validated.","inputSchema":{"type":"object","properties":{"siteSlug":{"type":"string"}},"required":["siteSlug"]}},{"name":"validate_generated_tool","description":"Validate a generated draft tool's schema and provenance before publication.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"publish_generated_tool","description":"Publish a generated tool after validation, eval, sandbox, and operator approval.","inputSchema":{"type":"object","properties":{"id":{"type":"string"}},"required":["id"]}},{"name":"run_eval","description":"Run an MCP/tool eval through evals.platphormnews.com when configured.","inputSchema":{"type":"object","properties":{"target":{"type":"string"}}}},{"name":"run_sandbox_test","description":"Run a generated tool in sandbox.platphormnews.com when configured.","inputSchema":{"type":"object","properties":{"target":{"type":"string"}}}},{"name":"run_browserops_test","description":"Run a BrowserOps UI/client test when configured.","inputSchema":{"type":"object","properties":{"target":{"type":"string"}}}},{"name":"update_agent_policy","description":"Update agent policy records when durable governance storage is configured.","inputSchema":{"type":"object","properties":{"platformId":{"type":"string"}},"required":["platformId"]}},{"name":"refresh_agent_platform_registry","description":"Refresh agent platform registry from verified sources when governance sync is configured.","inputSchema":{"type":"object","properties":{}}},{"name":"export_agent_audit_report","description":"Export a protected agent policy audit report when report storage is configured.","inputSchema":{"type":"object","properties":{"scope":{"type":"string"}}}},{"name":"create_agent_policy_report","description":"Create a protected agent policy report for Docs/Sheets/Decks when integrations are configured.","inputSchema":{"type":"object","properties":{"scope":{"type":"string"}}}},{"name":"dynamo_list_sites","description":"List registered sites from DynamoDB when configured. DynamoDB may be read-only or degraded and is not the canonical MCP count source. Returns available site metadata including domains, MCP status, and API docs URLs.","inputSchema":{"type":"object","properties":{"vertical":{"type":"string"},"limit":{"type":"number"}}}},{"name":"dynamo_get_site","description":"Get a single site from DynamoDB by siteId or domain. Returns full metadata, MCP configuration, aliases, and status. Falls back to resolve_network_domain if DynamoDB is unavailable.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string"},"domain":{"type":"string"}}}},{"name":"dynamo_list_articles","description":"List articles from DynamoDB by site or category. Returns article metadata (title, slug, excerpt, author, status, dates). Use for cross-site content queries and monitor dashboards.","inputSchema":{"type":"object","properties":{"siteId":{"type":"string"},"category":{"type":"string"},"limit":{"type":"number"}}}},{"name":"dynamo_list_events","description":"List platform events from DynamoDB — deployment notifications, content changes, audit entries. Supports filtering by event type and status. Essential for monitor.platphormnews.com dashboards.","inputSchema":{"type":"object","properties":{"type":{"type":"string"},"status":{"type":"string","enum":["pending","delivered","failed"]},"limit":{"type":"number"}}}},{"name":"dynamo_table_info","description":"Get DynamoDB table health and connectivity status. Returns table name, region, connection status, and latency. Used by monitor.platphormnews.com for infrastructure monitoring.","inputSchema":{"type":"object","properties":{}}}],"toolsByCategory":{"network":["get_network_info","get_network_sites","get_network_mcp_servers","resolve_network_domain","fetch_network_sitemap","discover_site_api","get_network_health_summary","get_network_capability_matrix","get_network_graph"],"other":["network_status","discover_network_sites","list_federated_mcp_tools","resolve_trusted_site","resolve_domain","search_producthunt","get_producthunt_post","trending_producthunt","get_claws_intelligence","sync_network_graph","list_network_sites","list_trusted_domains","get_route_compliance","get_discovery_compliance","list_capabilities","get_capability","deprecate_capability","validate_capability","reconcile_registry_counts","get_mcp_server","sync_mcp_server","validate_mcp_server","validate_discovery_files","read_llms_file","read_llms_index","validate_openapi","validate_rss","validate_well_known_files","validate_no_dead_sitemap_links","create_docs_report","create_sheet_report","create_deck_summary","summarize_capability","recommend_tools","explain_tool_risk","generate_client_config","generate_remediation_summary","list_registered_sites","list_tools","get_tool","list_resources","get_resource","list_prompts","get_prompt","get_gateway_status","get_integration_status","get_client_config","get_ide_instructions","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","unregister_site","refresh_site_discovery","generate_tools_from_site","validate_generated_tool","publish_generated_tool","run_eval","run_sandbox_test","run_browserops_test","update_agent_policy","refresh_agent_platform_registry","export_agent_audit_report","create_agent_policy_report"],"sites":["get_site_health","list_sites","get_site","register_site","generate_site_token","register_capability","update_site","list_site_domains","sync_sitemap","crawl_site_capabilities","validate_site_mcp","validate_sitemap"],"content":["list_articles","get_article","create_article","update_article","delete_article","publish_article","search_articles"],"categories":["list_categories","create_category","update_category","delete_category"],"faqs":["list_faqs","create_faq","update_faq","delete_faq"],"search":["get_analytics"],"github":["list_org_repos","get_repo_details","get_org_info","search_org_code","get_trending_repos"],"events":["list_events","get_audit_trail","emit_event"],"deployments":["list_deployments","record_deployment","get_deployment"],"federation":["search_all_sites","aggregate_analytics","get_platform_stats"],"proxy":["list_mcp_servers","proxy_mcp_call"],"analytics":["track_event","list_recent_events"],"orchestrator":["list_neon_infrastructure","list_render_infrastructure","list_vercel_infrastructure","get_vercel_project_details","search_capability_graph","get_subdomain_orchestration_profile"],"verticals":["get_quake_stats","search_platform_jobs","get_fashion_trends"],"dynamodb":["dynamo_list_sites","dynamo_get_site","dynamo_list_articles","dynamo_list_events","dynamo_table_info"]},"resources":[{"uri":"platphormnews://config","name":"site-config","description":"Site configuration: name, description, URL, locales, version.","mimeType":"application/json"},{"uri":"platphormnews://articles","name":"articles-feed","description":"All published articles as a JSON feed.","mimeType":"application/json"},{"uri":"platphormnews://categories","name":"categories","description":"All content categories with name, slug, and description.","mimeType":"application/json"},{"uri":"platphormnews://faqs","name":"faqs","description":"All FAQs with answers, organized by category.","mimeType":"application/json"},{"uri":"platphormnews://sites","name":"sites","description":"All registered sites in the platform registry.","mimeType":"application/json"},{"uri":"platphormnews://events","name":"events","description":"Recent platform events from the outbox.","mimeType":"application/json"},{"uri":"platphormnews://deployments","name":"deployments","description":"Recent deployment records across all sites.","mimeType":"application/json"},{"uri":"platphormnews://platform-stats","name":"platform-stats","description":"Platform-wide statistics: site count, articles, tools, version.","mimeType":"application/json"},{"uri":"platphormnews://domain-map","name":"domain-map","description":"Full domain-to-site mapping for all registered sites.","mimeType":"application/json"},{"uri":"platphormnews://mcp-servers","name":"mcp-servers","description":"All MCP servers in the federation registry.","mimeType":"application/json"},{"uri":"platphormnews://audit-trail","name":"audit-trail","description":"Recent audit trail entries for all write operations.","mimeType":"application/json"},{"uri":"platphormnews://llms","name":"llms-discovery","description":"LLM discovery metadata for the platform.","mimeType":"application/json"},{"uri":"platphormnews://capabilities","name":"site-capabilities","description":"All registered tools, resources, and prompts across the site network.","mimeType":"application/json"},{"uri":"platphormnews://health","name":"network-health","description":"Unified health status of network subdomains and infrastructure.","mimeType":"application/json"},{"uri":"platphormnews://icons/{vertical}","name":"site-icons","description":"Dynamic SVG icons generated from Unicode emojis for network branding.","mimeType":"image/svg+xml"},{"uri":"platphormnews://system-prompt","name":"platform-system-prompt","description":"The ultimate system prompt for an AI agent to orchestrate the network.","mimeType":"text/markdown"}],"prompts":[{"name":"write-article","description":"Generate a well-structured article on a given topic with SEO optimization","arguments":[{"name":"topic","description":"Article topic or headline","required":true},{"name":"tone","description":"Writing tone (formal, casual, technical)","required":false},{"name":"length","description":"Target word count","required":false}]},{"name":"summarize-article","description":"Create a concise summary of an article preserving key insights","arguments":[{"name":"content","description":"Article content to summarize","required":true},{"name":"format","description":"Summary format (bullets, paragraph, tldr)","required":false}]},{"name":"generate-faq","description":"Generate FAQ entries for a topic or product","arguments":[{"name":"topic","description":"Topic to generate FAQs for","required":true},{"name":"count","description":"Number of FAQ items","required":false}]},{"name":"seo-optimize","description":"Optimize content for search engines","arguments":[{"name":"content","description":"Content to optimize","required":true},{"name":"keywords","description":"Target keywords","required":false}]},{"name":"editorial-review","description":"Perform editorial review with improvement suggestions","arguments":[{"name":"content","description":"Content to review","required":true},{"name":"style_guide","description":"Style guide to follow","required":false}]},{"name":"network-health-report","description":"Generate comprehensive network health report","arguments":[{"name":"include_details","description":"Include detailed metrics","required":false}]},{"name":"cross-site-search","description":"Search across all network sites","arguments":[{"name":"query","description":"Search query","required":true},{"name":"sites","description":"Specific sites to search","required":false}]},{"name":"site-health-check","description":"Deep health check for a specific site","arguments":[{"name":"domain","description":"Site domain to check","required":true}]},{"name":"discover-network","description":"Discover and map the entire network","arguments":[]},{"name":"register-new-site","description":"Register a new site in the network","arguments":[{"name":"subdomain","description":"Site subdomain","required":true},{"name":"name","description":"Display name","required":true},{"name":"vertical","description":"Site vertical/category","required":true},{"name":"description","description":"Site description","required":true}]},{"name":"migration-plan","description":"Generate migration plan for site updates","arguments":[{"name":"site","description":"Site to migrate","required":true},{"name":"changes","description":"Changes to implement","required":true}]},{"name":"platform-overview","description":"Generate platform overview report","arguments":[]},{"name":"json-format","description":"Format and validate JSON using json.platphormnews.com","arguments":[{"name":"json","description":"JSON to format","required":true},{"name":"indent","description":"Indentation spaces","required":false}]},{"name":"json-diff","description":"Compare two JSON documents","arguments":[{"name":"json1","description":"First JSON document","required":true},{"name":"json2","description":"Second JSON document","required":true}]},{"name":"desa-analyze","description":"Analyze data with desa.platphormnews.com","arguments":[{"name":"dataset","description":"Dataset identifier or URL","required":true},{"name":"analysis_type","description":"Type of analysis","required":true}]},{"name":"desa-query","description":"Query data from DESA","arguments":[{"name":"query","description":"SQL or data query","required":true}]},{"name":"atlas-map","description":"Create geographic visualizations with atlas.platphormnews.com","arguments":[{"name":"data","description":"Geographic data","required":true},{"name":"map_type","description":"Map type (choropleth, marker, heatmap)","required":false}]},{"name":"atlas-geocode","description":"Geocode addresses to coordinates","arguments":[{"name":"addresses","description":"Addresses to geocode","required":true}]},{"name":"monitor-status","description":"Check deployment and service status with monitor.platphormnews.com","arguments":[{"name":"service","description":"Service to check","required":false}]},{"name":"monitor-alerts","description":"List active alerts and incidents","arguments":[{"name":"severity","description":"Filter by severity","required":false}]},{"name":"ascii-convert","description":"Convert image to ASCII art","arguments":[{"name":"image_url","description":"Image URL to convert","required":true},{"name":"width","description":"Output width in characters","required":false}]},{"name":"calendar-schedule","description":"Schedule an event","arguments":[{"name":"title","description":"Event title","required":true},{"name":"datetime","description":"Event date and time","required":true},{"name":"duration","description":"Duration in minutes","required":false}]},{"name":"quake-stats","description":"Get gaming statistics from quake.platphormnews.com","arguments":[{"name":"server","description":"Server to query","required":false}]}],"endpoints":{"/api/mcp":{"methods":["GET","HEAD","POST","OPTIONS"],"description":"MCP Streamable HTTP endpoint (JSON-RPC 2.0). POST single or batch requests. GET returns live server info + network topology. HEAD for uptime probes.","tags":["mcp","core"],"examples":{"initialize":{"method":"initialize","params":{"protocolVersion":"2024-11-05"}},"listTools":{"method":"tools/list"},"callTool":{"method":"tools/call","params":{"name":"get_network_sites"}},"batch":[{"jsonrpc":"2.0","id":1,"method":"tools/list"},{"jsonrpc":"2.0","id":2,"method":"resources/list"}]},"headers":{"X-MCP-Server":"platphormnews-mcp/0.1.0","X-MCP-Version":"2024-11-05","X-Request-Id":"<uuid>","Mcp-Session-Id":"<uuid — returned on initialize>"}},"/api/mcp/capabilities":{"methods":["GET"],"description":"Full live capability list — all tools with schemas, all resources, all prompts, and dynamic site capabilities from Redis.","tags":["mcp","discovery"]},"/api/mcp/register":{"methods":["POST","OPTIONS"],"description":"Register or update a site in the MCP network. Requires PLATPHORM_API_KEY.","tags":["mcp","registry"],"body":{"name":"string (required)","domain":"string (required)","vertical":"string","description":"string","mcpUrl":"string","capabilities":"array"}},"/api/mcp/validate":{"methods":["POST","OPTIONS"],"description":"Validate a remote MCP server — reachability, JSON-RPC handshake, tool/resource/prompt inventory.","tags":["mcp","validation"]},"/api/health":{"methods":["GET"],"description":"Health check: canonical MCP counts, network graph totals, Redis live/cache status, DynamoDB read-only/degraded storage status, and uptime.","tags":["infra"]},"/api/docs":{"methods":["GET"],"description":"This endpoint — live API documentation with full tool catalog, examples, and integration guides.","tags":["docs"]},"/api/ping":{"methods":["GET"],"description":"Minimal liveness probe. Returns { ok: true, ts: <ms> }.","tags":["infra"]},"/api/register":{"methods":["POST","OPTIONS"],"description":"Alias for /api/mcp/register.","tags":["registry"]},"/api/v1/discovery":{"methods":["GET","POST","OPTIONS"],"description":"Auto-discovery engine for *.platphormnews.com. GET ?subdomain=json discovers one site; GET ?action=scan scans all; POST runs full discovery+registration.","tags":["discovery"],"parameters":{"subdomain":"Discover a specific subdomain","action":"scan | list | crawl","domain":"Domain to crawl capabilities from"}},"/api/v1/test/mcp":{"methods":["GET"],"description":"Integration test runner against live MCP server. Add ?verbose=true for full response payloads.","tags":["testing"]},"/api/v1/test/sites":{"methods":["GET","POST","OPTIONS"],"description":"Live site testing. GET ?domain=site.platphormnews.com tests one site. POST { domains: [...] } for batch (≤10 sites).","tags":["testing"]},"/.well-known/mcp.json":{"methods":["GET"],"description":"MCP discovery manifest per spec.","tags":["well-known"]},"/.well-known/ai-plugin.json":{"methods":["GET"],"description":"OpenAI ChatGPT plugin manifest.","tags":["well-known"]},"/.well-known/agents.json":{"methods":["GET"],"description":"AI agent discovery manifest — includes IDE integration configs for Cursor, Windsurf, VS Code, Claude Desktop, and Zed.","tags":["well-known"]},"/.well-known/agent-policy.json":{"methods":["GET"],"description":"Versioned public-safe agent access policy.","tags":["well-known","policy"]},"/.well-known/ai-policy.json":{"methods":["GET"],"description":"Versioned AI content access and MCP discovery policy.","tags":["well-known","policy"]},"/.well-known/web.json":{"methods":["GET"],"description":"Canonical Web Status manifest for MCP status, readiness, route evidence, source labels, and integration lanes.","tags":["well-known","web-status"]},"/.well-known/web4.json":{"methods":["GET"],"description":"Legacy Web4 compatibility manifest alias. Prefer /.well-known/web.json.","tags":["well-known","legacy-web4"]},"/.well-known/provenance.json":{"methods":["GET"],"description":"Public provenance records for capability and policy artifacts.","tags":["well-known","web-status","provenance"]},"/.well-known/platphorm.json":{"methods":["GET"],"description":"PlatPhorm MCP gateway, factory, capability graph, and policy manifest.","tags":["well-known","policy"]},"/.well-known/security.txt":{"methods":["GET"],"description":"Security contact info (RFC 9116).","tags":["well-known"]},"/.well-known/trust.json":{"methods":["GET"],"description":"TRUST policy manifest — domain trust relationships, CORS policies, MCP federation rules, CLAWS integration, and security requirements for all *.platphormnews.com and *.ph3ar.com domains.","tags":["well-known","trust","security"]},"/api/cron/health-check":{"methods":["GET"],"description":"Cron: network-wide health check (every 10 min). Protected platform automation uses PLATPHORM_API_KEY.","tags":["cron"]},"/api/cron/sitemap-sync":{"methods":["GET"],"description":"Cron: sync platphormnews.com/sitemap-main.xml (every 6 h). Protected platform automation uses PLATPHORM_API_KEY.","tags":["cron"]},"/api/cron/discovery":{"methods":["GET"],"description":"Cron: auto-discover new *.platphormnews.com sites (every hour). Protected platform automation uses PLATPHORM_API_KEY.","tags":["cron"]},"/api/cron/maintenance":{"methods":["GET"],"description":"Cron: platform maintenance tasks. Protected platform automation uses PLATPHORM_API_KEY.","tags":["cron"]},"/api/webhooks/deploy":{"methods":["GET","POST"],"description":"Webhook receiver for Vercel deployment notifications.","tags":["webhooks"]},"/api/webhooks/vercel":{"methods":["POST"],"description":"Webhook receiver for Vercel platform events.","tags":["webhooks"]},"/llms.txt":{"methods":["GET"],"description":"LLM discovery summary.","tags":["llm"]},"/llms-full.txt":{"methods":["GET"],"description":"Full LLM specification — all tools with schemas, resources, prompts, connection configs.","tags":["llm"]},"/llms-index.json":{"methods":["GET"],"description":"Structured JSON metadata for LLM agent integration.","tags":["llm"]},"/api/v1/registry/counts":{"methods":["GET"],"description":"Canonical and Phase 2 count reconciliation.","tags":["registry"]},"/api/v1/registry/drift":{"methods":["GET"],"description":"Source-labeled count drift report across dashboard, health, MCP, LLMS, OpenAPI, and storage surfaces.","tags":["registry"]},"/api/v1/discovery/sites":{"methods":["GET"],"description":"Bounded public-safe network site discovery list.","tags":["discovery"]},"/api/v1/discovery/graph":{"methods":["GET"],"description":"Capability graph JSON for tools, resources, prompts, integrations, and public routes.","tags":["discovery","graph"]},"/api/v1/capability-graph":{"methods":["GET"],"description":"Canonical capability graph response with nodes, edges, counts, drift, warnings, and errors.","tags":["discovery","graph"]},"/api/v1/factory/tools":{"methods":["GET"],"description":"Generated draft tool factory state. Drafts are not active tools until validated and published.","tags":["factory"]},"/api/v1/factory/status":{"methods":["GET"],"description":"Factory lifecycle, validation manifest status, and publication policy.","tags":["factory"]},"/api/v1/factory/validate":{"methods":["POST"],"description":"Protected generated-tool validation dry-run or execution trigger. No downstream validation is claimed without target evidence.","tags":["factory"]},"/api/v1/factory/publish":{"methods":["POST"],"description":"Protected generated-tool publication. Degrades honestly until durable approval and registry persistence exist.","tags":["factory"]},"/api/v1/gateway/status":{"methods":["GET"],"description":"MCP gateway status, proxy policy, trusted target policy, and safe metadata handling.","tags":["gateway"]},"/api/v1/demo/suite":{"methods":["GET"],"description":"Public-safe demo readiness for Root, MCP, AgentUI, Spec, Sandbox, and Evals with dry-run handoff envelopes.","tags":["demo","integrations"]},"/api/demo/readiness":{"methods":["GET"],"description":"Shared launch-readiness response alias for AgentUI and automated suite checks.","tags":["demo","integrations"]},"/api/v1/integrations/status":{"methods":["GET"],"description":"Integration matrix with honest degraded runtime status.","tags":["integrations"]},"/api/v1/agent-policy":{"methods":["GET"],"description":"Public agent platform policy API.","tags":["policy"]},"/api/v1/client-profiles":{"methods":["GET"],"description":"Secret-safe MCP client profile configs.","tags":["client"]},"/api/web/status":{"methods":["GET"],"description":"Canonical Web Status with readiness checks, source-backed counts, storage/auth mode, route evidence, and integration lanes.","tags":["web-status"]},"/api/web/manifest":{"methods":["GET"],"description":"Canonical Web Status manifest API.","tags":["web-status"]},"/api/web/scorecard":{"methods":["GET"],"description":"Web Status readiness scorecard.","tags":["web-status"]},"/api/web/fingerprints":{"methods":["GET"],"description":"Public-safe Web Status capability fingerprints.","tags":["web-status","provenance"]},"/api/web4/status":{"methods":["GET"],"description":"Legacy Web4 status compatibility alias. Prefer /api/web/status.","tags":["legacy-web4"]},"/api/web4/manifest":{"methods":["GET"],"description":"Legacy Web4 manifest compatibility alias. Prefer /api/web/manifest.","tags":["legacy-web4"]},"/api/web4/scorecard":{"methods":["GET"],"description":"Legacy Web4 scorecard compatibility alias. Prefer /api/web/scorecard.","tags":["legacy-web4"]},"/api/web4/fingerprints":{"methods":["GET"],"description":"Legacy Web4 fingerprints compatibility alias. Prefer /api/web/fingerprints.","tags":["legacy-web4","provenance"]},"/api/provenance/lookup":{"methods":["GET"],"description":"Lookup public provenance records by hash, record ID, tool, resource, or prompt.","tags":["web-status","provenance"]},"/api/provenance/verify":{"methods":["GET"],"description":"Verify public provenance record hash, visibility, publisher, trace, CID, anchor, and lifecycle state.","tags":["web-status","provenance"]},"/api/v1/audit":{"methods":["GET","POST"],"description":"Protected audit envelope preview and export boundary. Durable audit export is degraded until configured.","tags":["audit"]},"/asyncapi.yaml":{"methods":["GET"],"description":"AsyncAPI event interface for MCP registry, gateway, factory, tool-call, and handoff events.","tags":["asyncapi","events"]}},"network":{"name":"PlatPhorm News Network","rootSite":"https://www.platphormnews.com","mcpHub":"https://mcp.platphormnews.com","totalSites":142,"totalSitesSource":"https://platphormnews.com/api/network/graph","totalSitesStatus":"active","mcpEnabledSites":2,"mcpEnabledSitesSource":"curated MCP endpoint registry; not a complete network-wide MCP-capable site count. Use /api/v1/discovery/sites for merged root graph, base sitemap, bootstrap, and configured extras, and /api/v1/registry/federated-tools?live=1 for live remote tools/list probes.","mcpServers":[{"name":"platphormnews-mcp","url":"https://mcp.platphormnews.com/api/mcp","status":"active","description":"Primary MCP federation hub for the PlatPhorm News network."},{"name":"ascii-mcp","url":"https://ascii.platphormnews.com/api/mcp","status":"active","description":"ASCII Art Converter MCP server — image-to-ASCII conversion tools."}]},"security":{"authentication":"Public read-only introspection; protected write/proxy/admin actions require PLATPHORM_API_KEY.","cors":"Allowed: *.platphormnews.com, *.ph3ar.com, localhost (dev)","cronAuthentication":"Protected platform automation requires PLATPHORM_API_KEY.","registrationAuthentication":"Authorization: Bearer $PLATPHORM_API_KEY or X-PlatPhorm-API-Key: $PLATPHORM_API_KEY","rateLimit":"none — governed by Vercel Edge"},"examples":{"curl":{"initialize":"curl -i -X POST https://mcp.platphormnews.com/api/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"MCP-Protocol-Version: 2025-06-18\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2025-06-18\",\"capabilities\":{},\"clientInfo\":{\"name\":\"my-client\",\"version\":\"1.0\"}}}'","listTools":"curl https://mcp.platphormnews.com/api/mcp \\\n  -X POST -H \"Content-Type: application/json\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"tools/list\"}'","callTool":"# After initialize, send notifications/initialized with the returned Mcp-Session-Id, then call the tool.\ncurl -X POST https://mcp.platphormnews.com/api/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -H \"Mcp-Session-Id: $MCP_SESSION_ID\" \\\n  -d '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"get_network_info\",\"arguments\":{}}}'","batch":"curl -X POST https://mcp.platphormnews.com/api/mcp \\\n  -H \"Content-Type: application/json\" \\\n  -d '[{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"tools/list\"},{\"jsonrpc\":\"2.0\",\"id\":2,\"method\":\"resources/list\"}]'"},"javascript":{"initialize":"const res = await fetch(\"https://mcp.platphormnews.com/api/mcp\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application/json\", \"MCP-Protocol-Version\": \"2025-06-18\" },\n  body: JSON.stringify({\n    jsonrpc: \"2.0\", id: 1, method: \"initialize\",\n    params: { protocolVersion: \"2025-06-18\", capabilities: {}, clientInfo: { name: \"my-client\", version: \"1.0\" } }\n  })\n})\nconst { result } = await res.json()\nconst sessionId = res.headers.get(\"Mcp-Session-Id\")\nawait fetch(\"https://mcp.platphormnews.com/api/mcp\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application/json\", \"Mcp-Session-Id\": sessionId, \"MCP-Protocol-Version\": result.protocolVersion },\n  body: JSON.stringify({ jsonrpc: \"2.0\", method: \"notifications/initialized\", params: {} })\n})","callTool":"const res = await fetch(\"https://mcp.platphormnews.com/api/mcp\", {\n  method: \"POST\",\n  headers: { \"Content-Type\": \"application/json\", \"Mcp-Session-Id\": sessionId },\n  body: JSON.stringify({\n    jsonrpc: \"2.0\", id: 2, method: \"tools/call\",\n    params: { name: \"get_network_info\", arguments: {} }\n  })\n})\nconst { result } = await res.json()"},"python":{"initialize":"import httpx, json\n\nclient = httpx.Client()\nresp = client.post(\"https://mcp.platphormnews.com/api/mcp\",\n    headers={\"MCP-Protocol-Version\": \"2025-06-18\"},\n    json={\n        \"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"initialize\",\n        \"params\": {\"protocolVersion\": \"2025-06-18\", \"capabilities\": {}, \"clientInfo\": {\"name\": \"py-client\", \"version\": \"1.0\"}}\n    })\nsession_id = resp.headers.get(\"Mcp-Session-Id\")\nclient.post(\"https://mcp.platphormnews.com/api/mcp\",\n    headers={\"Mcp-Session-Id\": session_id, \"MCP-Protocol-Version\": resp.json()[\"result\"][\"protocolVersion\"]},\n    json={\"jsonrpc\": \"2.0\", \"method\": \"notifications/initialized\", \"params\": {}})","callTool":"resp = client.post(\"https://mcp.platphormnews.com/api/mcp\",\n    headers={\"Mcp-Session-Id\": session_id},\n    json={\"jsonrpc\": \"2.0\", \"id\": 2, \"method\": \"tools/call\",\n          \"params\": {\"name\": \"get_network_sites\", \"arguments\": {}}})\nprint(resp.json()[\"result\"])"}},"jsonrpc":{"version":"2.0","methods":["initialize","notifications/initialized","tools/list","tools/call","resources/list","resources/read","prompts/list","prompts/get","ping"],"errorCodes":{"-32700":"Parse error — invalid JSON","-32600":"Invalid request","-32601":"Method not found","-32602":"Invalid params","-32603":"Internal server error"},"batchRequests":"Supported — POST an array of JSON-RPC objects","sessionManagement":"Mcp-Session-Id header issued on initialize; include in subsequent requests","supportedProtocolVersions":["2025-06-18","2024-11-05"],"tracingHeader":"X-Request-Id UUID emitted on every response"},"infrastructure":{"vercel":{"crons":[{"path":"/api/cron/health-check","schedule":"*/10 * * * *"},{"path":"/api/cron/sitemap-sync","schedule":"0 */6 * * *"},{"path":"/api/cron/discovery","schedule":"0 * * * *"}],"webhooks":["deploy","vercel"],"analytics":true,"edge":"middleware"},"redis":"Upstash Redis — live/cache state and storage metadata when connected; not canonical for MCP counts","dynamodb":"AWS DynamoDB — degraded/read-only storage adapter when configured; not canonical for live MCP counts","neon":"Neon Postgres — orchestration layer"},"changelog":[{"version":"0.1.0","date":"2026-05","notes":"140 tools, 16 resources, 23 prompts; single source of truth for version constants; accurate capability counts; no stale literal counts anywhere"},{"version":"0.0.5","date":"2025-03","notes":"HEAD method; batch JSON-RPC; X-Request-Id tracing; /api/mcp/validate"},{"version":"0.0.4","date":"2025-02","notes":"DynamoDB read-only tools; orchestrator tools; vertical tools"},{"version":"0.0.3","date":"2025-01","notes":"Federation tools; Product Hunt integration; proxy tools"},{"version":"0.0.2","date":"2024-12","notes":"Site registry; event store; deployment tracking; GitHub tools"},{"version":"0.0.1","date":"2024-11","notes":"Initial release — local content, categories, FAQs, and search tools before the gateway was promoted to the network-wide MCP role"}],"links":{"mcp":"https://mcp.platphormnews.com/api/mcp","health":"https://mcp.platphormnews.com/api/health","capabilities":"https://mcp.platphormnews.com/api/mcp/capabilities","discovery":"https://mcp.platphormnews.com/.well-known/mcp.json","openapi":"https://mcp.platphormnews.com/openapi.yaml","dashboard":"https://mcp.platphormnews.com/mcp","docs":"https://mcp.platphormnews.com/docs","test":"https://mcp.platphormnews.com/api/v1/test/mcp","testSites":"https://mcp.platphormnews.com/api/v1/test/sites","liveTestingUI":"https://mcp.platphormnews.com/mcp/test","llms":"https://mcp.platphormnews.com/llms.txt","llms-full":"https://mcp.platphormnews.com/llms-full.txt","sitemap":"https://mcp.platphormnews.com/sitemap.xml","sitemapMain":"https://platphormnews.com/sitemap-main.xml","webStatus":"https://mcp.platphormnews.com/api/web/status","webManifest":"https://mcp.platphormnews.com/.well-known/web.json"},"generatedAt":"2026-06-05T19:29:48.818Z"}