Skip to main content
Glama

X Lists

x_lists
DestructiveIdempotent

Manage X Lists: create, update, delete, follow or unfollow, add or remove members, and read timelines, members, and followers.

Instructions

Manage Lists and read their timelines: create, update, delete, look up, owned/memberships/pinned Lists, add/remove members, list members/followers/posts, follow/unfollow.

Actions (pass "action" plus that action's parameters):

  • create: Create a curated List. [requires: name]

  • update: Rename, re-describe or change the visibility of a List you own. [requires: list_id]

  • delete: Delete a List you own. [requires: list_id]

  • get: Fetch a List by id: name, description, owner, member/follower counts and visibility. [requires: list_id]

  • owned: Lists created by a user (defaults to the authenticated account), 1-100 per page.

  • memberships: Lists a user is a member of (defaults to the authenticated account), 1-100 per page.

  • pinned: Lists pinned to a user profile (defaults to the authenticated account).

  • add_member: Add a user to a List you manage. [requires: list_id, user_id]

  • remove_member: Remove a user from a List you manage. [requires: list_id, user_id]

  • posts: The timeline of a List, newest first (1-100 per page). [requires: list_id]

  • members: Users who belong to a List, 1-100 per page. [requires: list_id]

  • followers: Users who follow a List, 1-100 per page. [requires: list_id]

  • follow: Follow a List so its timeline appears in your Lists tab. [requires: list_id]

  • unfollow: Stop following a List. [requires: list_id]

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "action": "<action>"
    },
    "name": "x_lists"
  }
}

Input Schema

NameRequiredDescriptionDefault
nameNo
actionYesAction to perform. One of: create, update, delete, get, owned, memberships, pinned, add_member, remove_member, posts, members, followers, follow, unfollow.
list_idNoNumeric List id.
privateNo
user_idNo
usernameNoX handle without the @ prefix.
next_tokenNoCursor from a previous response (meta.next_token).
descriptionNo
max_resultsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare destructiveHint=true, idempotentHint=true and openWorldHint=true, so the bar is lower, yet the description still adds real context: mutations require ownership/management rights, deletes are scoped to Lists you own, follow has a concrete effect ('timeline appears in your Lists tab'), and paging is capped at 1-100. It stops short of explaining reversibility of delete or failure modes for unauthorized edits.

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?

One front-loaded summary sentence followed by a scannable action table. Every line earns its place by pairing an action with its required inputs; there is no redundant prose despite covering fourteen actions.

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 multi-action tool with nine parameters and no output schema, the definition covers every enum value, its required inputs, pagination bounds and the read/write split. An agent can select and invoke the correct action without consulting anything else.

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

Parameters4/5

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

Schema description coverage is only 44%, but the description compensates by mapping required parameters to each action (list_id, user_id, name) – information the schema does not express since it only requires 'action'. It also adds page-size and ordering semantics ('newest first', '1-100 per page', 'defaults to the authenticated account'), though optional parameters like next_token, username and description are left to the schema.

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?

Names a specific resource (X Lists) and enumerates concrete operations (create, update, delete, get, owned, memberships, pinned, add_member, remove_member, posts, members, followers, follow, unfollow). This clearly separates it from siblings like x_users and x_timelines, which deal with user profiles and home timelines rather than curated Lists.

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 per-action list with '[requires: ...]' annotations tells the agent exactly which parameters gate each operation, and ownership phrasing ('a List you own', 'a List you manage') establishes preconditions for mutations. It does not, however, explicitly say when to prefer a sibling tool (e.g., x_users for profile lookups) or when an action would fail.

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