Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_projectsA

List the Roblox games on this account, with their universe ids. Use this to turn a game name the user said into an id.

get_thumbnailsA

Read a game's thumbnails and how they are performing: QPTR, impressions, qualified plays and average playtime, split into the live (active) set and inactive variants. Answers questions like 'how are the thumbnails doing on '.

list_discord_rolesA

List the Discord roles that can be notified, so a name the user said can be matched to one.

notify_teamA

DM everyone holding a Discord role about a game. Can attach images and can ask for an answer with two buttons whose labels you choose (for example Approve/Disapprove, or Paid/Cancel). When buttons are used, whoever answers has their decision sent to the whole role. Pass paymentAmount to make it an invoice for commissioned work: the DM shows the amount and a pay button, the buttons default to Paid/Cancel, and clicking Paid marks the ticket paid.

get_notification_historyA

What has already been sent to the team about a game, with timestamps and any answers. Each answer names who gave it, what they chose, their Discord id, and when β€” so a caller can gate on a specific pair of people having both approved. Payment tickets also report whether they are paid.

create_ticketA

Open a ticket on a game β€” the same thing the /ticket command does in Discord. Each ticket gets a channel of its own, named 🟒-0001 and filed under a category named after the game, so the sidebar reads as what is open on it; closing the ticket renames that channel to closed-0001 and drops the dot. The ticket itself is an embed with Approve, Deny and Close buttons. Use type 'payment' with amountUsd to ask for money; it counts as paid once someone clicks Paid.

set_ticket_stageA

Set which of the twelve production stages a ticket is on, and redraw the pinned status card in its channel. Every move posts its own card in the ticket channel rather than editing the last one, so the channel is a readable record of how the work went; only the newest stays pinned. Jumping several stages at once is allowed and the card names the ones that were skipped. Opening a ticket puts it on 'ordered' and clicking Approve moves it to 'confirmed' automatically; every stage after that is set here or with /ticket status. The two review gates are stored apart β€” 'concept_review' waits on the idea, 'art_review' waits on the finished art β€” even though both read as "Waiting for review" to a person.

get_ticket_stageB

Where a ticket sits in the twelve-stage pipeline, what comes next, any estimate on it, and every stage it has been through with who moved it and when. Use this to answer "how is that going" without reading the channel.

close_ticketA

Close a ticket once it is done, or open a closed one back up. Closing renames its channel from 🟒-0007 to closed-0007 and greys the embed, so the sidebar stops showing it as live work. The same thing the Close button on the ticket and /close-ticket in Discord do. Name the ticket by its number (0007, or just 7) or by the id create_ticket handed back.

post_ticket_panelA

Post a game's standing "Add ticket" button in its channel. Anyone who clicks it gets a short form, and filing it opens a numbered channel for that ticket under the game's category. create_channel and link_channel already do this when they point a game at a channel, so this is for putting the button back after it has scrolled out of sight, or moving it somewhere else. Posting it again takes the previous one down rather than leaving two.

list_artist_channelsA

The text channels the bot can see in the studio Discord server, with their ids β€” one per artist. Use this to turn an artist name into a channel id. A channel missing from this list is one the bot has not been given access to.

create_channelA

Make a text channel in the studio Discord server - one per game or per artist. Pass a game to point it at that game at the same time, which is the whole of setting a new game up: the channel exists, its tickets go there, and the site's View channel button follows. Running it twice with the same name reuses the channel already there rather than making a second one. The bot needs Manage Channels; without it this comes back saying so, and the fix is a fresh invite link, not another call.

link_channelA

Point a game at a channel that already exists: where its tickets get posted, and where the View channel button on its notifications goes. The same pairing /ticket config makes in Discord, without needing to be in the server. Take the id from list_artist_channels. Pass no channel to unlink.

get_channel_messagesA

Messages in a studio channel, oldest first, with author, time, text and attachment URLs. Pass the lastMessageId from the previous read as since to get only what is new β€” that is how a poll avoids re-reading. Attachment links are signed and expire within about a day, so download art when you see it rather than saving the URL.

send_channel_messageA

Say something in a studio channel as the bot, as plain text or as an embed β€” the card with a coloured bar, a title, fields and link buttons. Images can be attached either way. Meant for messages that were already agreed on β€” briefs, thank-yous, status notes β€” not for improvising a conversation with an artist.

upload_thumbnailA

Publish a local image as a thumbnail on a Roblox game. Roblox moderates asynchronously, so a Pending result is normal rather than a failure.

check_permissionsA

Everything this key is allowed to do to one game, probed rather than assumed: whether analytics are readable, whether the Roblox account behind the project can upload, delete and swap the live set, whether the game has a personalization config at all, whether auto-swap is armed, and whether Discord and its channel are wired up. Call this first when a write is about to happen, or when something failed and it is not obvious which credential was missing β€” every 'no' comes back with the reason and what would fix it.

set_project_credentialsA

Attach an Open Cloud API key and/or a .ROBLOSECURITY cookie to a game β€” the two things check_permissions reports missing. The key unlocks analytics; the cookie unlocks uploading, deleting and swapping the live set. Both are stored encrypted and never read back. Pass an empty string to clear one: clearing the cookie reverts the game to the shared default account. Owner only. Do not invent these values β€” they come from the user.

set_active_thumbnailsA

