BagIQ MCP

Analyse disc golf bag gaps and overlap, recommend discs, and open an interactive Bag Map.

Should I use this

Quality & Safety

B
Description quality
93%
Schema completeness
90%
Naming quality
93%
Poisoning risk
60%
Permission match
100%
Protocol compliance
100%

Findings (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin analyze_bag
  • MEDIUMTool description contains URL to non-standard domainin get_shared_bag

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,455Tokens (tool definitions)
~3.9 KBTypical response size
Moderate attention impact (1.92% 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": {
    "bagiq": {
      "url": "https://data.bagiq.app/mcp"
    }
  }
}

Remote endpoints

https://data.bagiq.app/mcpstreamable-http

What it can do

Tool inventory

Tools (6)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢analyze_bag(share_url, share_id, discs, preferred_brand)

Performs a complete BagIQ analysis on a player's disc golf bag. Can accept a list of discs OR a BagIQ share link (e.g. 'https://app.bagiq.app/?s=4fisr8a7'). Returns slot coverage percentage, bag identity label (e.g. 'Overstable-heavy', 'Chaos bag'), top missing shot gaps, redundant overlaps, and mapped flight coordinates.

Input Schema

{
  "type": "object",
  "properties": {
    "share_url": {
      "type": "string",
      "description": "Optional BagIQ share link (e.g. 'https://app.bagiq.app/?s=4fisr8a7' or 'https://app.bagiq.app/?discs=...')"
    },
    "share_id": {
      "type": "string",
      "description": "Optional BagIQ short share ID (e.g. '4fisr8a7')"
    },
    "discs": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "string",
            "description": "Disc name, slug, or brand+name string (e.g. 'Innova Destroyer' or 'discraft-buzzz')"
          },
          {
            "type": "object",
            "properties": {
              "disc": {
                "type": "string",
                "description": "Disc name or slug (required)"
              },
              "brand": {
                "type": "string",
                "description": "Manufacturer brand name"
              },
              "plastic": {
                "type": "string",
                "description": "Plastic blend (e.g. Star, Champion, ESP)"
              },
              "wear_state": {
                "type": "string",
                "enum": [
                  "new",
                  "seasoned",
                  "beat"
                ],
                "description": "Wear condition"
              },
              "confidence": {
                "type": "string",
                "enum": [
                  "shaky",
                  "okay",
                  "trusted",
                  "money disc"
                ],
                "description": "Player confidence"
              },
              "usage": {
                "type": "string",
                "enum": [
                  "rare",
                  "sometimes",
                  "often",
                  "all the time"
                ],
                "description": "Usage frequency"
              },
              "throw_type": {
                "type": "string",
                "enum": [
                  "backhand",
                  "forehand",
                  "both"
                ],
                "description": "Primary throw style"
              },
              "use_case": {
                "type": "string",
                "description": "Role or shot description (e.g. 'windy drives', 'tunnel shots')"
              },
              "locked": {
                "type": "boolean",
                "description": "If true, lock this disc to prevent cut recommendations"
              }
            },
            "required": [
              "disc"
            ]
          }
        ]
      },
      "description": "List of discs currently in the bag (optional if share_url or share_id is provided)",
      "minItems": 1,
      "maxItems": 35
    },
    "preferred_brand": {
      "type": "string",
      "description": "Optional preferred brand for recommendations (e.g. 'Innova', 'Discraft')"
    }
  }
}
🟢find_bag_gaps(share_url, share_id, discs)

Identifies missing shot shapes and unserved flight slots across BagIQ's 9 core slot targets (putter, midrange, fairway, and distance drivers), ranking voids by severity. Accepts discs list or a BagIQ share link.

Input Schema

