{
  "$schema": "https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json",
  "version": "1.0",
  "protocolVersion": "2025-06-18",
  "serverInfo": {
    "name": "appframe",
    "title": "AppFrame",
    "version": "1.0.0"
  },
  "description": "Read-only MCP server for AppFrame: site info and pricing, editor themes, App Store app search and blog posts.",
  "documentationUrl": "https://appfra.me/docs",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://appfra.me/mcp"
  },
  "authentication": {
    "required": false
  },
  "capabilities": {
    "tools": {
      "listChanged": false
    },
    "resources": {
      "listChanged": false,
      "subscribe": false
    }
  },
  "tools": [
    {
      "name": "get_appframe_info",
      "title": "AppFrame info and pricing",
      "description": "What AppFrame is, how it works, Free vs Pro plans and prices, contact and links.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "list_themes",
      "title": "List themes, fonts and formats",
      "description": "Lists the showcase themes (category, free or Pro), fonts and social export formats of the AppFrame editor.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    },
    {
      "name": "search_apps",
      "title": "Search App Store apps",
      "description": "Looks up an iOS app on the Apple App Store and returns it with the AppFrame editor URL to create a launch image. Pass the App Store ID or URL for a reliable result; search by name is best-effort and may return upstream_error.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "minLength": 1,
            "maxLength": 100,
            "description": "App Store ID or App Store URL (reliable), or app name (best-effort)"
          },
          "country": {
            "type": "string",
            "pattern": "^[a-zA-Z]{2}$",
            "description": "2-letter App Store country code, default us"
          }
        },
        "required": [
          "q"
        ],
        "additionalProperties": false
      }
    },
    {
      "name": "list_blog_posts",
      "title": "List blog posts",
      "description": "Lists AppFrame blog articles on iOS app marketing, ASO and launch strategy with their URLs.",
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false
      }
    }
  ],
  "resources": [
    {
      "uri": "appframe://info",
      "name": "info",
      "mimeType": "application/json"
    },
    {
      "uri": "appframe://themes",
      "name": "themes",
      "mimeType": "application/json"
    },
    {
      "uri": "https://appfra.me/llms.txt",
      "name": "llms.txt",
      "mimeType": "text/markdown"
    }
  ]
}