Change which of a game's thumbnails Roblox shows on the homepage. Ids can be either the asset ids get_thumbnails leads with or the internal thumbnail ids β€” both are accepted and resolved. mode 'replace' makes exactly the listed set live and everything else inactive; 'add' and 'remove' adjust the current set instead, which is what you usually want when acting on one thumbnail. The change is immediate and Roblox starts serving it to players; nothing is deleted either way, so an inactive variant can always be brought back.

delete_thumbnailA

Permanently remove a thumbnail from a Roblox game. This is not the same as taking it out of the live set β€” set_active_thumbnails with mode "remove" does that and keeps the image, which is almost always what is wanted. Roblox has no undo for a delete, and the analytics history for that asset goes with it. Only reach for this when the image should not exist on the game at all.

generate_thumbnailA

Make a new thumbnail image with the site's AI pipeline β€” the same one the generator page uses β€” from a prompt and at least one reference image. The prompt is rewritten against the studio style guide first unless enhance is turned off. The result is written to a file on this machine so it can be looked at, and saved to the project's history. Pass publish to send it straight to Roblox, which is only worth doing when the image has already been agreed on; otherwise generate, look at it, then call upload_thumbnail.

list_generationsA

Every thumbnail generated for a game, newest first, with the prompt behind it, the rewritten prompt the model actually saw, the references used and the stored image URL. Use it to find something made earlier and publish it with upload_generation, or to reuse a prompt that worked.

upload_generationA

Publish an image already in a project's history to Roblox, by its generation id from list_generations. Nothing is downloaded or re-uploaded β€” the site sends its own stored copy β€” and the resulting Roblox asset id is recorded against the generation, which is what later lets its analytics be traced back to the prompt that made it.

list_style_profilesA

The named style guides the prompt enhancer can be pointed at, with the instructions each one carries. Pass a name as profile to generate_thumbnail to generate in that style instead of the studio default.

get_auto_swapA

Whether a game rotates its own thumbnails, on what schedule and rules, and what the last runs actually did. Auto-swap drops the worst-performing live thumbnails by QPTR and promotes replacements from the queue. A game that turned itself off reports why β€” that reason is the thing to act on.

configure_auto_swapA

Turn a game's automatic thumbnail rotation on or off and set its rules. Turning it on schedules the next run and clears any self-disabled flag. Every field is optional: only what is passed changes. Rotation pulls replacements from the queue, so a game with an empty queue will run and do nothing β€” check get_queue before turning it on.

run_auto_swapA

Fire a game's rotation once, immediately, without waiting for the schedule or needing it enabled. It applies the same rules β€” drop the worst live thumbnails by QPTR, promote from the queue β€” and changes what players see. A run that finds nothing worth swapping reports that rather than failing.

get_queueC

Thumbnails lined up to go live, in the order auto-swap will promote them. This is where rotation gets its replacements: an empty queue is why an enabled auto-swap runs and does nothing.

queue_thumbnailA

Line an existing thumbnail up to go live at the next rotation. It has to already be on the game β€” upload it first if it is not. Queuing does not change what players see; auto-swap promotes it when it drops something, or set_active_thumbnails can put it live straight away.

unqueue_thumbnailA

Remove an entry from the swap queue so auto-swap will not promote it. The thumbnail itself is untouched and stays on the game.

get_qptr_trendA

A game's daily click-through rate and impressions, to answer whether it is trending up or down rather than how one thumbnail is doing right now. Roblox only serves the last 30 days; anything older comes from the site's own archive, and days it has neither for come back empty rather than as a zero.

get_thumbnail_momentumA

Per-thumbnail direction over a window: whether each one's QPTR is climbing, sliding or flat, compared against its own earlier half rather than against the others. Use it to decide what to drop when a game's overall numbers are fine but something in the set is dragging. Needs stored history, so a game added recently will have nothing to compare.

export_thumbnail_reportA

Render a game's thumbnails and their figures, ordered by QPTR, into a PDF written to this machine β€” the shareable version of get_thumbnails, for sending to a client or an artist. Images are fetched and embedded, so this takes a few seconds.

get_game_infoA

What Roblox knows about a game β€” name, description, players, visits, likes, creator β€” from a game link, a place id or a universe id. It does not have to be a project on this account. The reply also says whether any configured Roblox account can edit its thumbnails, which is what decides whether adding it as a project would be read-only.

add_projectA

Put a Roblox game on this account so the rest of these tools can act on it. Takes a game link, place id or universe id, looks the game up, and pins it to whichever Roblox account can actually edit it β€” without that pin, writes default to an account with no access and fail. A game already claimed by someone else is refused rather than taken over. Follow it with check_permissions to see what still needs a credential.

search_roblox_gamesA

Search Roblox for games by name or keyword β€” for finding a game to add, or for looking at what comparable experiences are using as thumbnails. Results are what Roblox shows a signed-in account, so they are tailored rather than absolute.

list_ticketsD

Just the tickets on a game, without the plain notes get_notification_history mixes in β€” what was asked for, who answered, and for payment tickets whether the money has been marked paid. Use it to answer 'what is outstanding on this game'.

list_collaboratorsA

The people a project has been shared with, and any invite links still open. Owner only. A shared collaborator can read and act on the project but cannot see or change its stored credentials.

invite_collaboratorA

Create a single-use invite token for a project, good for seven days. Whoever redeems it on the site gains access to the project β€” they can read its thumbnails and act on it, but never see its stored credentials. Owner only. Hand the token to one person; it is spent on first use.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Haydebug/whitehat-thumbnails-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server