Skip to main content
Glama

Search Players

search_players
Read-onlyIdempotent

"Find NBA player [name]" / "search NBA roster for [X]" / "is [player] in the NBA" — search NBA players by name on BallDontLie. Returns position, height, weight, college, country, draft info, and current team. NOTE: per-season averages (PPG/RPG/APG) and career stats are NOT in this response — those require BallDontLie's ALL-STAR tier ($9.99/mo at https://www.balldontlie.io/) via the /season_averages endpoint, which is not currently exposed by Pipeworx. Free-tier _apiKey works for this tool.

Example tool call

This call uses example arguments supplied in the tool’s input schema.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "query": "LeBron James"
    },
    "name": "search_players"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoNumber of results to return (default: 10, max: 100)
queryYesPlayer name or partial name to search for
_apiKeyYesBallDontLie API key

Output Schema

NameRequiredDescriptionDefault
queryYesSearch query for player names
totalYesTotal count of matching players
playersYesList of matching players
returnedYesNumber of players returned in this response

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / examples
      Previous value: -[
      -  {
      -    "_apiKey": "your-nba-api-key",
      -    "query": "LeBron James"
      -  },
      -  {
      -    "_apiKey": "your-nba-api-key",
      -    "limit": 5,
      -    "query": "Luka"
      -  }
      -]New value: +[
      +  {
      +    "query": "LeBron James"
      +  },
      +  {
      +    "limit": 5,
      +    "query": "Luka"
      +  }
      +]
  2. Changed2 schema fields changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "_apiKey": "your-nba-api-key",
      +    "query": "LeBron James"
      +  },
      +  {
      +    "_apiKey": "your-nba-api-key",
      +    "limit": 5,
      +    "query": "Luka"
      +  }
      +]
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "players": {
      +      "description": "List of matching players",
      +      "items": {
      +        "properties": {
      +          "college": {
      +            "description": "College attended",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "country": {
      +            "description": "Country of origin",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "draft_number": {
      +            "description": "Draft pick number",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "draft_round": {
      +            "description": "Draft round",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "draft_year": {
      +            "description": "Year drafted",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "height": {
      +            "description": "Player height",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "description": "Player ID",
      +            "type": "number"
      +          },
      +          "jersey_number": {
      +            "description": "Jersey number",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "description": "Full name (first + last)",
      +            "type": "string"
      +          },
      +          "position": {
      +            "description": "Player position",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "team": {
      +            "description": "Current team information",
      +            "properties": {
      +              "abbreviation": {
      +                "description": "Team abbreviation",
      +                "type": "string"
      +              },
      +              "city": {
      +                "description": "Team city",
      +                "type": "string"
      +              },
      +              "conference": {
      +                "description": "Conference (East/West)",
      +                "type": "string"
      +              },
      +              "division": {
      +                "description": "Division name",
      +                "type": "string"
      +              },
      +              "full_name": {
      +                "description": "Full team name",
      +                "type": "string"
      +              },
      +              "id": {
      +                "description": "Team ID",
      +                "type": "number"
      +              },
      +              "name": {
      +                "description": "Team name",
      +                "type": "string"
      +              }
      +            },
      +            "type": [
      +              "object",
      +              "null"
      +            ]
      +          },
      +          "weight": {
      +            "description": "Player weight",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "query": {
      +      "description": "Search query for player names",
      +      "type": "string"
      +    },
      +    "returned": {
      +      "description": "Number of players returned in this response",
      +      "type": "number"
      +    },
      +    "total": {
      +      "description": "Total count of matching players",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "query",
      +    "total",
      +    "returned",
      +    "players"
      +  ],
      +  "type": "object"
      +}
  3. Changed2 schema fields changed
    • removedInput schema / examples
      Removed value: -[
      -  {
      -    "_apiKey": "your-nba-api-key",
      -    "query": "LeBron James"
      -  },
      -  {
      -    "_apiKey": "your-nba-api-key",
      -    "limit": 5,
      -    "query": "Luka"
      -  }
      -]
    • changedOutput schema / (root)
      Previous value: -{
      -  "properties": {
      -    "players": {
      -      "description": "List of matching players",
      -      "items": {
      -        "properties": {
      -          "college": {
      -            "description": "College attended",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "country": {
      -            "description": "Country of origin",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "draft_number": {
      -            "description": "Draft pick number",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "draft_round": {
      -            "description": "Draft round",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "draft_year": {
      -            "description": "Year drafted",
      -            "type": [
      -              "number",
      -              "null"
      -            ]
      -          },
      -          "height": {
      -            "description": "Player height",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "id": {
      -            "description": "Player ID",
      -            "type": "number"
      -          },
      -          "jersey_number": {
      -            "description": "Jersey number",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "name": {
      -            "description": "Full name (first + last)",
      -            "type": "string"
      -          },
      -          "position": {
      -            "description": "Player position",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          },
      -          "team": {
      -            "description": "Current team information",
      -            "properties": {
      -              "abbreviation": {
      -                "description": "Team abbreviation",
      -                "type": "string"
      -              },
      -              "city": {
      -                "description": "Team city",
      -                "type": "string"
      -              },
      -              "conference": {
      -                "description": "Conference (East/West)",
      -                "type": "string"
      -              },
      -              "division": {
      -                "description": "Division name",
      -                "type": "string"
      -              },
      -              "full_name": {
      -                "description": "Full team name",
      -                "type": "string"
      -              },
      -              "id": {
      -                "description": "Team ID",
      -                "type": "number"
      -              },
      -              "name": {
      -                "description": "Team name",
      -                "type": "string"
      -              }
      -            },
      -            "type": [
      -              "object",
      -              "null"
      -            ]
      -          },
      -          "weight": {
      -            "description": "Player weight",
      -            "type": [
      -              "string",
      -              "null"
      -            ]
      -          }
      -        },
      -        "type": "object"
      -      },
      -      "type": "array"
      -    },
      -    "query": {
      -      "description": "Search query for player names",
      -      "type": "string"
      -    },
      -    "returned": {
      -      "description": "Number of players returned in this response",
      -      "type": "number"
      -    },
      -    "total": {
      -      "description": "Total count of matching players",
      -      "type": "number"
      -    }
      -  },
      -  "required": [
      -    "query",
      -    "total",
      -    "returned",
      -    "players"
      -  ],
      -  "type": "object"
      -}New value: +null
  4. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "properties": {
      +    "players": {
      +      "description": "List of matching players",
      +      "items": {
      +        "properties": {
      +          "college": {
      +            "description": "College attended",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "country": {
      +            "description": "Country of origin",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "draft_number": {
      +            "description": "Draft pick number",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "draft_round": {
      +            "description": "Draft round",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "draft_year": {
      +            "description": "Year drafted",
      +            "type": [
      +              "number",
      +              "null"
      +            ]
      +          },
      +          "height": {
      +            "description": "Player height",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "id": {
      +            "description": "Player ID",
      +            "type": "number"
      +          },
      +          "jersey_number": {
      +            "description": "Jersey number",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "name": {
      +            "description": "Full name (first + last)",
      +            "type": "string"
      +          },
      +          "position": {
      +            "description": "Player position",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          },
      +          "team": {
      +            "description": "Current team information",
      +            "properties": {
      +              "abbreviation": {
      +                "description": "Team abbreviation",
      +                "type": "string"
      +              },
      +              "city": {
      +                "description": "Team city",
      +                "type": "string"
      +              },
      +              "conference": {
      +                "description": "Conference (East/West)",
      +                "type": "string"
      +              },
      +              "division": {
      +                "description": "Division name",
      +                "type": "string"
      +              },
      +              "full_name": {
      +                "description": "Full team name",
      +                "type": "string"
      +              },
      +              "id": {
      +                "description": "Team ID",
      +                "type": "number"
      +              },
      +              "name": {
      +                "description": "Team name",
      +                "type": "string"
      +              }
      +            },
      +            "type": [
      +              "object",
      +              "null"
      +            ]
      +          },
      +          "weight": {
      +            "description": "Player weight",
      +            "type": [
      +              "string",
      +              "null"
      +            ]
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "query": {
      +      "description": "Search query for player names",
      +      "type": "string"
      +    },
      +    "returned": {
      +      "description": "Number of players returned in this response",
      +      "type": "number"
      +    },
      +    "total": {
      +      "description": "Total count of matching players",
      +      "type": "number"
      +    }
      +  },
      +  "required": [
      +    "query",
      +    "total",
      +    "returned",
      +    "players"
      +  ],
      +  "type": "object"
      +}
  5. Changed1 schema field changed
    • addedInput schema / examples
      Added value: +[
      +  {
      +    "_apiKey": "your-nba-api-key",
      +    "query": "LeBron James"
      +  },
      +  {
      +    "_apiKey": "your-nba-api-key",
      +    "limit": 5,
      +    "query": "Luka"
      +  }
      +]
  6. Changed2 schema fields changed
    • addedInput schema / properties / _apiKey
      Added value: +{
      +  "description": "BallDontLie API key",
      +  "type": "string"
      +}
    • changedInput schema / required
      Previous value: -[
      -  "query"
      -]New value: +[
      +  "query",
      +  "_apiKey"
      +]
  7. First observed

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description goes beyond them by disclosing an auth prerequisite ('free-tier _apiKey works for this tool') and a data-availability limitation (per-season averages require the paid ALL-STAR tier and are not exposed). It does not discuss rate limits, pagination behavior, or what an empty match looks like, so it stops short of full transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with trigger phrasings before the capability statement, which is good structure. It is dense but mostly earns its words; the pricing figure and URL are somewhat promotional, though they justify the 'not available' caveat.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, yet the description helpfully names the fields returned and, unusually, names what is deliberately absent. The main gap for a search tool with a sibling lookup tool is the absence of any relationship note to get_player.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%: query (partial name), limit (default 10, max 100), and _apiKey are all documented in the schema. The description adds nothing about matching semantics (prefix vs. substring, case sensitivity) or how limit interacts with ranking, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource ('search NBA players by name on BallDontLie') and lists the returned fields (position, height, weight, college, country, draft info, team). It is clear what the tool does, but it never mentions the sibling get_player, so an agent cannot tell from the text alone when a direct-lookup tool would be preferable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The three quoted example phrasings ('Find NBA player [name]', 'search NBA roster for [X]', 'is [player] in the NBA') give concrete trigger contexts, and the note about missing stat data steers agents away from this tool for averages. It stops short of naming the alternative route (get_player or an external stats source), so guidance is clear but not fully routing.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.