MCP Tools

Generated from the live tool registry — these match exactly what tools/list returns.

search_skills

Search the AI Coach skill library by free text and/or category.

Input schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Free-text search query (matches name/description/tags)"
    },
    "category": {
      "type": "string",
      "description": "Filter by category slug (e.g. \"engineering\")"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "default": 20
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "default": 0
    }
  },
  "additionalProperties": false
}

get_skill

Fetch a single skill including its full SKILL.md content, install command, and capabilities.

Input schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Skill slug, e.g. \"code-reviewer\""
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}

install_skill

Returns a copy-paste install command for a given skill, tailored to the target agent (Claude Code, Cursor, Codex, Zed, or generic).

Input schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Skill slug to install"
    },
    "client": {
      "type": "string",
      "enum": [
        "claude-code",
        "cursor",
        "codex",
        "zed",
        "generic"
      ],
      "default": "generic",
      "description": "Target agent — controls which install snippet is returned"
    }
  },
  "required": [
    "slug"
  ],
  "additionalProperties": false
}

search_marketplace

Search the AI Coach marketplace — MCP servers and curated AI products.

Input schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Free-text search query"
    },
    "kind": {
      "type": "string",
      "enum": [
        "mcp",
        "product",
        "all"
      ],
      "default": "all",
      "description": "Filter results by item kind"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "default": 20
    }
  },
  "additionalProperties": false
}

list_models

List the LLMs available through AI Coach (read-only catalog metadata: provider, context window, costs, capabilities).

Input schema

{
  "type": "object",
  "properties": {
    "provider": {
      "type": "string",
      "description": "Filter by provider id (anthropic, openai, google-ai-studio, deepseek, groq, mistral, workers-ai, ai-gateway)"
    }
  },
  "additionalProperties": false
}

compare_models

Compare two or more models side-by-side. Returns context windows, max output, per-million-token costs, and capability flags.

Input schema

{
  "type": "object",
  "properties": {
    "ids": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 6,
      "description": "Catalog ids to compare side-by-side"
    }
  },
  "required": [
    "ids"
  ],
  "additionalProperties": false
}

run_tool

Execute a sync nano-app tool against the user's input. Requires a Bearer key with the mcp:tools scope. Returns the tool's text output. Pay-per-use tools debit the wallet; insufficient balance returns a payment_required content block.

Input schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Tool slug (from search_tools) — e.g. \"text-summarizer\", \"ai-post-maker\", \"markdown-to-pdf\""
    },
    "input": {
      "type": "string",
      "description": "Free-text input to the tool. The tool decides how to interpret it."
    }
  },
  "required": [
    "slug",
    "input"
  ],
  "additionalProperties": false
}

search_tools

List or search the AI Coach nano-app tools (text summarizer, post maker, persona creator, markdown→PDF, etc.). Each result includes whether the tool is free, free-metered, or pay-per-use.

Input schema

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Free-text search query (matches name/description/category)"
    },
    "category": {
      "type": "string",
      "description": "Filter by category (converter|generator|analyzer|formatter|other)"
    }
  },
  "additionalProperties": false
}

run_model_bakeoff

Send the same prompt to multiple models in parallel and return their outputs side-by-side with per-model latency and tokens. Free tier: ≤3 models, ≤8k output. Paid: up to 6 models. Requires mcp:bakeoff scope.

Input schema

{
  "type": "object",
  "properties": {
    "prompt": {
      "type": "string",
      "description": "The prompt to send to every model"
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 2,
      "maxItems": 6,
      "description": "Catalog ids — get from list_models"
    },
    "system": {
      "type": "string",
      "description": "Optional system prompt sent to every model"
    },
    "maxOutputTokens": {
      "type": "integer",
      "minimum": 64,
      "maximum": 8192,
      "default": 1024,
      "description": "Output token cap per model"
    }
  },
  "required": [
    "prompt",
    "models"
  ],
  "additionalProperties": false
}

share_model_report

Persist a bake-off as a public report and return a shareable URL (https://aicoach.pw/share/r/<id>).

Input schema

{
  "type": "object",
  "properties": {
    "reportId": {
      "type": "string",
      "description": "Report id returned by run_model_bakeoff"
    }
  },
  "required": [
    "reportId"
  ],
  "additionalProperties": false
}

publish_skill

Publish a skill to the caller's AI Coach catalog in one shot: create (or reuse) the skill record, reserve a new version, upload the bundle bytes, and finalize after server-side validation. Requires an API key with the publisher:write scope. Bundle is gzipped tarball, markdown-only payload (SKILL.md + optional references/, assets/, LICENSE), ≤ 5 MB.

Input schema

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "description": "Skill slug, kebab-case, 1–64 chars. Must match the `name:` in SKILL.md frontmatter."
    },
    "displayName": {
      "type": "string",
      "description": "Human-readable name shown in search results."
    },
    "descriptionShort": {
      "type": "string",
      "description": "One-liner shown in search results, max 200 chars."
    },
    "descriptionLong": {
      "type": "string",
      "description": "Optional long-form description (markdown)."
    },
    "tags": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Optional tag strings."
    },
    "iconUrl": {
      "type": "string",
      "description": "Optional icon URL."
    },
    "visibility": {
      "type": "string",
      "enum": [
        "private",
        "unlisted",
        "public"
      ],
      "default": "private",
      "description": "private = only you; unlisted = anyone with the link; public = discoverable."
    },
    "pricingModel": {
      "type": "string",
      "enum": [
        "free",
        "one_time"
      ],
      "default": "free"
    },
    "priceCents": {
      "type": "integer",
      "minimum": 100,
      "maximum": 100000,
      "description": "Required when pricingModel=\"one_time\". Between $1.00 and $1000.00."
    },
    "semver": {
      "type": "string",
      "description": "Version of this bundle. e.g. \"0.1.0\". Must be strictly greater than the previous finalized version."
    },
    "changelog": {
      "type": "string",
      "description": "Optional changelog for this version."
    },
    "bundleBase64": {
      "type": "string",
      "description": "The skill bundle (gzipped tarball, ≤ 5 MB after base64-decode), base64-encoded. Must contain SKILL.md at the root."
    }
  },
  "required": [
    "slug",
    "displayName",
    "descriptionShort",
    "semver",
    "bundleBase64"
  ],
  "additionalProperties": false
}

list_my_skills

List skills published by the authenticated publisher. Requires the publisher:read or publisher:write scope.

Input schema

{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}