Skip to main content
๐Ÿ’ปโšก๐Ÿ—„๏ธ๐Ÿ–ฅ๏ธ๐Ÿ”’mcpSource: mcp.platphormnews.comdevelopers

PlatphormNews MCP Platform API

MCP Server with 71 tools, 16 resources, and 23 prompts for platform news management, site registry (84+ sites), GitHub integration, Product Hunt, federation, network discovery, auto-discovery, DynamoDB persistence, and cross-site MCP proxy.

30 min read5,833 words

{ "name": "PlatphormNews MCP Platform API", "version": "0.1.0", "description": "MCP Server with 71 tools, 16 resources, and 23 prompts for platform news management, site registry (84+ sites), GitHub integration, Product Hunt, federation, network discovery, auto-discovery, DynamoDB persistence, and cross-site MCP proxy.", "protocolVersion": "2024-11-05", "transport": "streamable-http", "stats": { "tools": 71, "resources": 16, "prompts": 23 }, "tools": [ { "name": "getnetworkinfo", "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": "networkstatus", "description": "Check the status of the entire PlatPhorm News network or specific sites.", "inputSchema": { "type": "object", "properties": { "domain": { "type": "string" } } } }, { "name": "getnetworksites", "description": "List all known sites in the PlatPhorm News network (.platphormnews.com, .ph3ar.com). Returns hardcoded registry โ€” always available.", "inputSchema": { "type": "object", "properties": { "vertical": { "type": "string" }, "mcpOnly": { "type": "boolean" }, "withApiDocs": { "type": "boolean" } } } }, { "name": "getnetworkmcpservers", "description": "List all MCP-enabled servers in the PlatPhorm News federation. Always available (hardcoded + optional Redis overlay).", "inputSchema": { "type": "object", "properties": {} } }, { "name": "resolvenetworkdomain", "description": "Resolve any .platphormnews.com or .ph3ar.com domain to its site data. Falls back to hardcoded registry if Redis is unavailable.", "inputSchema": { "type": "object", "properties": { "domain": { "type": "string", "description": "Domain to resolve (e.g. ascii.platphormnews.com)" } }, "required": [ "domain" ] } }, { "name": "fetchnetworksitemap", "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": "discoversiteapi", "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": "getsitehealth", "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": "listarticles", "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": "getarticle", "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": "createarticle", "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": "updatearticle", "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": "deletearticle", "description": "Soft-delete an article by archiving it.", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Article ID to archive" } }, "required": [ "id" ] } }, { "name": "publisharticle", "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": "listcategories", "description": "List all content categories.", "inputSchema": { "type": "object", "properties": {} } }, { "name": "createcategory", "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": "updatecategory", "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": "deletecategory", "description": "Delete a category by ID.", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Category ID" } }, "required": [ "id" ] } }, { "name": "listfaqs", "description": "List all FAQs, optionally filtered by category.", "inputSchema": { "type": "object", "properties": { "category": { "type": "string" } } } }, { "name": "createfaq", "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": "updatefaq", "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": "deletefaq", "description": "Permanently delete an FAQ entry by ID.", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "FAQ ID" } }, "required": [ "id" ] } }, { "name": "searcharticles", "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": "getanalytics", "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": "listorgrepos", "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", "fullname" ] }, "perpage": { "type": "number" }, "page": { "type": "number" }, "includearchived": { "type": "boolean" } }, "required": [ "org" ] } }, { "name": "getrepodetails", "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" }, "includereadme": { "type": "boolean" }, "includecontributors": { "type": "boolean" } }, "required": [ "owner", "repo" ] } }, { "name": "getorginfo", "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": "searchorgcode", "description": "Search code across supported orgs (mbarbine, process-co, ph3ar). Requires GITHUBTOKEN.", "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" }, "perpage": { "type": "number" } }, "required": [ "query", "org" ] } }, { "name": "gettrendingrepos", "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" ] }, "perpage": { "type": "number" } } } }, { "name": "listsites", "description": "List all registered sites in the platform registry with optional vertical filter.", "inputSchema": { "type": "object", "properties": { "vertical": { "type": "string" } } } }, { "name": "getsite", "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": "registersite", "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": "generatesitetoken", "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": "registercapability", "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": "updatesite", "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": "resolvedomain", "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": "listsitedomains", "description": "List all domain aliases for a given site.", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Site ID" } }, "required": [ "id" ] } }, { "name": "syncsitemap", "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": "crawlsitecapabilities", "description": "Crawl and index tools, resources, and prompts from all MCP-enabled sites in the network.", "inputSchema": { "type": "object", "properties": { "siteId": { "type": "string" } } } }, { "name": "validatesitemcp", "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": "listevents", "description": "List recent platform events from the outbox with optional type filter.", "inputSchema": { "type": "object", "properties": { "limit": { "type": "number" }, "type": { "type": "string" } } } }, { "name": "getaudittrail", "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": "emitevent", "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": "listdeployments", "description": "List recent deployments, optionally scoped to a specific site.", "inputSchema": { "type": "object", "properties": { "siteId": { "type": "string" }, "limit": { "type": "number" } } } }, { "name": "recorddeployment", "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": "getdeployment", "description": "Get deployment details by ID.", "inputSchema": { "type": "object", "properties": { "id": { "type": "string", "description": "Deployment ID" } }, "required": [ "id" ] } }, { "name": "searchallsites", "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": "aggregateanalytics", "description": "Roll up analytics (view counts, trending articles) across the platform.", "inputSchema": { "type": "object", "properties": { "trendingLimit": { "type": "number" } } } }, { "name": "getplatformstats", "description": "Get platform-wide statistics: total sites, articles, deployments, events, and audit entries.", "inputSchema": { "type": "object", "properties": {} } }, { "name": "searchproducthunt", "description": "Search Product Hunt posts by topic/keyword. Requires PRODUCTHUNTTOKEN env var.", "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "description": "Search query or topic" }, "first": { "type": "number" } }, "required": [ "query" ] } }, { "name": "getproducthuntpost", "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": "trendingproducthunt", "description": "Get today's trending Product Hunt launches sorted by votes.", "inputSchema": { "type": "object", "properties": { "first": { "type": "number" } } } }, { "name": "listmcpservers", "description": "List all known MCP servers across the platform, including status and endpoints.", "inputSchema": { "type": "object", "properties": {} } }, { "name": "proxymcpcall", "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 listmcpservers)" }, "tool": { "type": "string", "description": "Tool name to call on remote server" }, "args": { "type": "object", "additionalProperties": true } }, "required": [ "server", "tool" ] } }, { "name": "trackevent", "description": "Track a custom platform event for orchestration and analytics.", "inputSchema": { "type": "object", "properties": { "type": { "type": "string", "description": "Event type (e.g. toolinvocation, siteregistration, error)" }, "source": { "type": "string", "description": "Source of the event (e.g. siteid, userid)" }, "data": { "type": "object", "additionalProperties": true, "description": "Event payload" } }, "required": [ "type", "source", "data" ] } }, { "name": "listrecentevents", "description": "List recent platform events with optional type filtering.", "inputSchema": { "type": "object", "properties": { "type": { "type": "string" }, "limit": { "type": "number" } } } }, { "name": "listneoninfrastructure", "description": "List all Neon serverless Postgres projects and their status.", "inputSchema": { "type": "object", "properties": {} } }, { "name": "listrenderinfrastructure", "description": "List all Render services (web services, crons, DBs) and their live status.", "inputSchema": { "type": "object", "properties": {} } }, { "name": "listvercelinfrastructure", "description": "List all Vercel projects and their basic metadata.", "inputSchema": { "type": "object", "properties": { "teamId": { "type": "string" } } } }, { "name": "getvercelprojectdetails", "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": "searchcapabilitygraph", "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": "getsubdomainorchestrationprofile", "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": "getnetworkhealthsummary", "description": "Provides a high-level orchestration health summary for the entire network. Ideal for monitor dashboards.", "inputSchema": { "type": "object", "properties": {} } }, { "name": "getquakestats", "description": "Get live server statistics and player counts for quake.platphormnews.com.", "inputSchema": { "type": "object", "properties": {} } }, { "name": "searchplatformjobs", "description": "Search for job openings across the PlatphormNews network.", "inputSchema": { "type": "object", "properties": { "query": { "type": "string" } } } }, { "name": "getfashiontrends", "description": "Fetch AI-analyzed fashion trends for fashion.platphormnews.com.", "inputSchema": { "type": "object", "properties": {} } }, { "name": "dynamolistsites", "description": "List all registered sites from DynamoDB (source of truth for 84+ sites). Supports vertical filtering. Returns full site metadata including domains, MCP status, and API docs URLs. Used by monitor.platphormnews.com.", "inputSchema": { "type": "object", "properties": { "vertical": { "type": "string" }, "limit": { "type": "number" } } } }, { "name": "dynamogetsite", "description": "Get a single site from DynamoDB by siteId or domain. Returns full metadata, MCP configuration, aliases, and status. Falls back to resolvenetworkdomain if DynamoDB is unavailable.", "inputSchema": { "type": "object", "properties": { "siteId": { "type": "string" }, "domain": { "type": "string" } } } }, { "name": "dynamolistarticles", "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": "dynamolistevents", "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": "dynamotableinfo", "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": [ "getnetworkinfo", "getnetworksites", "getnetworkmcpservers", "resolvenetworkdomain", "fetchnetworksitemap", "discoversiteapi", "getnetworkhealthsummary" ], "other": [ "networkstatus", "resolvedomain", "searchproducthunt", "getproducthuntpost", "trendingproducthunt" ], "sites": [ "getsitehealth", "listsites", "getsite", "registersite", "generatesitetoken", "registercapability", "updatesite", "listsitedomains", "syncsitemap", "crawlsitecapabilities", "validatesitemcp" ], "content": [ "listarticles", "getarticle", "createarticle", "updatearticle", "deletearticle", "publisharticle", "searcharticles" ], "categories": [ "listcategories", "createcategory", "updatecategory", "deletecategory" ], "faqs": [ "listfaqs", "createfaq", "updatefaq", "deletefaq" ], "search": [ "getanalytics" ], "github": [ "listorgrepos", "getrepodetails", "getorginfo", "searchorgcode", "gettrendingrepos" ], "events": [ "listevents", "getaudittrail", "emitevent" ], "deployments": [ "listdeployments", "recorddeployment", "getdeployment" ], "federation": [ "searchallsites", "aggregateanalytics", "getplatformstats" ], "proxy": [ "listmcpservers", "proxymcpcall" ], "analytics": [ "trackevent", "listrecentevents" ], "orchestrator": [ "listneoninfrastructure", "listrenderinfrastructure", "listvercelinfrastructure", "getvercelprojectdetails", "searchcapabilitygraph", "getsubdomainorchestrationprofile" ], "verticals": [ "getquakestats", "searchplatformjobs", "getfashiontrends" ], "dynamodb": [ "dynamolistsites", "dynamogetsite", "dynamolistarticles", "dynamolistevents", "dynamotableinfo" ] }, "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": "styleguide", "description": "Style guide to follow", "required": false } ] }, { "name": "network-health-report", "description": "Generate comprehensive network health report", "arguments": [ { "name": "includedetails", "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": "analysistype", "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": "maptype", "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": "imageurl", "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": "getnetworksites" } }, "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 REGISTRATIONSECRET if configured.", "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: Redis + DynamoDB connectivity, platform stats, 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/security.txt": { "methods": [ "GET" ], "description": "Security contact info (RFC 9116).", "tags": [ "well-known" ] }, "/api/cron/health-check": { "methods": [ "GET" ], "description": "Cron: network-wide health check (every 10 min). Requires CRONSECRET.", "tags": [ "cron" ] }, "/api/cron/sitemap-sync": { "methods": [ "GET" ], "description": "Cron: sync platphormnews.com/sitemap-main.xml (every 6 h). Requires CRONSECRET.", "tags": [ "cron" ] }, "/api/cron/discovery": { "methods": [ "GET" ], "description": "Cron: auto-discover new .platphormnews.com sites (every hour). Requires CRONSECRET.", "tags": [ "cron" ] }, "/api/cron/maintenance": { "methods": [ "GET" ], "description": "Cron: platform maintenance tasks. Requires CRONSECRET.", "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" ] } }, "network": { "name": "PlatPhorm News Network", "rootSite": "https://platphormnews.com", "mcpHub": "https://mcp.platphormnews.com", "totalSites": 84, "mcpEnabledSites": 12, "mcpServers": [ { "name": "platphormnews-mcp", "url": "https://mcp.platphormnews.com/api/mcp", "status": "active", "description": "Primary hub โ€” PlatPhorm News platform orchestration." }, { "name": "json-mcp", "url": "https://json.platphormnews.com/api/mcp", "status": "active", "description": "JSON Tree โ€” parse, format, validate, diff JSON documents." }, { "name": "desa-mcp", "url": "https://desa.platphormnews.com/api/mcp", "status": "active", "description": "DESA โ€” data engineering and analytics platform." }, { "name": "atlas-mcp", "url": "https://atlas.platphormnews.com/api/mcp", "status": "active", "description": "Atlas โ€” geographic and spatial data platform." }, { "name": "monitor-mcp", "url": "https://monitor.platphormnews.com/api/mcp", "status": "active", "description": "Monitor โ€” network monitoring and health dashboard." }, { "name": "ascii-mcp", "url": "https://ascii.platphormnews.com/api/mcp", "status": "active", "description": "ASCII tools โ€” image to ASCII conversion." }, { "name": "quake-mcp", "url": "https://quake.platphormnews.com/api/mcp", "status": "active", "description": "Gaming โ€” QuakeJS Arena server stats." }, { "name": "calendar-mcp", "url": "https://calendar.platphormnews.com/api/mcp", "status": "active", "description": "Calendar โ€” events and scheduling." }, { "name": "ph3ar-mcp", "url": "https://mcp.ph3ar.com/api/mcp", "status": "active", "description": "PH3AR network โ€” security and AI threat intelligence." } ] }, "security": { "authentication": "none โ€” open API", "cors": "Allowed: .platphormnews.com, .ph3ar.com, localhost (dev)", "cronAuthentication": "Bearer CRONSECRET (HMAC-timing-safe)", "registrationAuthentication": "Bearer REGISTRATIONSECRET (if configured)", "rateLimit": "none โ€” governed by Vercel Edge" }, "examples": { "curl": { "initialize": "curl -X POST https://mcp.platphormnews.com/api/mcp \\\n -H \"Content-Type: application/json\" \\\n -d '{\"jsonrpc\":\"2.0\",\"id\":1,\"method\":\"initialize\",\"params\":{\"protocolVersion\":\"2024-11-05\",\"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": "curl -X POST https://mcp.platphormnews.com/api/mcp \\\n -H \"Content-Type: application/json\" \\\n -d '{\"jsonrpc\":\"2.0\",\"id\":3,\"method\":\"tools/call\",\"params\":{\"name\":\"getnetworkinfo\",\"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\" },\n body: JSON.stringify({\n jsonrpc: \"2.0\", id: 1, method: \"initialize\",\n params: { protocolVersion: \"2024-11-05\", capabilities: {}, clientInfo: { name: \"my-client\", version: \"1.0\" } }\n })\n})\nconst { result } = await res.json()\nconst sessionId = res.headers.get(\"Mcp-Session-Id\")", "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: \"getnetworkinfo\", 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\", json={\n \"jsonrpc\": \"2.0\", \"id\": 1, \"method\": \"initialize\",\n \"params\": {\"protocolVersion\": \"2024-11-05\", \"capabilities\": {}, \"clientInfo\": {\"name\": \"py-client\", \"version\": \"1.0\"}}\n})\nsessionid = resp.headers.get(\"Mcp-Session-Id\")", "callTool": "resp = client.post(\"https://mcp.platphormnews.com/api/mcp\",\n headers={\"Mcp-Session-Id\": sessionid},\n json={\"jsonrpc\": \"2.0\", \"id\": 2, \"method\": \"tools/call\",\n \"params\": {\"name\": \"getnetwork_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", "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 โ€” site registry, event store, audit log", "dynamodb": "AWS DynamoDB โ€” read-only content persistence", "neon": "Neon Postgres โ€” orchestration layer" }, "changelog": [ { "version": "0.1.0", "date": "2026-03", "notes": "71 tools, 16 resources, 23 prompts; centralized version constants; accurate capability counts; enhanced README; capabilities endpoint with category breakdown" }, { "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 โ€” content, categories, FAQs, search" } ], "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" }, "generatedAt": "2026-03-15T00:12:46.137Z" }

