Patreon MCP by usefulapi

Read campaigns, tiers, patrons, posts and profile details in Patreon.

Should I use this

Quality & Safety

A
Description quality
97%
Schema completeness
89%
Naming quality
80%
Poisoning risk
80%
Permission match
100%
Protocol compliance
100%

Findings (2)

  • HIGHTool poisoning patterns detected
  • LOWTool description contains role marker that could confuse chat modelsin patreon_get_identity

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~1,154Tokens (tool definitions)
~1.0 KBTypical response size
Moderate attention impact (0.90% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "patreon": {
      "url": "https://patreon.usefulapi.io/mcp"
    }
  }
}

Remote endpoints

https://patreon.usefulapi.io/mcpstreamable-http

What it can do

Tool inventory

Tools (7)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢patreon_get_identity

Return the signed-in Patreon user: name, profile URL and id. If the user owns a creator campaign, the campaign is included. Good first call to find the campaign id. Patreon: GET /identity.

Input Schema

{
  "type": "object",
  "properties": {},
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢patreon_list_campaigns(page_count, cursor)

List the creator campaigns the signed-in user owns, with their tiers (price levels) and patron counts. Patreon: GET /campaigns (needs the campaigns scope).

Input Schema

{
  "type": "object",
  "properties": {
    "page_count": {
      "description": "Items per page (default 25, max 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "cursor": {
      "description": "Pagination cursor: meta.pagination.cursors.next from the previous page.",
      "type": "string"
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢patreon_get_campaign(campaign_id)

Return one campaign by id: name, summary, patron count, pay-per-name and its tiers. Patreon: GET /campaigns/{campaign_id}.

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Patreon id: a campaign id (patreon_list_campaigns) or a post id (patreon_list_posts)."
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢patreon_list_members(campaign_id, page_count, cursor)

List the patrons (members) of a campaign: patron status, lifetime support, current entitlement, last and next charge dates and their tiers. Names can be empty when a patron hides them. Email and address are not returned. Patreon: GET /campaigns/{campaign_id}/members (needs campaigns.members).

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Patreon id: a campaign id (patreon_list_campaigns) or a post id (patreon_list_posts)."
    },
    "page_count": {
      "description": "Items per page (default 25, max 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "cursor": {
      "description": "Pagination cursor: meta.pagination.cursors.next from the previous page.",
      "type": "string"
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢patreon_get_member(member_id)

Return one membership by member id (a UUID, not the user id): patron status, charge history fields and current tiers. Patreon: GET /members/{member_id} (needs campaigns.members).

Input Schema

{
  "type": "object",
  "properties": {
    "member_id": {
      "type": "string",
      "format": "uuid",
      "pattern": "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$",
      "description": "Member UUID from patreon_list_members."
    }
  },
  "required": [
    "member_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢patreon_list_posts(campaign_id, page_count, cursor)

List the posts of a campaign with title, URL, publish date and access flags (public, paid). Post bodies are not included: use patreon_get_post. Patreon: GET /campaigns/{campaign_id}/posts (needs campaigns.posts).

Input Schema

{
  "type": "object",
  "properties": {
    "campaign_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Patreon id: a campaign id (patreon_list_campaigns) or a post id (patreon_list_posts)."
    },
    "page_count": {
      "description": "Items per page (default 25, max 100).",
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 100
    },
    "cursor": {
      "description": "Pagination cursor: meta.pagination.cursors.next from the previous page.",
      "type": "string"
    }
  },
  "required": [
    "campaign_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢patreon_get_post(post_id)

Return one post by id, including its HTML content and access flags. Patreon: GET /posts/{id} (needs campaigns.posts).

Input Schema

{
  "type": "object",
  "properties": {
    "post_id": {
      "type": "string",
      "minLength": 1,
      "maxLength": 64,
      "description": "Patreon id: a campaign id (patreon_list_campaigns) or a post id (patreon_list_posts)."
    }
  },
  "required": [
    "post_id"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded7 tools