Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
IB_COOKIESNoJSON array of cookies for a logged-in session. Do not ask a human to fill this by hand.
IB_HEADLESSNoDefault headless mode for tools that do not pass headless (true / false)
GOOGLE_API_KEYNoGoogle key (alternative for autonomous tool)
OPENAI_API_KEYNoOpenAI key for run_browser_use_task (one of the four keys for the autonomous tool)
IB_ALLOW_EVAL_JSNoEnable the evaluate_js debug tool (true / false, default false)false
ANTHROPIC_API_KEYNoAnthropic key (alternative for autonomous tool)
IB_VIEWPORT_WIDTHNoPlaywright viewport width (default 1280, clamped)1280
IB_VIEWPORT_HEIGHTNoPlaywright viewport height (default 800, clamped)800
BROWSER_USE_API_KEYNobrowser-use Cloud key (alternative for autonomous tool)
IB_CHROMIUM_NO_SANDBOXNoPass --no-sandbox to Chromium (default false; containers only)false

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
open_siteB

Navigate to a page on infinitebacklog.net. Pass headless=false for a visible window so you can log in.

current_urlB

Return current URL and title.

close_browserB

Close the shared Playwright browser used by deterministic tools.

get_page_textC

Extract visible text from the current page.

get_page_htmlC

Get HTML of an element (default body).

get_linksC

Extract links (text + href) from the current page.

screenshotB

Take a screenshot of the current page. Saved under the OS temp infinitebacklog-mcp directory.

search_gamesB

Search the Infinite Backlog games catalog and return page text.

Fill #game-search via the Vue native value setter. Live filter is /games?q=. /games?search= does not filter. Never type into #platforms-search.

clickB

Click by CSS selector or text=... Blocked for destructive IB actions owned by dedicated tools.

fillB

Fill an input field. Refuses password and credential selectors.

evaluate_jsB

Run JavaScript in the page and return JSON result. Disabled unless IB_ALLOW_EVAL_JS=true.

set_cookiesA

Inject cookies for authenticated sessions. JSON array: [{"name":"...","value":"...","domain":".infinitebacklog.net","path":"/"}, ...] Only infinitebacklog.net cookies are accepted.

list_related_contentA

List every RELATED GAMES & CONTENT tab on a game page: editions, DLC, packs, add-ons, remakes, bundles, and any other live section. Expands each tab before scraping.

list_collection_content_menusB

List extras widgets on a collection edit form: Add DLC dropdown, owned DLC, addon/pack checkboxes, GAME EDITION text, and other extras menus. Wait for UPDATE GAME. Requires login. Does not change the form.

add_game_contentA

Add owned extras on the parent collection edit form. names is a JSON array of Steam/IB titles. Searches DLC first, then PACK/ADDON, EDITIONS, and every extras widget before not_found. DLC is picked from Add DLC to your game; packs are ticked via addon-* labels (only if unchecked). One UPDATE GAME persists nested additions. Does not use /games/add for DLC/packs. Does not change edition, play status, Digital, or Acquisition Info. Never DELETE GAME. platform and digital are ignored for nested extras (the parent row already has those fields).

list_collection_game_optionsB

Read-only dump of copies, extra-platform plus button, progress widgets, ratings, and reviews for a collection game. Does not save. Requires login.

add_game_platform_copyA

Add another GAME INFORMATION copy via button.extra-platform on the collection edit header. Skips if that platform copy already exists. Never fills Acquisition Info. Never DELETE GAME. Pass submit=false to fill the form without saving. Platform is taken from the caller, or inferred when the extra-copy select has exactly one real option. Digital/Physical is changed only when digital is passed.

set_game_progressA

Set per-copy progress on the collection edit form: status, completion, 0-100 bar, progress notes. collection_id required when multiple copies exist. Changes only provided fields. clear_fields JSON list can empty notes/progress/status. One UPDATE GAME. Does not touch edition, DLC, Digital Service, or Acquisition Info. Never DELETE GAME.

set_game_acquisitionA

