Skip to main content
Glama

Get a player's friend list

get_friend_list
Read-only

Retrieve a player's Steam friends by SteamID64: see online state, current game, and friendship duration, newest first. Returns up to 100 friends, with a reason if the list is private or invalid.

Instructions

List a player's Steam friends by SteamID64: name, online state, current game and how long they've been friends, most-recently-added first (capped at the 100 most-recently-added; check returned vs total). Requires STEAM_API_KEY and the friends list to be public — otherwise it returns found:false, which also covers a SteamID64 with no account behind it; read reason. For 'which of my friends own game X', use find_friends_who_own instead — it checks each friend's full library, not just this list. Get the SteamID64 from resolve_vanity_url.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
steamidNo17-digit SteamID64. Omit to use the STEAM_ID configured on the server. Convert a vanity/custom URL name with resolve_vanity_url first.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv0.14.0
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "found": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "reason": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "reason"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "found": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "friends": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "friends_since": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "in_game": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "name": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "profile_url": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "state": {
      -              "enum": [
      -                "offline",
      -                "online",
      -                "busy",
      -                "away",
      -                "snooze",
      -                "looking to trade",
      -                "looking to play"
      -              ],
      -              "type": "string"
      -            },
      -            "steamid": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "name",
      -            "state",
      -            "in_game",
      -            "profile_url",
      -            "friends_since"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "returned": {
      -        "type": "number"
      -      },
      -      "total": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "total",
      -      "returned",
      -      "friends"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "found": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "reason": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "reason"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "found": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "friends": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "friends_since": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "in_game": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "name": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "profile_url": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "state": {
      +              "enum": [
      +                "offline",
      +                "online",
      +                "busy",
      +                "away",
      +                "snooze",
      +                "looking to trade",
      +                "looking to play"
      +              ],
      +              "type": "string"
      +            },
      +            "steamid": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "state",
      +            "in_game",
      +            "profile_url",
      +            "friends_since"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "returned": {
      +        "type": "number"
      +      },
      +      "total": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "total",
      +      "returned",
      +      "friends"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed3 schema fields changedv0.12.1
    • addedInput schema / additionalProperties
      Added value: +false
    • removedOutput schema / anyOf
      Removed value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "found": {
      -        "const": false,
      -        "type": "boolean"
      -      },
      -      "reason": {
      -        "type": "string"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "reason"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "found": {
      -        "const": true,
      -        "type": "boolean"
      -      },
      -      "friends": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "friends_since": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "in_game": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "name": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "profile_url": {
      -              "anyOf": [
      -                {
      -                  "type": "string"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "state": {
      -              "type": "string"
      -            },
      -            "steamid": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "name",
      -            "state",
      -            "in_game",
      -            "profile_url",
      -            "friends_since"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "returned": {
      -        "type": "number"
      -      },
      -      "total": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "found",
      -      "total",
      -      "returned",
      -      "friends"
      -    ],
      -    "type": "object"
      -  }
      -]
    • addedOutput schema / oneOf
      Added value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "found": {
      +        "const": false,
      +        "type": "boolean"
      +      },
      +      "reason": {
      +        "type": "string"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "reason"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "found": {
      +        "const": true,
      +        "type": "boolean"
      +      },
      +      "friends": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "friends_since": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "in_game": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "name": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "profile_url": {
      +              "anyOf": [
      +                {
      +                  "type": "string"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "state": {
      +              "enum": [
      +                "offline",
      +                "online",
      +                "busy",
      +                "away",
      +                "snooze",
      +                "looking to trade",
      +                "looking to play"
      +              ],
      +              "type": "string"
      +            },
      +            "steamid": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "name",
      +            "state",
      +            "in_game",
      +            "profile_url",
      +            "friends_since"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "returned": {
      +        "type": "number"
      +      },
      +      "total": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "found",
      +      "total",
      +      "returned",
      +      "friends"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Addedv0.10.5
  4. Removedv0.10.4
  5. Addedv0.10.2
  6. Removedv0.9.0
  7. Addedv0.8.1
  8. Removedv0.8.0
  9. Addedv0.6.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already signal readOnlyHint and openWorldHint, and the description adds substantial behavioral context beyond them: the result cap at 100, the returned-vs-total check, the found:false case covering both private lists and nonexistent accounts, and the instruction to read reason. This gives the agent accurate expectations for failure modes and data truncation.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: the first states purpose and return fields, the second covers prerequisites and failure semantics, the third distinguishes the sibling tool, and the fourth closes the parameter provenance loop. No filler or redundant restatement.

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 single-optional-parameter read-only tool with an output schema already available, the description is complete: it covers sorting, truncation, failure behavior, authentication prerequisite, the alternative tool, and how to construct the parameter. Nothing needed to call it correctly is missing.

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?

The sole parameter steamid is already fully described in the schema with pattern and default behavior (omitting uses the server-configured STEAM_ID), so schema coverage is 100%. The description reinforces using resolve_vanity_url but does not add significant meaning beyond the schema, so the baseline score of 3 is appropriate.

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?

The description uses a specific verb ('List') with a clear resource ('a player's Steam friends by SteamID64') and names the exact fields returned (name, online state, current game, friendship duration). It also explicitly differentiates itself from find_friends_who_own, so an agent can distinguish it from its closest sibling without inspecting schemas.

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?

The description gives explicit when-to-use context (listing a player's friends) and an explicit when-not-to-use instruction: for 'which of my friends own game X', use find_friends_who_own instead. It also states prerequisites (STEAM_API_KEY, public friends list) and tells the agent how to obtain the required SteamID64 via resolve_vanity_url.

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