Source Attribution
OpenDocs keeps source fields explicit. Unknown values are labeled instead of invented.

Source domain

mcp.platphormnews.com

Author

Unknown

Publisher

mcp.platphormnews.com

License / usage

Unknown. Review the original source terms before republishing beyond public-safe excerpts.

Score
Version docs-phase3-2026-05-20
88

Overall quality score, confidence 81%

Source credibility90
Freshness93
Completeness100
Extraction quality75
Attribution confidence90
Readability
difficult | grade 43.5 | format 25

56 sentences, 0 headings, 0 list items.

Add descriptive headings to make the document easier to scan.

Shorten long sentences for public documentation readability.

Search Appearance
canonical document page
OpenDocs keeps inspected URLs, canonical URLs, snippets, and rich-result signals explicit; Search Console metrics are not treated as visits.
Social Card
PlatphormNews MCP Platform API
MCP Server with 71 tools, 16 resources, and 23 prompts for platform news management, site registry (84+ sites), GitHub integration, Product Hunt, federation, network discovery, auto-discovery, DynamoDB persistence, and cross-site MCP proxy.
Duplicate State
No duplicate is asserted on this page without a matching canonical URL or content hash cluster.
Trace
docs-score-a985f5d460efdfa13f18b974
Export
Use public export endpoints for Markdown/JSON. Protected publishing still requires PLATPHORM_API_KEY.