{
  "type": "object",
  "properties": {
    "share_url": {
      "type": "string",
      "description": "Optional BagIQ share link (e.g. 'https://app.bagiq.app/?s=4fisr8a7')"
    },
    "share_id": {
      "type": "string",
      "description": "Optional BagIQ short share ID (e.g. '4fisr8a7')"
    },
    "discs": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "string",
            "description": "Disc name, slug, or brand+name string (e.g. 'Innova Destroyer' or 'discraft-buzzz')"
          },
          {
            "type": "object",
            "properties": {
              "disc": {
                "type": "string",
                "description": "Disc name or slug (required)"
              },
              "brand": {
                "type": "string",
                "description": "Manufacturer brand name"
              },
              "plastic": {
                "type": "string",
                "description": "Plastic blend (e.g. Star, Champion, ESP)"
              },
              "wear_state": {
                "type": "string",
                "enum": [
                  "new",
                  "seasoned",
                  "beat"
                ],
                "description": "Wear condition"
              },
              "confidence": {
                "type": "string",
                "enum": [
                  "shaky",
                  "okay",
                  "trusted",
                  "money disc"
                ],
                "description": "Player confidence"
              },
              "usage": {
                "type": "string",
                "enum": [
                  "rare",
                  "sometimes",
                  "often",
                  "all the time"
                ],
                "description": "Usage frequency"
              },
              "throw_type": {
                "type": "string",
                "enum": [
                  "backhand",
                  "forehand",
                  "both"
                ],
                "description": "Primary throw style"
              },
              "use_case": {
                "type": "string",
                "description": "Role or shot description (e.g. 'windy drives', 'tunnel shots')"
              },
              "locked": {
                "type": "boolean",
                "description": "If true, lock this disc to prevent cut recommendations"
              }
            },
            "required": [
              "disc"
            ]
          }
        ]
      },
      "description": "List of discs in the bag (optional if share_url or share_id is provided)",
      "minItems": 1,
      "maxItems": 35
    }
  }
}
🟢detect_overlap(share_url, share_id, discs)

Detects redundant molds occupying the same flight slot or shot role, ranking pairs by overlap severity and recommending which disc to keep vs cut. Accepts discs list or a BagIQ share link.

Input Schema

{
  "type": "object",
  "properties": {
    "share_url": {
      "type": "string",
      "description": "Optional BagIQ share link (e.g. 'https://app.bagiq.app/?s=4fisr8a7')"
    },
    "share_id": {
      "type": "string",
      "description": "Optional BagIQ short share ID (e.g. '4fisr8a7')"
    },
    "discs": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "string",
            "description": "Disc name, slug, or brand+name string (e.g. 'Innova Destroyer' or 'discraft-buzzz')"
          },
          {
            "type": "object",
            "properties": {
              "disc": {
                "type": "string",
                "description": "Disc name or slug (required)"
              },
              "brand": {
                "type": "string",
                "description": "Manufacturer brand name"
              },
              "plastic": {
                "type": "string",
                "description": "Plastic blend (e.g. Star, Champion, ESP)"
              },
              "wear_state": {
                "type": "string",
                "enum": [
                  "new",
                  "seasoned",
                  "beat"
                ],
                "description": "Wear condition"
              },
              "confidence": {
                "type": "string",
                "enum": [
                  "shaky",
                  "okay",
                  "trusted",
                  "money disc"
                ],
                "description": "Player confidence"
              },
              "usage": {
                "type": "string",
                "enum": [
                  "rare",
                  "sometimes",
                  "often",
                  "all the time"
                ],
                "description": "Usage frequency"
              },
              "throw_type": {
                "type": "string",
                "enum": [
                  "backhand",
                  "forehand",
                  "both"
                ],
                "description": "Primary throw style"
              },
              "use_case": {
                "type": "string",
                "description": "Role or shot description (e.g. 'windy drives', 'tunnel shots')"
              },
              "locked": {
                "type": "boolean",
                "description": "If true, lock this disc to prevent cut recommendations"
              }
            },
            "required": [
              "disc"
            ]
          }
        ]
      },
      "description": "List of discs in the bag (minimum 2 discs, optional if share_url or share_id is provided)",
      "minItems": 2,
      "maxItems": 35
    }
  }
}
🟢recommend_bag_fillers(share_url, share_id, discs, gap_id, brand, ...)

Suggests the highest-rated discs to fill missing shot slots or close voids in the bag based on BagIQ matrix coordinates and DiscList ratings, with interactive 1-click 'Add to Bag' deep links. Accepts discs list or a BagIQ share link.

Input Schema

