Skip to main content
Glama

Batch Steam profiles

steam_batch
Read-onlyIdempotent

Use when the user gives several Steam ids - a match roster, a team, a list of suspects - and wants profiles, FACEIT or ban status for all of them: up to 100 in ONE call, always instead of per-player calls. ids are STRINGS in any computable SteamID format (steamid64, STEAM_1:0:x, STEAM_0:0:x, [U:1:x], hex, steam:hex, a 32-bit account id, a /profiles/ link); never JSON numbers (a 17-digit number loses precision and points at another account); vanity names are not accepted - resolve them with steam_identity first. Players unknown to the platform come back in not_found - fetch those with steam_profile. include adds FACEIT (one query for the batch) and Steam bans (one upstream call) - the cheapest way to review a full roster. Do not use for one player (steam_summary).

Input Schema

NameRequiredDescriptionDefault
idsYessteamid64 list, max 100 - prefer one batch over per-player calls
includeNoextra blocks per player: faceit level/ELO, Steam ban status

Output Schema

NameRequiredDescriptionDefault
countNoplayers returned
invalidNoinputs that are not a computable SteamID
playersNoper player: steamid64, ids, steam and the include blocks
not_foundNovalid ids unknown to the platform - fetch them with steam_profile

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "additionalProperties": true,
      +  "properties": {
      +    "count": {
      +      "description": "players returned",
      +      "type": "integer"
      +    },
      +    "invalid": {
      +      "description": "inputs that are not a computable SteamID",
      +      "type": "array"
      +    },
      +    "not_found": {
      +      "description": "valid ids unknown to the platform - fetch them with steam_profile",
      +      "type": "array"
      +    },
      +    "players": {
      +      "description": "per player: steamid64, ids, steam and the include blocks",
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  2. First observed

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already cover the safety profile (readOnlyHint, idempotentHint, no destruction), yet the description still adds behavior the agent could not infer: unknown players surface in not_found rather than erroring, and include fans out into one batched FACEIT query plus one upstream bans call, which is framed as the cheapest way to review a roster. That partial-result and cost disclosure goes well beyond the structured fields.

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?

Front-loaded with the usage trigger and preference rule, and every sentence carries load (format list, numeric-precision warning, vanity redirect, not_found handling, include cost, exclusion). It is dense to the point of being one long block with heavy parentheticals, which costs it a point on readability.

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

Completeness5/5

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

For a two-parameter batch tool with an output schema, the description covers everything an agent needs: input formats, the 100-item ceiling, what extra blocks include returns, how misses are reported, and where to go next. Return-value details are rightly left to the output schema.

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

Parameters5/5

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

Schema coverage is 100%, but the description still adds essential meaning: ids must be strings in any computable SteamID format (with the accepted variants enumerated), must never be JSON numbers because a 17-digit number loses precision, and vanity names are rejected. That risks-and-formats guidance materially exceeds the schema's narrower 'steamid64 list' wording and prevents the most likely caller error.

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

Purpose5/5

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

Opens with a specific verb and resource ('gives several Steam ids ... and wants profiles, FACEIT or ban status for all of them') and scopes the batch to up to 100 ids in a single call. It explicitly distinguishes itself from siblings by naming steam_summary, steam_profile, and steam_identity as the right tools in the cases this one does not cover.

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

Usage Guidelines5/5

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

Provides an explicit when-to-use trigger ('several Steam ids - a match roster, a team, a list of suspects'), a strong preference rule ('always instead of per-player calls'), and a when-not ('Do not use for one player (steam_summary)'). It also routes follow-up cases to alternatives: vanity names to steam_identity and not_found results to steam_profile.

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.

Resources