Set or clear ACQUISITION INFO on a collection copy. Only provided fields change. clear_fields is a JSON list (source, amount, date, notes, acquisition, digital_service, additional_cost). One UPDATE GAME. collection_id required when multiple copies exist. Never DELETE GAME. Never UNLOCK CUSTOM TAGS.

delete_game_copyB

Delete a saved collection copy via DELETE GAME. collection_id always required. confirm=true required. Does not click DELETE DRAFT or DELETE GAME FOR unsaved extra platforms. Last remaining copy removes the game from the collection.

set_game_ratingA

Set or clear IB ratings on the collection game page (per IGDB game, not per copy). Scores are 1-10. Empty sub-fields stay unchanged. clear=true removes the rating. Requires login.

add_game_reviewA

Add or update a review at /games/{slug}/add-review. Body required. Publish needs 800+ characters; use publish=false for Save draft. If a review already exists, opens the existing editor. Never clicks DELETE. Requires login.

delete_game_reviewA

Delete a review. Drafts only unless published=true AND you named that review. confirm=true required. Never DELETE GAME.

list_play_recordsB

Read-only dump of Play Records categories and Add new category options. Does not save. Requires login. Play Records tab is hidden when status is No Status.

set_play_record_categoryB

Add or edit a Play Records category on this game (not the user profile). Types: keyValue, checkbox, progress, table. If the UI would write a global category library, returns profile_scope unless confirm_new=true and you named that category in chat.

set_play_recordC

Add or update a Play Records row in a category on this game. action is add or update. keyValue uses name+value; checkbox uses name; progress uses name+value as progress_earned.

remove_play_recordA

Remove a Play Records row, or an entire category if row_index is empty. confirm=true required for category delete. Never DELETE GAME.

run_browser_use_taskA

Run an autonomous browser-use agent for complex multi-step tasks on Infinite Backlog. Prefer the deterministic tools for simple reads/clicks. The agent is scoped to infinitebacklog.net and will refuse tasks that contain a non-IB URL.

Requires: pip install browser-use + an LLM API key in the environment (OPENAI_API_KEY, ANTHROPIC_API_KEY, GOOGLE_API_KEY, or BROWSER_USE_API_KEY).

Examples:

  • "Go to infinitebacklog.net, search for Hades, and summarize the first result"

  • "Open my collection page and list unfinished RPGs" (needs cookies/login)

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 28 tools

Disambiguation3/5

The IB-specific tools (set_game_progress, add_game_content, add_game_platform_copy, set_game_acquisition) have very detailed descriptions that draw boundaries, but they still overlap conceptually (content vs. copy vs. acquisition on the same edit form). Additionally, the generic browser primitives (click, fill, search_games) overlap with the higher-level deterministic tools and run_browser_use_task explicitly, and the three read-only collection listers (list_related_content, list_collection_content_menus, list_collection_game_options) are easy to confuse.

Naming Consistency3/5

The Infinite Backlog domain tools consistently use a verb_noun snake_case pattern (set_game_progress, add_game_content, delete_game_review, list_play_records). However, the browser-automation primitives deviate: bare verbs (click, fill), bare nouns (current_url, screenshot), and mixed forms (open_site, get_page_text) coexist, breaking the otherwise predictable convention.

Tool Count3/5

28 tools is on the heavy side for a single-site automation server, and the generic Playwright primitives (click, fill, evaluate_js, get_page_html, get_links) add surface that partly duplicates the deterministic tools. The count is defensible given the broad domain (progress, play records, ratings, reviews, copies, acquisition, content, and browser automation), but it sits at the borderline-heavy end.

Completeness4/5

Coverage is broad: play records and categories, progress, ratings, reviews, acquisition info, platform copies, DLC/packs/editions, and reads for all of these, plus a browser fallback. Minor gaps exist such as adding a brand-new game to the collection from scratch and no dedicated edition/DLC-orchestration beyond add_game_content, but core CRUD across the collection lifecycle is largely present.

Maintenance

ActivityMaintained
ResponsivenessNo issues