{
  "type": "object",
  "properties": {
    "share_url": {
      "type": "string",
      "description": "Optional BagIQ share link (e.g. 'https://app.bagiq.app/?s=4fisr8a7')"
    },
    "share_id": {
      "type": "string",
      "description": "Optional BagIQ short share ID (e.g. '4fisr8a7')"
    },
    "discs": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "string",
            "description": "Disc name, slug, or brand+name string (e.g. 'Innova Destroyer' or 'discraft-buzzz')"
          },
          {
            "type": "object",
            "properties": {
              "disc": {
                "type": "string",
                "description": "Disc name or slug (required)"
              },
              "brand": {
                "type": "string",
                "description": "Manufacturer brand name"
              },
              "plastic": {
                "type": "string",
                "description": "Plastic blend (e.g. Star, Champion, ESP)"
              },
              "wear_state": {
                "type": "string",
                "enum": [
                  "new",
                  "seasoned",
                  "beat"
                ],
                "description": "Wear condition"
              },
              "confidence": {
                "type": "string",
                "enum": [
                  "shaky",
                  "okay",
                  "trusted",
                  "money disc"
                ],
                "description": "Player confidence"
              },
              "usage": {
                "type": "string",
                "enum": [
                  "rare",
                  "sometimes",
                  "often",
                  "all the time"
                ],
                "description": "Usage frequency"
              },
              "throw_type": {
                "type": "string",
                "enum": [
                  "backhand",
                  "forehand",
                  "both"
                ],
                "description": "Primary throw style"
              },
              "use_case": {
                "type": "string",
                "description": "Role or shot description (e.g. 'windy drives', 'tunnel shots')"
              },
              "locked": {
                "type": "boolean",
                "description": "If true, lock this disc to prevent cut recommendations"
              }
            },
            "required": [
              "disc"
            ]
          }
        ]
      },
      "description": "Current bag contents (optional if share_url or share_id is provided)",
      "minItems": 1,
      "maxItems": 35
    },
    "gap_id": {
      "type": "string",
      "description": "Specific gap ID to fill (e.g. 'fairway-understable', 'approach-overstable', 'mid-neutral')"
    },
    "brand": {
      "type": "string",
      "description": "Optional brand filter for recommendations"
    },
    "limit": {
      "type": "integer",
      "description": "Number of recommendations per gap (1..5, default 3)",
      "default": 3
    }
  }
}
🟢build_minimal_bag(share_url, share_id, discs, target_count)

Extracts an optimal 3-to-5 disc minimalist setup from a larger bag, maximizing shot coverage while detailing necessary compromises. Accepts discs list or a BagIQ share link.

Input Schema

{
  "type": "object",
  "properties": {
    "share_url": {
      "type": "string",
      "description": "Optional BagIQ share link (e.g. 'https://app.bagiq.app/?s=4fisr8a7')"
    },
    "share_id": {
      "type": "string",
      "description": "Optional BagIQ short share ID (e.g. '4fisr8a7')"
    },
    "discs": {
      "type": "array",
      "items": {
        "oneOf": [
          {
            "type": "string",
            "description": "Disc name, slug, or brand+name string (e.g. 'Innova Destroyer' or 'discraft-buzzz')"
          },
          {
            "type": "object",
            "properties": {
              "disc": {
                "type": "string",
                "description": "Disc name or slug (required)"
              },
              "brand": {
                "type": "string",
                "description": "Manufacturer brand name"
              },
              "plastic": {
                "type": "string",
                "description": "Plastic blend (e.g. Star, Champion, ESP)"
              },
              "wear_state": {
                "type": "string",
                "enum": [
                  "new",
                  "seasoned",
                  "beat"
                ],
                "description": "Wear condition"
              },
              "confidence": {
                "type": "string",
                "enum": [
                  "shaky",
                  "okay",
                  "trusted",
                  "money disc"
                ],
                "description": "Player confidence"
              },
              "usage": {
                "type": "string",
                "enum": [
                  "rare",
                  "sometimes",
                  "often",
                  "all the time"
                ],
                "description": "Usage frequency"
              },
              "throw_type": {
                "type": "string",
                "enum": [
                  "backhand",
                  "forehand",
                  "both"
                ],
                "description": "Primary throw style"
              },
              "use_case": {
                "type": "string",
                "description": "Role or shot description (e.g. 'windy drives', 'tunnel shots')"
              },
              "locked": {
                "type": "boolean",
                "description": "If true, lock this disc to prevent cut recommendations"
              }
            },
            "required": [
              "disc"
            ]
          }
        ]
      },
      "description": "Full disc collection or bag (optional if share_url or share_id is provided)",
      "minItems": 3,
      "maxItems": 35
    },
    "target_count": {
      "type": "integer",
      "description": "Target number of discs in the minimal bag (2..6, default 3)",
      "default": 3
    }
  }
}
🟢get_shared_bag(share_url, share_id)

Retrieves and inspects a player's saved disc golf bag from a BagIQ share link (e.g. 'https://app.bagiq.app/?s=4fisr8a7'), short share ID, or slug link. Returns the full disc breakdown with plastics, wear states, confidence ratings, slot coverage, and interactive BagIQ deep links.

Input Schema

{
  "type": "object",
  "properties": {
    "share_url": {
      "type": "string",
      "description": "BagIQ share link URL (e.g. 'https://app.bagiq.app/?s=4fisr8a7' or 'https://app.bagiq.app/?discs=innova-destroyer,discraft-buzzz')"
    },
    "share_id": {
      "type": "string",
      "description": "BagIQ short share ID (e.g. '4fisr8a7')"
    }
  }
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded6 tools
verifiedversion not recorded6 tools
verifiedversion not recorded6 tools