{
  "$schema": "https://modelcontextprotocol.io/schemas/draft/server.json",
  "name": "metatuner",
  "title": "MetaTuner",
  "description": "Tool Engine Optimization (TEO) for MCP. Score an MCP server's tool metadata with the MetaTuner rubric, audit a public MCP endpoint, and read invocation analytics for your own MetaTuner projects.",
  "version": "0.2.0",
  "websiteUrl": "https://metatuner.ai",
  "documentationUrl": "https://metatuner.ai/mcp",
  "repository": {
    "url": "https://github.com/shtokolov-k/mcp-analytics-ts",
    "source": "github",
    "description": "Companion TypeScript SDK for MCP invocation analytics."
  },
  "contact": {
    "url": "https://metatuner.ai/contact"
  },
  "license": "Proprietary",
  "icons": [
    {
      "src": "https://metatuner.ai/metatuner-logo-mark.png",
      "sizes": "512x512",
      "mimeType": "image/png"
    }
  ],
  "agentResources": {
    "llmsTxt": "https://metatuner.ai/llms.txt",
    "fullTextCorpus": "https://metatuner.ai/llms-full.txt",
    "docs": "https://metatuner.ai/mcp"
  },
  "remotes": [
    {
      "type": "streamable-http",
      "url": "https://dersubrqatbvvmzwkmsj.supabase.co/functions/v1/mcp-public",
      "description": "Public endpoint. No authentication. Rate-limited per client IP; exceeding the limit returns HTTP 429 — back off and retry later. Tools: audit_mcp_server, score_metadata.",
      "authentication": "none"
    },
    {
      "type": "streamable-http",
      "url": "https://dersubrqatbvvmzwkmsj.supabase.co/functions/v1/mcp",
      "description": "Authenticated endpoint (OAuth 2.1 with dynamic client registration). Adds list_my_projects and get_project_stats for the signed-in MetaTuner account.",
      "authentication": "oauth2"
    }
  ],
  "tools": [
    {
      "name": "audit_mcp_server",
      "title": "Audit an MCP server",
      "description": "Given a public MCP server URL, fetch its tool catalog and score its metadata with the MetaTuner rubric (0-100 MetaScore plus per-category breakdown and issues). The score is deterministic and rules-based; no LLM is in the scoring loop.",
      "readOnly": true,
      "inputSummary": "url (string, required): the MCP server's streamable-HTTP endpoint URL. authToken (string, optional): bearer token for servers that require auth.",
      "example": {
        "arguments": { "url": "https://docs.mcp.cloudflare.com/mcp" },
        "returns": "MetaScore 0-100, per-category breakdown (spec compliance, invocation intent, starter prompts, parameter quality, tool naming, UX readiness), and a list of issues."
      }
    },
    {
      "name": "score_metadata",
      "title": "Score MCP metadata",
      "description": "Score an app + tools metadata JSON with the MetaTuner rubric. Returns a MetaScore (0-100), per-category breakdown, and issues. Deterministic: the same input always yields the same score.",
      "readOnly": true,
      "inputSummary": "metadata (object, required): { name, description, tools: [{ name, description, inputSchema }] } — the metadata to score, no live server needed.",
      "example": {
        "arguments": {
          "metadata": {
            "name": "weather",
            "description": "Look up current weather. Call when the user asks about conditions in a named city.",
            "tools": [
              {
                "name": "get_current_weather",
                "description": "Return current temperature and conditions for a city. Call when the user names a city and asks about weather now.",
                "inputSchema": { "type": "object", "properties": { "city": { "type": "string", "description": "City name, e.g. Amsterdam" } }, "required": ["city"] }
              }
            ]
          }
        },
        "returns": "MetaScore 0-100 with per-category breakdown and issues."
      }
    },
    {
      "name": "list_my_projects",
      "title": "List my MCP projects",
      "description": "List MetaTuner MCP projects owned by the signed-in user. Requires OAuth.",
      "readOnly": true,
      "inputSummary": "No arguments.",
      "example": {
        "arguments": {},
        "returns": "Array of the caller's projects with id, name, and endpoint."
      }
    },
    {
      "name": "get_project_stats",
      "title": "Get project invocation stats",
      "description": "Recent invocation stats (events, per-tool counts, success rate, providers) for a MetaTuner project the caller owns. Requires OAuth.",
      "readOnly": true,
      "inputSummary": "project_id (string, required): id of a project owned by the caller, as returned by list_my_projects.",
      "example": {
        "arguments": { "project_id": "<id from list_my_projects>" },
        "returns": "Event counts, per-tool invocation counts, success rate, and provider breakdown for the recent window."
      }
    }
  ]
}
