White Hat Thumbnails
Provides tools for interacting with Discord, including notifying roles, creating and managing tickets, reading and sending channel messages, and gathering responses via interactive buttons.
Allows managing Roblox game thumbnails end-to-end, including uploading, deleting, activating, and rotating thumbnails, analyzing QPTR performance, and generating new thumbnail images.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@White Hat Thumbnailshow are the thumbnails doing on +1 dumpling escape?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
White Hat Thumbnails — MCP server
Lets an AI assistant run your Roblox thumbnails end to end from a chat window: read how they are performing, generate new ones, publish them, choose which are live, rotate them automatically, and talk to your Discord team about it.
"how are the thumbnails doing on +1 dumpling escape?"
"what am I actually allowed to do on magnet simulator?"
"generate three variants from this reference and put the best one live"
"drop the worst performer and promote the next one from the queue"
"go notify the thumbnail team on +1 dumpling escape walls to pay this link,
with two options approve and disapprove"Everything runs against your own account. A key only reaches the projects you already have access to on the site, and it can never read back a stored credential — only tell you whether one is there and whether it works.
Setup
1. Get a key
Sign in at https://whitehatthumbnails.vercel.app, open Keys, and create one. It is shown once — copy it then.
2. Install
git clone https://github.com/Haydebug/whitehat-thumbnails-mcp.git
cd whitehat-thumbnails-mcp
npm install
npm run build3. Point your assistant at it
claude mcp add whitehat-thumbnails \
--env WHT_API_KEY=wht_your_key_here \
-- node /absolute/path/to/whitehat-thumbnails-mcp/dist/index.jsAdd to claude_desktop_config.json:
{
"mcpServers": {
"whitehat-thumbnails": {
"command": "node",
"args": ["/absolute/path/to/whitehat-thumbnails-mcp/dist/index.js"],
"env": { "WHT_API_KEY": "wht_your_key_here" }
}
}
}The config file lives at:
macOS
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows
%APPDATA%\Claude\claude_desktop_config.json
Restart Claude Desktop afterwards.
Use an absolute path — the assistant does not run from this folder.
Related MCP server: GPT Image MCP Server
Tools
Knowing what you can do
Tool | What it does |
| Probes one game and reports exactly which tools will work on it, and why the rest will not |
| Store an Open Cloud key and/or a Roblox cookie on a game — the two things the report asks for |
Projects
Tool | What it does |
| Your games and their universe ids |
| Look up any Roblox game by link, place id or universe id — it need not be yours |
| Search Roblox by name or keyword |
| Put a game on your account, pinned to whichever Roblox account can edit it |
| Who else reaches a project, and a single-use invite link |
Thumbnails
Tool | What it does |
| Live and inactive thumbnails with QPTR, impressions, qualified plays, average playtime |
| Choose which thumbnails Roblox actually shows — replace, add or remove |
| Publish a local image as a game thumbnail |
| Permanently remove a thumbnail from the game |
| Daily click-through and impressions over 7, 14 or 30 days |
| Which individual thumbnails are rising, falling or flat |
| The whole set, ordered by QPTR, as a PDF written to disk |
Making thumbnails
Tool | What it does |
| Generate an image from a prompt and references, write it to disk, optionally publish it |
| Everything generated for a game, with the prompts behind each one |
| Publish something from that history without re-uploading it |
| The named style guides generation can be pointed at |
Rotating them
Tool | What it does |
| Whether a game rotates itself, on what rules, and what recent runs did |
| Turn rotation on or off and set its thresholds |
| Fire one rotation now, without waiting for the schedule |
| What is lined up to go live next |
| Add to or remove from that line |
Discord
Tool | What it does |
| Roles that can be notified |
| DM a role, optionally with images and two answer buttons |
| What was already sent, with per-person answers and paid status |
| Open a ticket — posts an embed with Approve/Deny in the game's channel |
| Just the tickets on a game, with what is still unanswered or unpaid |
| Text channels in the studio server, with ids |
| Make a channel, and point a game's tickets at one |
| Read a channel — author, time, text, attachment URLs |
| Post in a channel as the bot, as plain text or an embed, optionally with images |
Game names are matched loosely, so "dumpling escape" finds "+1 Dumpling SMASH Walls". If a name is ambiguous the tool says so and lists the candidates rather than guessing.
Knowing what you are allowed to do
Authority over a Roblox game is not one permission. It is spread across a
.ROBLOSECURITY cookie (uploads, deletes, swapping the live set), an Open Cloud
key (analytics), a personalization config Roblox only creates once a game has
several thumbnails (whether there is a swappable live set at all), and a Discord
bot (tickets and notifications). Any of them can be missing on its own, and the
failure you see is the same shrug either way.
check_permissions probes all of them at once and answers in two lists:
MAGNET SIMULATOR LEGENDS — universeId 7592711723
You own this project.
Open Cloud key: stored (••••YkpR), encrypted at rest
Roblox account: WH_AIbot (the shared default account)
WORKS (6)
get_thumbnails
2 active, 124 inactive
analytics (QPTR, impressions, playtime)
figures came back for 16 of 126 thumbnails via the Open Cloud key ••••YkpR
set_active_thumbnails
a personalization config was resolved, so the live set can be changed
…
DOES NOT WORK (2)
upload_thumbnail, delete_thumbnail
WH_AIbot (the shared default account) is signed in but Roblox refuses it
edit access to this game
Fix: give that account permission on the experience, or store a cookie for
one that already has it with set_project_credentials.
ticket posting to a channel
this game is not linked to a Discord channel, so tickets only go out as DMs
Fix: call create_channel with this game, or link_channel with an id.Every "no" carries the reason and the fix, because "no" on its own sends you round the same loop again. Run it before a write you care about, or after one fails and it is not obvious which credential was missing.
The two credentials it asks for go in with set_project_credentials. They are
stored encrypted and never read back — the report can say a key is present and
whether it works, and nothing more.
Choosing what is live
Uploading a thumbnail does not show it to anyone. Roblox keeps every image a
game has ever had and serves a chosen subset; set_active_thumbnails is what
changes that subset, and it takes effect immediately.
set_active_thumbnails(game: "magnet simulator", ids: ["108286870859415"], mode: "add")
set_active_thumbnails(game: "magnet simulator", ids: ["112922133257215"], mode: "remove")add and remove adjust what is already live and are what you usually want.
replace makes exactly the listed set live and everything else inactive — easy
to fire by accident when you meant add. Ids can be the asset ids the reports
lead with or the internal thumbnail ids; both are accepted.
Nothing here deletes anything. A deactivated thumbnail keeps its history and can
be brought back. delete_thumbnail is the one that cannot be undone, and it
refuses to remove a game's last live image.
Generating
generate_thumbnail runs the same pipeline the site's generator page does: your
prompt is rewritten against a style guide, then rendered against one or more
reference images. The result is written to a file on your machine so it can
actually be looked at before it goes anywhere near a game.
generate_thumbnail(
game: "magnet simulator",
prompt: "character yanking a giant magnet out of a pile of loot",
referencePaths: ["ref.png"],
profile: "Simulator"
)References can be local paths or public URLs; at least one is required, since the
model works from an image rather than from nothing. profile picks one of the
style guides list_style_profiles lists. Pass publish: true only when the
image has already been agreed on — otherwise generate, look at the file, then
upload_thumbnail.
Rotating automatically
Auto-swap drops the worst-performing live thumbnails by QPTR and promotes replacements from a queue, on a schedule.
queue_thumbnail(game: "magnet simulator", id: "108286870859415")
configure_auto_swap(game: "magnet simulator", enabled: true, dropCount: 1,
frequencyMinutes: 1440, qptrThreshold: 2)
run_auto_swap(game: "magnet simulator")qptrThreshold is a percentage, not a fraction: 2 means 2%. A game with an
empty queue will run and do nothing, so check get_queue before turning it on.
get_auto_swap shows the rules, the schedule and what recent runs actually
moved — and if rotation turned itself off, the reason it gives is the thing to
fix.
Answer buttons
notify_team can attach two buttons and let people answer:
notify_team(
game: "+1 dumpling escape",
role: "Thumbnail Team",
message: "Pay here please: https://…",
askForAnswer: true,
approveLabel: "Paid",
declineLabel: "Cancel"
)Whoever clicks has their decision DM'd to everyone with that role, including themselves. Each person can answer once.
get_notification_history reports each answer on its own line with the person's
Discord id and the moment they clicked, so an automation can gate on a specific
pair of people having both approved rather than on a count:
2026-08-20T03:42:31.704Z — Hayden S → "Thumbnail Team" (2/2 delivered) · ticket clx…
Dumpling concept art from lamy
payment: $10 · https://paypal.me/asianlamy · PAID by Bug at 2026-08-20T03:45:02.118Z
answers:
Bug (4207…) = Paid at 2026-08-20T03:45:02.118Z
ang (9931…) = Deny at 2026-08-20T03:46:44.500ZPaying for commissioned work
Pass paymentAmount and the ticket becomes an invoice — the DM shows the amount
and a pay button, the buttons default to Paid / Cancel, and the first
click on Paid marks the ticket paid:
notify_team(
game: "+1 dumpling escape",
role: "Thumbnail Team",
message: "Dumpling concept art from lamy",
paymentAmount: 10,
paypalLink: "paypal.me/asianlamy"
)paid latches. A decline after someone has already marked it paid is recorded as
an answer but does not un-pay the ticket — money that went out cannot be recalled
by a button.
Tickets
A ticket is the same record as a team notification — same table, same per-person answers, same paid flag — with a title, a type and a channel to live in. It can be opened three ways and they are indistinguishable afterwards:
/ticket createin Discord, from any channel or a DM with the botcreate_tickethere, for automationsthe notification tooling on the site
create_ticket(
game: "+1 dumpling escape",
type: "concept_review",
title: "Dumpling wall smash — first pass",
description: "Three angles from lamy. Picking one for the A/B.",
imagePaths: ["pass1.png", "pass2.png"]
)Types are concept_review, final_review, payment and status. Everything
but status gets Approve / Deny buttons; a payment ticket gets Paid / Cancel
plus the amount and a tappable PayPal link, and the first Paid click sets the
paid flag. Answers land in get_notification_history exactly as button answers
on a DM do, and the embed in the channel is rewritten as people answer so the
message everyone is looking at shows the current state.
Each game posts its tickets to one channel, set once from Discord:
/ticket config game:<game> channel:#lammytaWithout that, a ticket is still created and still readable — it just has nowhere to appear, and the tool says so rather than pretending it was delivered.
Talking to artists
Each artist has their own text channel in the studio server. The three channel
tools are a poll loop, not a live feed: read with since set to the
lastMessageId you were given last time, and you see only what arrived since.
list_artist_channels() → #lammyta — id 1539…
get_channel_messages(channelId: "1539…", since: "…") → replies + art
send_channel_message(channelId: "1539…", text: "…", imagePaths: ["brief.png"])Attachment URLs from Discord are signed and expire in roughly a day, so download art when you first see it rather than storing the link for later.
Embeds
A channel post can be an embed rather than a line of text — the card with a
coloured bar down the side, the same one the notification DMs use. Pass embed
instead of, or alongside, text:
send_channel_message(
channelId: "1539…",
embed: {
author: "White Hat Thumbnails · MCP",
title: "+1 Dumpling SMASH Walls",
url: "https://whitehatthumbnails.vercel.app/projects/10307670587",
color: "#facc15",
description: "Five thumbnails live. **0.41% QPTR** on 1.95M impressions.",
fields: [
{ name: "Top QPTR", value: "0.41%", inline: true },
{ name: "Impressions", value: "1,947,283", inline: true }
],
thumbnailUrl: "https://tr.rbxcdn.com/…",
imageUrl: "https://tr.rbxcdn.com/…",
footer: "Sent by the MCP",
buttons: [{ label: "View project", url: "https://whitehatthumbnails.vercel.app/…" }]
}
)The shape is flat on purpose — Discord nests the footer, the image and every button inside wrappers, and none of that is worth knowing to send a message. Fields are cut to the lengths Discord enforces rather than sent long, because it rejects the whole message over one oversized field.
Buttons here only open links. A button that asks a question and records the
answer belongs to notify_team or create_ticket, which have somewhere to write
the answer down.
For the bot to see a channel it needs View Channel, Read Message History, Send Messages and Attach Files there. Invite it with:
https://discord.com/oauth2/authorize?client_id=<APP_ID>&scope=bot%20applications.commands&permissions=117760Both scopes matter. bot gets it into the server; applications.commands is what
makes /ticket visible there. A bot invited without the second one works fine for
DMs and channel posts while its slash commands silently never appear.
Configuration
Variable | Required | Meaning |
| yes | Your key from the Keys page |
| no | Only if you run your own copy of the site |
Notes
Discord DMs can be refused, and that is not a bug. Discord will not let a bot
message someone who has blocked it, or who has DMs from server members turned
off, or who shares no server with the bot. notify_team reports per person which
of those happened rather than a single success count.
Roblox moderates uploads asynchronously. upload_thumbnail returning
Pending means it was accepted and is being reviewed — usually a few minutes.
Some games are read-only. Uploading and swapping need a Roblox account with
edit access to that experience; an Open Cloud key cannot do either. The site
shows each project as Full Edit, View Only or Public View, and the tools say when
something is unavailable rather than failing silently. check_permissions is the
quickest way to find out which case a game is in.
Three tools change what players actually see, and do so the moment they
return: set_active_thumbnails, run_auto_swap, and configure_auto_swap with
enabled: true. Uploading and generating do not — an uploaded thumbnail sits
inactive until something puts it live.
One tool cannot be undone. delete_thumbnail removes the image from Roblox
along with its analytics history. Deactivating with
set_active_thumbnails(mode: "remove") is the reversible version and is almost
always what was meant.
check_permissions does not probe generation. The only honest check would be
generating an image, which costs money and leaves a record behind. If
generate_thumbnail is going to fail it fails on the first call, with the reason.
Licence
MIT
Available Tools
39 toolsadd_projectAdd a game as a 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | A roblox.com game link, a place id, or a universe id. | |
| channelName | No | Also make a Discord channel of this name and point the game at it, the way create_channel does. | |
| isUniverseId | No | Set when the number given is a universe id rather than a place id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full disclosure burden and does so thoroughly. It reveals the pinning mechanism, the default-write failure when unpinned, refusal of already-claimed games, and the recommended next step—all critical behavioral traits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, each earning its place: purpose, input flexibility, failure/refusal behavior, and follow-up guidance. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no output schema and no annotations, the description covers the essential behaviors (ownership, default-write failure) and next steps. It feels entirely sufficient for an agent to use this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All three parameters already have clear schema descriptions (100% coverage), so the baseline is high. The description adds dimension by explaining why the game identifier matters (ownership/pinning) and clarifying when isUniverseId is needed, supplementing rather than repeating the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ('Put a Roblox game on this account') and clarifies the outcome—making the game actionable by the rest of the toolset. It clearly distinguishes itself from the channel/ticket/thumbnail tools in the sibling list.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides strong when-to-use context: it positions this as the setup step that must happen before other tools can act on a game, and it explicitly recommends following with check_permissions. It doesn't name a direct alternative to prefer instead, so it stops one step short of perfect guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
check_permissionsWhat can I do to this gameA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility. It transparently describes the probe nature (non-destructive), enumerates what is checked, and discloses that results include reasons and fixes. It does not explicitly state the tool is read-only, but 'probed rather than assumed' strongly implies no side effects. Minor gap: no mention of rate limits or auth specifics, but not required.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, information-dense sentence with a clear colon-list structure, followed by a second sentence with usage guidance. It is not overly verbose and front-loads the core purpose. Slightly long, but each element adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one parameter, no output schema), the description covers everything needed: what it checks, when to use it, and what the return includes (reasons and fixes). It is fully sufficient for an agent to decide when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%—the single parameter 'game' is described as 'Game name or universe id.' The description adds minimal extra semantics beyond reinforcing the scope ('one game'), but it does not introduce new details about the parameter. Baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: probing everything the key can do to one game, enumerating specific checks (analytics, upload/delete/swap, config, auto-swap, Discord). It distinguishes from siblings like get_game_info and get_auto_swap by focusing on permission capabilities rather than retrieving data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit guidance is given: 'Call this first when a write is about to happen, or when something failed and it is not obvious which credential was missing.' It also explains the benefit—every 'no' includes the reason and fix—making the tool's invocation clear and actionable.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
close_ticketClose or reopen a 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| reason | No | A closing note, posted in the ticket channel for the record. | |
| reopen | No | Open it back up instead of closing it. | |
| ticket | Yes | Ticket number, e.g. 0007, or the ticket id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. It reveals concrete side effects: 'renames its channel from 🟢-0007 to closed-0007 and greys the embed, so the sidebar stops showing it as live work.' This goes beyond simple 'close/reopen' and informs the user about channel naming and embed visuals. It also confirms equivalence to the Close button and /close-ticket, which sets expectations. Missing details like permission requirements or error handling, but the core behavior is well disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences, each earning its place. It front-loads the primary purpose, then explains side effects, equivalence, and parameter naming. No redundant or vague statements. It is appropriately sized for the tool's complexity and provides a model of concise, informative writing.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 4 parameters, no annotations, and no output schema, the description covers the key aspects: purpose, side effects, equivalence to existing UI, and ticket identification. It explains the 'reopen' boolean implicitly via 'open a closed one back up.' It does not discuss return values or error scenarios, but given the absence of an output schema and the straightforward nature of the operation, it is sufficiently complete. A small gap is not addressing prerequisites, but the mention of 'create_ticket' implies a prior creation step.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value by clarifying the ticket parameter: 'Name the ticket by its number (0007, or just 7) or by the id create_ticket handed back.' This explains flexible input formats (number without leading zeros, or the id from create_ticket) that the schema does not fully convey. The 'just 7' alias is a useful addition, making the parameter semantics clearer than schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Close a ticket once it is done, or open a closed one back up.' This clearly states the primary action and scope, distinguishing it from sibling tools like create_ticket (creates) and set_ticket_stage (changes stage). The reference to the Close button and /close-ticket further anchors its purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear context for when to use: 'once it is done' for closing, and mentions reopening. It also equates the tool to existing UI/Discord commands, which signals the typical use case. However, it does not explicitly state when not to use it (e.g., for changing stage or listing tickets), so it lacks explicit exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
configure_auto_swapConfigure 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| enabled | No | Turn rotation on or off. | |
| dropCount | No | How many of the worst live thumbnails to drop per run. | |
| qptrThreshold | No | QPTR floor as a percentage, not a fraction: 2 means 2%. Live thumbnails under it are candidates to drop. | |
| frequencyMinutes | No | Minutes between runs. The scheduler ticks every few minutes, so anything under that is rounded up in practice. | |
| instantDropMinImpressions | No | How many impressions a thumbnail needs before a bad QPTR is trusted enough to drop it immediately. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses key behaviors: enabling schedules the next run, clears a self-disabled flag, and that only passed fields are changed (partial updates). It also warns about the empty-queue case where the rotation runs but does nothing. No annotations exist, so this textual transparency is valuable and goes beyond a generic description.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise yet information-dense. It uses four short sentences covering purpose, side effects, update semantics, and a cautionary note. No filler words; every sentence adds value. The structure is logical: what it does, what happens on enable, how updates work, and a warning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a configuration tool, it covers the essential aspects: the primary action (toggle), side effects (scheduling, flag clearing), partial updates, and a notable edge case (empty queue). It doesn't mention potential errors or return values, but given the lack of an output schema and simple nature, it's adequately complete. A minor gap is not stating what happens when disabling, but that's likely intuitive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides descriptions for each parameterlied. The description adds meaningful semantics: 'Every field is optional: only what is passed changes' clarifies the update behavior, and the queue dependency (empty queue yields a no-op) is essential for correct usage. This goes beyond the per-parameter schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: to turn automatic thumbnail rotation on/off and set its rules. It identifies the target (a game's auto-swap) and the major actions (enable/disable, configure parameters). It also distinguishes it from related tools like get_auto_swap (which would be used to read settings).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete usage context: it explains when to use the tool (to modify auto-swap settings) and warns to check get_queue before enabling, implying a prerequisite. It doesn't explicitly contrast with get_auto_swap for reading, but the context is clear enough for an agent to infer the appropriate use case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_channelCreate a studio 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | No | Game name or universe id. Given, the new channel is linked to it as well. | |
| name | Yes | What to call it. Tidied into the shape Discord accepts, so "Build a Mini City!" becomes build-a-mini-city. | |
| topic | No | Channel topic, shown under the name. | |
| category | No | Category to file it under, by name, e.g. "bugs stuff". Top level when left out. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral disclosure burden. It reveals meaningful side effects: tickets route to the channel, the site's View channel button follows, duplicate names are idempotent rather than creating a second channel, and the bot requires Manage Channels permission. It even describes the failure mode and remediation advice, which is excellent transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three dense sentences with the core action front-loaded in the first phrase. Every clause contributes operational value: scope, game linkage, idempotency, permission requirements, and failure recovery. There is no filler or repetition of schema content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a side-effectful channel-creation tool with no output schema, the description is remarkably complete. It covers what the tool does, when to use it, what changes happen as a result, duplicate handling, permissions, and expected failure behavior. The parameter schema handles the rest, so no critical gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds extra semantic value by explaining that names are normalized into Discord-acceptable slugs with a concrete example, that category falls back to top level when omitted, and that passing a game links the channel to that game. This goes beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Make a text channel in the studio Discord server'. It immediately scopes the tool to 'one per game or per artist' and explains that passing a game both creates the channel and completes game setup. This clearly distinguishes it from sibling tools like link_channel and send_channel_message.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: creating a text channel for a game or artist, and using a game argument to link the channel during game setup. It also explains repeated calls reuse an existing channel. However, it does not explicitly name alternative tools or state when not to use this tool, so it stops short of full exclusionary guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_ticketFile a 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| role | No | Also DM this Discord role, for people who prefer DMs to channels. | |
| type | Yes | concept_review, final_review, payment, or status. | |
| title | Yes | Short summary, shown as the embed heading. | |
| amountUsd | No | What it costs, in dollars. Required for a payment ticket. | |
| imageUrls | No | Already-public image URLs to attach. Up to 4 in total with imagePaths. | |
| imagePaths | No | Local image files to attach. Uploaded automatically. Up to 4. | |
| paypalLink | No | Where to send the money, e.g. paypal.me/name. | |
| description | Yes | What needs doing, or what happened. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full transparency burden and does so well: it discloses channel creation/naming, category filing, embed/button behavior, closing rename behavior, and the paid-on-Paid-click state change. This goes far beyond what the schema alone reveals.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and every sentence earns its place. The behavioral details are dense but not padded, and the payment guidance is compact.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 9-parameter, no-annotation, no-output-schema tool, the description is remarkably complete: it covers purpose, side effects, conditional payment usage, and ticket lifecycle. It does not explicitly state a return value or success response, but the operational details are sufficient given the rich schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaningful usage semantics by linking type 'payment' with amountUsd and explaining the paid lifecycle. It also clarifies the title's role as the embed heading. This modest addition raises it above the baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource: 'Open a ticket on a game' and explicitly ties it to the /ticket Discord command. The description clearly distinguishes this creation/opening action from siblings like close_ticket, set_ticket_stage, and list_tickets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear contextual guidance such as 'Use type payment with amountUsd to ask for money' and references the /ticket command as the equivalent. It does not explicitly name alternatives/exclusions, but the sibling names make the main when-to-use distinction obvious.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_thumbnailDelete a thumbnail from RobloxA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset id or thumbnail id from get_thumbnails. | |
| game | Yes | Game name or universe id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses critical behavioral traits: permanent deletion with no undo, and loss of analytics history. Since no annotations are provided, it carries the full burden and does so effectively, though it could mention potential authorization requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is packed with necessary information in just three sentences, with critical warnings front-loaded. No extraneous words, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description covers the essential context: what it does, when to use it, and consequences. It could add a note about required permissions, but overall it is sufficiently complete for a simple two-parameter tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents both parameters. The description adds context by referencing the source of the 'id' parameter ('from get_thumbnails') but does not add extra meaning beyond that, so a baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: permanently remove a thumbnail from a Roblox game. It also distinguishes itself from related operations like set_active_thumbnails, making it highly specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly tells when to use this tool versus the alternative (set_active_thumbnails with mode 'remove'), and includes when not to use it ('Only reach for this when the image should not exist on the game at all'), providing clear guidance for the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
export_thumbnail_reportExport a thumbnail PDFA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| range | No | Reporting window. Defaults to 7d. | |
| outputPath | No | Where to write the PDF. Defaults to a temp file, whose path is returned. | |
| includeInactive | No | Include inactive variants. Defaults to true. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does well by disclosing that the PDF is written to the local machine, images are fetched and embedded, and ordering is by QPTR. It also warns about latency. It doesn't mention return values or overwrite behavior, but the main side effects and performance characteristics are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence front-loads the action, output, ordering, and audience; the second adds a necessary latency caveat. Every part earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a file-export tool with four parameters and no output schema, the description covers the key behavioral elements: local output, asset types, ordering, shareable use case, and expected runtime. It could mention what happens when outputPath is omitted, but the schema already documents that the path is returned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the param semantics are fully documented in the schema itself. The description adds context about output being a PDF and ordering, but doesn't elaborate on range, outputPath, or includeInactive beyond what the schema already states, earning the baseline score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: renders a game's thumbnails and figures into a PDF, ordered by QPTR. It also distinguishes itself from the sibling tool get_thumbnails by calling itself the 'shareable version,' which clearly identifies its output and purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear usage context: use this when you need a PDF to send to a client or artist, implying get_thumbnails is the alternative for non-PDF needs. It also sets expectations with 'this takes a few seconds,' though it does not explicitly list when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_thumbnailGenerate a 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. The generation is saved to this project. | |
| model | No | Which image model to use. Defaults to gemini. | |
| prompt | Yes | What the thumbnail should show. | |
| enhance | No | Rewrite the prompt against the style guide first. Defaults to true. | |
| profile | No | Name of a style profile to enhance against. See list_style_profiles. | |
| publish | No | Upload it to Roblox immediately. Defaults to false. | |
| outputPath | No | Where to write the PNG. Defaults to a temp file, whose path is returned. | |
| primaryIndex | No | Which reference to match most closely, counting URLs then paths. Defaults to the first. | |
| referenceUrls | No | Public image URLs to steer style and subject. The first is treated as the primary reference unless primaryIndex says otherwise. | |
| referencePaths | No | Local image files to use as references. Hosted automatically. At least one reference, by path or URL, is required. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure burden. It reveals key side effects (writes to a file, saves to history, can publish to Roblox), the enhancement pipeline, and the dependency on at least one reference image. However, it omits operational details like error behavior, rate limits, or asynchronous execution, making it not fully comprehensive but still quite transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and front-loaded: the first sentence states the core action, followed by behavioral details and workflow guidance. Each sentence contributes meaning without redundancy, perfectly sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 10 parameters, no output schema, and no annotations, the description covers all critical aspects: purpose, side effects, reference requirement, enhancement behavior, publish option, and a direct alternative. It is highly complete for an agent to select and invoke the tool correctly, with only minor missing details like return format (partially covered by mentioning temp file path).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so parameters are well-documented. The description adds value by clarifying that despite schema not requiring references, at least one is needed, and explaining the purpose of enhance (style guide rewriting). It also contextualizes primaryIndex and outputPath, enriching the schema's dry definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Make a new thumbnail image with the site's AI pipeline' and differentiates it from siblings by explicitly contrasting with upload_thumbnail (for publishing) and mentioning history saving. It is specific about the resource (thumbnail image) and the operation (generate), making it unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit guidance: explains when to use publish (only when agreed on) and advises to generate, look, then call upload_thumbnail otherwise. Also mentions the style-guide rewriting behavior and the reference-image requirement, giving clear context for when to use this tool versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_auto_swapAuto-swap statusA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| logs | No | How many past runs to include. Defaults to 5. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It reveals that the tool reports why a game turned off, which is a behavioral outcome, but does not explicitly state that the operation is read-only or has no side effects. While the 'get' prefix suggests non-mutating behavior, the description does not confirm this or disclose any other traits (e.g., auth, rate limits).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences and gets to the point immediately. Each sentence adds value: purpose, mechanism, and actionable advice. It is not overly verbose, though it could be trimmed slightly by not repeating the auto-swap definition if integrated elsewhere.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Despite lacking an output schema, the description gives a solid overview of what information is returned (schedule, rules, last runs, reason if off). It provides enough context for an agent to know what to expect and how to act, and it fits coherently within the sibling tool ecosystem. Missing explicit field names or response format is acceptable given the absence of an output schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both 'game' and 'logs'. The description adds no additional meaning about the parameters; it only implies 'logs' relates to past runs, which is already in the schema. According to the rubric, a baseline of 3 is appropriate when schema handles the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: retrieving auto-swap status including schedule, rules, and last run details, and explicitly distinguishes it from siblings like configure_auto_swap and run_auto_swap by focusing on status reporting. It uses a specific verb ('get') and resource ('auto-swap') and explains what the tool returns, making it unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context—that this is for checking status and acting on the reason if a game turned off—but does not explicitly state when to use it versus alternatives. It fails to mention that configure_auto_swap is for changes or run_auto_swap for triggering a run, leaving usage to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_channel_messagesRead a channelA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many at most. Defaults to 50. | |
| since | No | Only messages after this one. A message id, or a time like 2026-08-19T10:00:00Z. | |
| channelId | Yes | Channel id from list_artist_channels. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the behavioral burden itself. It reveals ordering semantics, incremental pagination behavior, and the critical caveat that signed attachment URLs expire within about a day. It could briefly mention permission requirements, but the disclosed behavior is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three sentences with no filler. It front-loads the main purpose, then adds the most operationally important details about incremental reads and expiring attachment URLs.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a read tool with no output schema, and the description covers the returned message contents, ordering, pagination pattern, and the signed-URL expiration caveat. That is enough for an agent to select the tool and interpret its response without ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds real value for `since` by explaining it should be the lastMessageId from prior reads, which clarifies the polling workflow better than the schema alone.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool returns: messages in a studio channel, oldest first, with author, time, text, and attachment URLs. It is specific enough to distinguish from sibling tools like send_channel_message or get_notification_history.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives a concrete usage pattern: pass lastMessageId from a previous read as `since` to poll only new messages. It does not name alternative tools for comparison, but the guidance makes the appropriate use case clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_game_infoLook up a Roblox gameA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | A roblox.com game link, a place id, or a universe id. | |
| isUniverseId | No | Set when the number given is a universe id rather than a place id. Links are detected on their own. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It explains what data is returned, mentions the thumbnail editability/read-only nuance, and clarifies input formats. It does not discuss errors or side effects, but as a read operation, this is acceptable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, consisting of two clear sentences with no redundant information. It efficiently covers all essential points.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description sufficiently explains the return values (name, description, players, visits, likes, creator, and thumbnail editability). It also covers input options and the read-only implication, making it complete for the tool's purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions for both parameters are present and clear: 'game' accepts a link/place ID/universe ID, and 'isUniverseId' is set when the number is a universe ID. The description adds extra context that links are detected automatically, enhancing understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: retrieving Roblox game information (name, description, players, visits, likes, creator) from a game link, place ID, or universe ID. It distinguishes itself from siblings like search_roblox_games and get_thumbnails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It implies usage when needing game details and mentions important contextual notes (not requiring the game to be on this account, and its relevance to read-only project status). However, it does not explicitly state when to use this over alternatives, though the purpose is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_notification_historyPast notificationsA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| limit | No | How many to return. Defaults to 10. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses detailed behavioral aspects such as timestamps, answer structure (who, what, Discord id, when), and special handling of payment tickets. This goes beyond a simple metadata statement, though it omits potential side effects—likely none for a getter—and rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact (three sentences), information-dense, and jargon-free. Every sentence provides value without redundancy, making efficient use of the agent's attention.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple parameter set and lack of output schema, the description thoroughly explains what the agent can expect in the response, including edge cases like payment tickets. No critical details about the tool's behavior are missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers both parameters (game, limit) with clear descriptions. The tool description adds no parameter-specific details, but since schema coverage is 100%, a baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates the tool returns past notifications sent to the team about a game, including timestamps and answers. While it lacks an explicit verb like 'retrieves' or 'lists', the intent is transparent and distinct from siblings like notify_team, which sends notifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a use case: 'so a caller can gate on a specific pair of people having both approved.' However, it does not explicitly state when to use this tool versus alternatives, nor does it mention any exclusions or conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_qptr_trendQPTR over timeA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| range | No | How far back. Defaults to 14d. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of disclosure. It provides valuable context: Roblox serves only the last 30 days, older data comes from an archive, and days with no data come back empty rather than zero. This explains important behavioral nuances beyond the annotation-free schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences front-load the core purpose and then provide necessary caveats. Every clause earns its place; no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Although there is no output schema, the description names the returned fields ('daily click-through rate and impressions') and covers edge cases (archive fallback, empty vs zero). For a low-complexity tool with only two parameters, this is sufficiently complete, though it could explicitly state the output format (e.g., array of daily data points) to be fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both 'game' and 'range' are documented), so the baseline is 3. The description adds meaning beyond the schema by clarifying date-window behavior ('Roblox only serves the last 30 days; anything older comes from the site's own archive') and missing-data semantics ('days it has neither for come back empty rather than as a zero'), which directly helps with the 'range' parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool provides: a game's daily click-through rate and impressions over time. It differentiates from thumbnail-level analysis ('rather than how one thumbnail is doing right now'), though it lacks an explicit verb-resource structure ('Returns...') and does not name a specific sibling tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit use case: 'to answer whether it is trending up or down' and contrasts it with a different assessment ('how one thumbnail is doing right now'), implying when to prefer this tool. It does not explicitly name alternative tools or provide exclusion conditions, but the guidance is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_queueThe swap 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description hints at behavior (empty queue causing auto-swap to do nothing) but does not disclose whether the operation is read-only, if it has side effects, or what it returns. The absence of annotations increases the need for such disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is verbose and redundant, repeating the same idea in both sentences ('lined up to go live' and 'where rotation gets its replacements'). It could be condensed into one clear sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description does not explain what the tool returns (e.g., a list of thumbnails, metadata) or any error conditions. Given there is no output schema, the description should fill that gap but fails to do so.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'game' is documented in the schema with a clear description. The tool description adds no additional meaning or context about how the parameter affects the queue retrieval, so it does not enhance the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explains what a queue is but does not clearly state that the tool retrieves the queue. It says 'Thumbnails lined up to go live' rather than 'This tool gets the queue of thumbnails', so the purpose is implicit rather than explicit.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus alternatives like queue_thumbnail or get_auto_swap. The description does not mention any specific scenarios or user intentions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thumbnail_momentumWhich thumbnails are rising or fallingA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| range | No | Window to compare across. Defaults to 7d. | |
| includeInactive | No | Also cover inactive variants. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses the key behavioral trait: comparison against the item's own earlier half, and warns that missing history means nothing to compare. It does not describe the exact output structure or behavior for empty history, but it provides sufficient directional context for the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler: the first explains what the tool does, the second gives when to use it, and the third states a necessary caveat. Information is front-loaded and every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter tool with no annotations and no output schema, the description covers purpose, use case, and a critical prerequisite. It could be more complete by describing the return shape or the exact behavior for recently added games, but the provided text is sufficient for an agent to select and invoke the tool correctly in most situations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all three parameters are already fully documented in the schema. The description adds only marginal context by referencing 'window' and 'stored history' but does not elaborate on parameter semantics beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: determining per-thumbnail QPTR direction (climbing/sliding/flat) over a window, compared against each thumbnail's own earlier half. It distinguishes itself from sibling tools by emphasizing self-comparison rather than comparing against other thumbnails, which is a strong purpose differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives an explicit use case ('decide what to drop when a game's overall numbers are fine but something in the set is dragging') and a clear prerequisite/caveat ('Needs stored history'). It does not name alternative sibling tools, but the comparison methodology and use case make the intended context clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_thumbnailsGet thumbnail performanceA
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 '.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. Names are matched loosely. | |
| range | No | Reporting window. Defaults to 7d. | |
| includeInactive | No | Include inactive variants. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden here. It discloses the read-only nature ('Read'), the exact performance metrics returned, and the live/inactive dimension. It doesn't address edge cases like missing games or permission issues, but for a read tool the behavioral surface is well-conveyed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, no wasted words. The verb-resource is front-loaded, the metrics are listed compactly, and an example query anchors the purpose. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only tool with 3 well-documented params, no output schema, and no annotations, the description covers the key ground: what metrics are returned, the live/inactive split, and the intended use case. It could be more explicit about the return value structure, but since no output schema exists, the description does a solid job with the available context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description does add a small amount of color by explaining the live vs inactive split (correlating with includeInactive) and framing the performance metrics, but it doesn't contribute materially new param semantics that the schema's descriptions lack.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb-resource pair ('Read a game's thumbnails and how they are performing'), enumerates specific metrics (QPTR, impressions, qualified plays, average playtime), and the live/inactive split. It differentiates itself from analytics-focused siblings like get_qptr_trend and get_thumbnail_momentum by framing itself as the general performance checklist for a game's thumbnails.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Includes a concrete example question ('how are the thumbnails doing on <game>') that signals when to invoke this tool. It provides clear context for when it applies, but there are no explicit exclusions or named alternatives (e.g., 'for a single metric trend, use get_qptr_trend'), so it doesn't earn a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ticket_stageRead a ticket’s 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| ticket | Yes | Ticket number, e.g. 0002, or the ticket id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It mentions the output includes history with actor and timestamps, but does not disclose potential side effects (likely none), data freshness, or any access constraints. The description gives a partial picture but lacks deeper behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with a useful usage hint. The phrase 'where a ticket sits' is slightly verbose, but overall it is efficient and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only two parameters and no output schema; the description adequately explains the returned data (stage, next, estimate, history). However, without annotations, it could add more context about required permissions or typical use cases, but given the simplicity, it is mostly complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, providing clear definitions for both parameters. The description adds no additional parameter-specific context beyond what the schema states, so an adequate baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool reads a ticket's stage and provides comprehensive pipeline info. It distinguishes from siblings like set_ticket_stage and list_tickets, though the purpose could be more concise.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for checking progress without reading the channel, but does not explicitly state when not to use it or mention alternatives like get_channel_messages or list_tickets. The context is clear but not fully explicit about exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
invite_collaboratorMint an invite linkA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly: it discloses access scope (read thumbnails, act on it), security boundary (never see stored credentials), ownership requirement, and one-time redemption. This goes well beyond a generic 'create invite.'
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences front-load the core action and then pack in constraints and access details without fluff. Every sentence adds behavioral or usage information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter tool with no annotations or output schema, the description covers purpose, lifecycle, permissions, and access scope. It does not explicitly state the return value/format of the minted token or link, which is a minor gap given the title implies a link.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter 'game' is already described as 'Game name or universe id.' The description only adds the synonym 'project,' which is marginal; it does not add format or validation detail beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description opens with 'Create a single-use invite token for a project,' which is a specific verb and resource. It distinguishes itself from sibling list_collaborators by focusing on minting an invite rather than listing collaborators, and adds scope (project, seven days, single-use).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides clear usage constraints: 'Owner only,' single-use, seven-day expiry, and 'spent on first use.' It implies when to use (inviting a collaborator) but does not explicitly name alternatives or state when not to use, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
link_channelLink a game to a 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| channelId | No | Channel id from list_artist_channels. Leave out to unlink the game. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that this is a mutating operation (linking/unlinking) and explains the effect: 'where its tickets get posted, and where the View channel button on its notifications goes.' It also notes the equivalence to Discord's /ticket config, implying a known behavior. However, it doesn't mention potential side effects (e.g., overwriting existing links) or error conditions (e.g., invalid channel), which would add more transparency. Given the absence of annotations, a 4 is appropriate for the added context beyond the bare schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is highly concise: three sentences total. The first sentence states the core action and effect. The second clarifies a technical nuance (Discord equivalence and no server requirement). The third gives a direct instruction for the parameter source. Every sentence adds unique value with zero filler. It is front-loaded with the most important information: what the tool does.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only 2 parameters, both fully described in the schema, and the description adds crucial context about what linking means (ticket posting location, View channel button destination) and the unlink behavior. With no output schema, the description doesn't need to explain return values. The main gap is that it doesn't specify what the response looks like or any error conditions, but given the simplicity and the schema's completeness, the description is nearly sufficient. A 4 reflects this minor gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description adds value by explaining the role of channelId: 'Take the id from list_artist_channels. Pass no channel to unlink.' This clarifies that channelId is the identifier from a specific source and that its absence changes the operation from linking to unlinking. For the game parameter, the description reinforces the schema's 'Game name or universe id' by contextualizing it as the game being linked. This explains the relationship between parameters better than the schema alone, so a 4 is justified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the purpose: 'Point a game at a channel that already exists: where its tickets get posted, and where the View channel button on its notifications goes.' It specifies the verb (link/point), the resource (game), and the target (channel). It distinguishes from siblings like create_channel (which creates a new channel) and list_artist_channels (which lists channels). It also clarifies the unlink behavior, which is a distinct secondary purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides explicit usage context: 'where its tickets get posted, and where the View channel button on its notifications goes.' It explains the relationship to Discord's /ticket config and notes that it works 'without needing to be in the server.' It also gives a clear prerequisite: 'Take the id from list_artist_channels.' The instruction 'Pass no channel to unlink' defines when not to include the optional parameter. This covers when and how to use it, contrasting with creating channels.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_artist_channelsList studio 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The tool is clearly read-only, listing channels, and the description explicitly states that channels not listed are inaccessible to the bot, which manages expectations about the tool's scope. No side effects or permissions are mentioned, but for a simple listing tool, this is sufficient. Given no annotations, the description itself covers the key behavioral aspects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured: it states what the tool lists, the format (with ids), the mapping, and a crucial caveat about missing channels. It covers all necessary information in a single clear paragraph without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool is purely a lookup, the description provides sufficient context: what it lists, why it's useful, and its limitation regarding bot access. It does not mention potential rate limits or response size, but for a simple listing tool, the provided context is adequate. The lack of an explicit output schema is compensated by mentioning that it returns ids.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so parameter semantics are not applicable. The schema correctly reflects an empty object, and the description does not imply any hidden parameters. The output semantics (channel id per artist) are described, even though there is no output schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The title and description are perfectly aligned: 'list_artist_channels' and 'List studio channels' unambiguously describe a read-only operation that retrieves channels. The description further clarifies the content (text channels the bot can see) and the mapping to artists, leaving no doubt about the tool's purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides direct usage guidance: 'Use this to turn an artist name into a channel id.' It also explains the significance of missing channels (no bot access). However, it does not specify when in a workflow this should be called (e.g., before linking or messaging), though the sibling tools suggest a broader context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_collaboratorsWho else can reach this projectA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description explains what a collaborator can do, but it does not disclose potential errors, return format, or side effects. With no annotations, the description carries the full burden and is insufficient for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, using a few short sentences without fluff. It conveys the essential information efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description implies the output contains a list of collaborators and invite links, but it does not detail the output structure or handle edge cases. For a simple listing tool, this is adequate but not comprehensive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The parameter 'game' is already described in the schema as 'Game name or universe id.' The tool description adds no further clarification or context.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly indicates that the tool lists collaborators and open invite links, and it notes owner-only access. While the verb 'list' is not explicit, the meaning is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states 'Owner only', which provides a usage constraint, but does not compare to sibling tools like list_projects or get_notification_history, nor does it mention when to use this versus alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_discord_rolesList Discord rolesA
List the Discord roles that can be notified, so a name the user said can be matched to one.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden. It indicates a listing operation (read-only) but doesn't explicitly state that, nor does it mention any side effects or requirements. It does say 'so a name the user said can be matched to one' which implies usage context but not full behavioral transparency about errors or return.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence, concise, and front-loaded with the action. It delivers the essential purpose without fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema)Skip, the description explains what is listed and why. It provides enough context for a typical use case. It doesn't mention return format, but that is often inferred.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already describes the parameter as 'Game name or universe id.' The tool description doesn't add new semantics beyond the schema, but it does connect it to the context of listing Discord roles. With 100% coverage, baseline is 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing Discord roles that can be notified, with a specific use case of matching a user-said name to a role. This is more specific than generic 'list roles' and gives context.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it (when needing to match a user-said name to a role) but does not explicitly state prerequisites or typical invocation context. It's adequate but lacks explicit guidance like 'call this before sending a notification'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_generationsPast 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| limit | No | How many to return. Defaults to 20. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations to rely on, the description transparently discloses the tool's output structure (prompt, rewritten prompt, references, stored image URL), ordering (newest first), and overarching purpose. It implies a read-only, non-destructive operation, which is behaviorally useful. However, it doesn't mention potential side effects (likely none) or clarify that it returns an empty list when no generations exist, leaving slight room for interpretation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences deliver complete value: the first lists all returned data and ordering, the second gives two concrete use cases. No unnecessary words or repetition. The description is front-loaded with the most critical info (what is listed) and remains highly scannable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with only two parameters and no output schema, the description is sufficiently complete. It explains what is returned, the ordering, and when to use it. Minor gaps exist: it doesn't mention pagination or default behavior of the 'limit' parameter, but the schema already covers the default value, so the description doesn't need to repeat that. Overall, a well-rounded description for the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters, and the description does not add parameter-specific details beyond what's in the schema. The phrase 'reuse a prompt' hints at how 'game' and 'limit' are used, but overall the description adds no new constraints or defaults. Per the rubric, a baseline of 3 is appropriate when schema coverage is high.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as listing all thumbnail generations for a game, with explicit scope ('for a game') and ordering ('newest first'). It goes beyond a generic label by enumerating the specific data fields returned (prompt, rewritten prompt, references, URL), which precisely distinguishes it from sibling tools like get_thumbnails that likely return thumbnail metadata.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides concrete use cases: 'find something made earlier and publish it with upload_generation, or to reuse a prompt that worked.' This tells the user when to select this tool, and even names a complementary tool. It stops short of explicitly contrasting with list_artist_channels or get_thumbnails, so it gets a 4 rather than a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_projectsList 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description clearly indicates a read-only operation (list) and specifies what is listed (games) and what is returned (universe ids). It does not disclose potential failure modes or processing time, but for a simple list operation this is acceptable. There are no annotations, but the description itself is fairly transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It clearly states the action (List), the object (Roblox games), the context (on this account), the additional data (universe ids), and the intended use (to turn a game name into an id). No redundant or ambiguous language.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description provides enough context for the tool to be useful, including a specific use case. However, it does not mention error scenarios, such as when the account has no games or if linking is required, but given it is a simple list operationasi and the sibling tools suggest an ecosystem, this is acceptable.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema is empty with no parameters, so there are no semantics to explain. The description correctly and fully covers the expected inputs (none). The tool has no parameters, so this dimension is trivially satisfied.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states what the tool does: it lists Roblox games associated with the account accruals. It also explains the purpose of providing universe ids for turning game names into ids, which makes the intent unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a specific use case: 'Use this to turn a game name the user said into an id.' It gives a direct instruction, which is helpful. However, it does not elaborate on when the user might say a game name, precedent steps, or error scenarios, which could be added for more completeness, but the core guidance is present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_style_profilesList 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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations were provided, so the description carries the burden of behavioral disclosure. It explains the purpose and the relationship to generate_thumbnail, but doesn't disclose details such as rate limits, authentication requirements, or whether the list is dynamic. For a simple list operation with no annotations, this is acceptable but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the purpose and adds a practical usage note. It is concise with no wasted words and includes all relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (no parameters, no output schema), the description is fairly complete. It explains what the tool returns and how to apply it, which is sufficient for an agent to use it correctly. The only minor gap is that it doesn't mention any pagination or limits on the number of profiles, but for a list of named styles, this is not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and schema coverage is 100% as there are no properties. The description adds value by explaining what the output contains (named style guides with instructions) and how to use them, which compensates for the lack of parameters. Since there are no parameters, the baseline is 4 per the rubric.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that this tool lists the named style profiles available for the prompt enhancer, which is a specific resource. It distinguishes from siblings like list_projects or list_discord_roles by focusing on style profiles, though it doesn't explicitly mention sibling alternatives.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage by explaining how the output (profile names) can be used with generate_thumbnail, providing context on when to use this tool. However, it doesn't explicitly state when not to use it or alternatives, so it's adequate but not fully explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_ticketsOpen tickets on a gameD
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'.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| limit | No | How many to return. Defaults to 15. | |
| unansweredOnly | No | Only tickets nobody has answered yet. Defaults to false. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must fully disclose behavior. It mentions output content (what was asked, who answered, payment status) but omits side effects, permissions, or read-only status, leaving critical behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single rambling sentence with awkward phrasing like 'without the plain notes get_notification_history mixes in' and lacks a clear, structured explanation. It is not concise and would benefit from a straightforward rewrite.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description fails to provide sufficient context about the tool's role, the meaning of 'plain notes,' or the output format. It mentions a use case but leaves the reader confused about the broader context, making it incomplete for effective usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides clear descriptions for all three parameters (game, limit, unansweredOnly). The tool description adds no additional semantic value, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description attempts to state a purpose but is convoluted and unclear. It mentions 'just the tickets on a game' and references 'get_notification_history' without explaining the relationship, leaving the actual function ambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description hints at a use case ('answer what is outstanding on this game') and distinguishes from get_notification_history, but it does not provide explicit guidance on when to use this tool versus alternatives, nor clear exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
notify_teamNotify a Discord roleA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| role | Yes | Discord role name or id to notify. | |
| ticket | No | Relay a copy into this ticket, by number (0007, or just 7) or by id. The DMs still go out exactly the same; the ticket additionally gets the note and every answer to it, so it reads as the whole story. | |
| message | Yes | What to tell them. Links are fine and will unfurl. | |
| imageUrls | No | Already-public image URLs to attach. Up to 4 in total with imagePaths. | |
| imagePaths | No | Local image files to attach. Uploaded automatically. Up to 4. | |
| paypalLink | No | Where to send the money, e.g. paypal.me/name. Shown as a pay button. | |
| approveLabel | No | Label for the positive button. Defaults to "Approve". | |
| askForAnswer | No | Add two answer buttons. Defaults to false. | |
| declineLabel | No | Label for the negative button. Defaults to "No". | |
| paymentAmount | No | What this commission costs, in dollars. Makes it a payment ticket. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden. It discloses that DMs are sent to everyone in the role, that answers are broadcast to the whole role, that image uploads are automatic, and that paymentAmount converts the message into an invoice and marks tickets paid. This is substantial behavioral detail, though it does not mention rate limits, irreversibility, or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, dense paragraph that front-loads the core action before explaining options. It could be slightly better structured with bullets or separate sentences for the payment mode, but every sentence contributes useful information and no words are wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 11-parameter tool with no output schema, the description explains the key behavioral contexts: role-wide DMs, button labels, payment flow, and ticket relay behavior. It leaves a few edge cases undocumented (e.g., what happens if no images are provided, whether DMs are batched), but it covers the main decision points an agent needs.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has 100% parameter descriptions, so the baseline is 3. The description adds meaningful semantics by explaining how paymentAmount changes the buttons to Paid/Cancel and marks the ticket paid, and how ticket relays the note and answers. This goes beyond the schema's literal property descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('DM everyone holding a Discord role') and specifies the resource ('about a game'), clearly distinguishing it from sibling tools like get_notification_history or send_channel_message. It also states additional capabilities (attachments, answer buttons, payment invoices), making the tool's purpose unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives strong context on when to use the tool (notifying a role about a game) and even explains the payment-mode behavior for commissioned work. It lacks explicit exclusions or comparison to alternatives such as send_channel_message, but the context is clear enough that an agent can decide appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_ticket_panelPut up the Add ticket buttonA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| role | No | Who to ping in each new ticket channel, by name, e.g. "Thumbnail Team". Guessed from the role list the first time and remembered after that. | |
| channelId | No | Where to put it. Defaults to the channel the game is already linked to. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the key side effect ('Posting it again takes the previous one down rather than leaving two') and explains what happens when someone clicks the button. Minor gaps remain around permissions or error states, but the most important behavioral traits are covered.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, front-loaded with the purpose, then covering the click flow, alternatives, and idempotency. Every sentence earns its place; there is no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 3-parameter tool with no output schema, this description is complete: it covers behavior, side effects, alternatives, and defaults. The schema provides full parameter details, and the description adds the necessary operational context for correct use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and each parameter already has a clear description in the schema. The main description adds context about the overall workflow but does not significantly enhance parameter understanding beyond what the schema provides, so the baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Post a game's standing "Add ticket" button in its channel.' It clearly distinguishes from siblings by naming create_channel and link_channel as tools that already do this during initial setup, and positions this tool as the way to restore or relocate the button.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use the tool: 'for putting the button back after it has scrolled out of sight, or moving it somewhere else.' It also names create_channel and link_channel as alternatives that already perform this behavior, giving the agent clear guidance on when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
queue_thumbnailQueue a 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.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Asset id or thumbnail id from get_thumbnails. | |
| game | Yes | Game name or universe id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden and does well: it discloses that queuing does not change what players see, that auto-swap promotes later, and that set_active_thumbnails bypasses the queue. It could also mention queue ordering/replacement or cancellation, but the core behavior is transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the purpose, followed by a prerequisite and behavioral caveat. Every sentence earns its place with no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema, the description is complete: it explains what the tool does, what must happen first, what effect it has on players, and how to achieve immediate activation. The presence of sibling tools like unqueue_thumbnail and get_queue makes the surrounding context even richer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds extra meaning by clarifying the id parameter must reference an existing thumbnail already uploaded to the game, which supplements the schema's 'Asset id or thumbnail id from get_thumbnails'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (queue an existing thumbnail) and a clear resource scope (existing thumbnails already on the game). It distinguishes itself from siblings by explicitly contrasting queuing with set_active_thumbnails and auto-swap behavior.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the prerequisite explicitly (the thumbnail must already be on the game; upload it first if not), and provides an alternative path (set_active_thumbnails for immediate live placement). This gives the agent clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
run_auto_swapRun auto-swap nowA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden for behavioral disclosure. It does well by stating the side effect ('changes what players see'), the rule applied ('drop the worst live thumbnails by QPTR, promote from the queue'), and the no-op behavior ('reports that rather than failing'). It stops short of mentioning permissions or reversibility, but the core behavioral traits are transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The description is front-loaded with the primary action, then fills in behavioral details and edge-case behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (one required parameter, no output schema, no nested objects), the description is sufficiently complete. It covers what triggers, what rules are applied, what side effects occur, and what happens in a no-op case.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already fully documents the single parameter 'game' with 'Game name or universe id.' The description adds no further parameter-level nuance beyond referencing 'a game's rotation', 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.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Fire a game's rotation once, immediately' with a specific action and resource. It also distinguishes this from schedule-driven or configuration tools by emphasizing 'without waiting for the schedule or needing it enabled'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear usage context: use this when you want an immediate rotation, regardless of schedule or enabled state. It does not explicitly name alternative sibling tools like get_auto_swap or configure_auto_swap, but the distinction is clear enough from 'now' versus scheduling/configuration.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_roblox_gamesSearch RobloxA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | How many results to show. Defaults to 15. | |
| query | Yes | What to search for. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Since no annotations are provided, the description carries the full burden of behavioral disclosure. It openly notes that results are tailored to a signed-in account rather than absolute, which is a useful caveat. It could go further by mentioning return format or pagination, but for a search operation the core behavior is effectively disclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the primary action and resource, then adds use cases and an important caveat. Every sentence earns its place and there is no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple search tool with only two parameters and no output schema. The description explains the purpose, use cases, and the personalized-results caveat, which is sufficient for an agent to decide whether to invoke it. A description of result fields would add polish but is not essential for a search tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3. The description adds 'by name or keyword' to clarify query semantics, but the schema already documents query and limit clearly. No additional parameter detail is necessary beyond what is provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool searches Roblox for games by name or keyword, which is a specific verb + resource. It also distinguishes itself by mentioning use cases like finding a game to add or comparing thumbnails, setting it apart from sibling tools like get_game_info.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context for when to use the tool: finding a game to add or viewing comparable experiences' thumbnails. It does not explicitly mention alternatives or exclusions, but the use cases are concrete enough to guide an agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
send_channel_messagePost in a channelA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| text | No | What to post. Optional when an embed carries the message instead. | |
| embed | No | Send as an embed card rather than plain text. | |
| channelId | Yes | Channel id from list_artist_channels. | |
| imagePaths | No | Local image files to attach. Up to 4. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the transparency burden. It discloses that the message is posted as the bot, can be plain text or an embed, can include attachments/images, and is meant for pre-agreed updates. It does not mention permissions, failure behavior, or whether posted messages can be edited/removed, but it is substantially more transparent than a bare 'post a channel message'.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences cover purpose, formats, embed anatomy, image attachments, and the intended-use boundary. The description is front-loaded, every clause earns its place, and no padding or repetition is present.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with one required parameter, a complex nested embed object, and no output schema, the description plus rich schema comments are enough to understand what the tool does and how to invoke it. It could be slightly more complete with an explicit permission prerequisite or a note on return behavior, but nothing critical is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
All parameters have schema descriptions, so the schema already does the heavy lifting for channelId, text, embed, and imagePaths. The description adds useful conceptual context about the plain-text-versus-embed choice and image attachment, but it does not add parameter-level syntax or formatting details beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb and resource: 'Say something in a studio channel as the bot,' and immediately clarifies the two supported formats (plain text or embed). It also names the embed's visual anatomy, which sets it apart from passive/read tools like get_channel_messages and from notify_team-style notifications.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear when/when-not guidance: it is 'Meant for messages that were already agreed on — briefs, thank-yous, status notes — not for improvising a conversation with an artist.' It does not explicitly name a sibling tool in the description itself, though the schema's button parameter points to notify_team for question-style interactions, so it stops just short of a full 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_active_thumbnailsChoose which thumbnails are liveA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| ids | Yes | Asset ids or thumbnail ids from get_thumbnails. | |
| game | Yes | Game name or universe id. | |
| mode | No | 'replace' (default) sets the live set to exactly these. 'add' activates them alongside what is live. 'remove' deactivates them. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It comprehensively discloses: the change is immediate, affects what Roblox serves to players, nothing is deleted, and inactive variants can be brought back. This covers destruction (none), side effects (immediate applicability), and reversibility, which is excellent given the absence of annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact paragraph that is front-loaded with the core purpose, then logically moves to input formats, modes, and consequences. Every sentence adds meaningful information, with zero filler. It is appropriately sized for the tool's complexity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the moderate complexity of three parameters and no output schema, the description is complete. It covers all essential aspects: behavior, modes, id handling, and side effects. No important information is missing, and the integration with get_thumbnails is mentioned.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3, but the description adds significant semantic value: it explains that ids accept two types (asset ids from get_thumbnails or internal thumbnail ids) and gives precise meaning to each mode. It goes beyond the schema's enum descriptions by advising on typical usage ('which is what you usually want'). This is clear added value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states that the tool changes which thumbnails are live on the homepage, with a specific verb ('change') and resource ('game's thumbnails'). It distinguishes itself from siblings like get_thumbnails (which retrieves) and upload_thumbnail (which creates) by focusing on setting the live set.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly explains when to use each mode ('replace' vs 'add'/'remove'), and tells the agent that 'add' or 'remove' is 'what you usually want when acting on one thumbnail.' It does not explicitly mention alternative tools, but the clear mode guidance serves the purpose of guiding usage. The description also specifies that ids can come from get_thumbnails, linking to the workflow.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_project_credentialsStore Roblox credentials for a gameA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| openCloudKey | No | Roblox Open Cloud API key, minted by whoever owns the experience. Empty string removes it. | |
| robloSecurity | No | .ROBLOSECURITY cookie for an account that can edit this game. Empty string reverts to the default account. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Only annotation provided is 'None provided', so the description bears full responsibility. It discloses that credentials are stored encrypted and never read back, that clearing the cookie reverts to a shared default account, and that the tool is owner-only. This is thorough for a mutation tool with no annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Description is a single paragraph but packed with useful information, each sentence earning its place. It front-loads the core purpose, then details usage, security, and exclusions efficiently. No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations and no output schema, the description covers purpose, behavioral traits (encryption, not read back), usage instructions (clearing, default account), and access control (owner only). The only minor gap is not specifying what happens after success or if input is invalid, but that's not crucial for a setter with clear params.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and each parameter already has a description. The description adds context about what the values unlock and how clearing works, but it doesn't add syntax or format details beyond the schema. Thus it meets the baseline but doesn't exceed it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states the tool's purpose: attach an API key and/or cookie to a game. It names the specific resources (Open Cloud API key, .ROBLOSECURITY cookie) and the target (a game), distinguishing it from sibling tools like get_game_info or check_permissions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Provides explicit usage guidance: when to use (the two things check_permissions reports missing), what each credential unlocks, how to clear them (empty string), and a critical exclusion: 'Owner only.' It also warns not to invent values, which guides the agent's invocation behavior.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_ticket_stageMove a ticket along the pipelineA
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.
| Name | Required | Description | Default |
|---|---|---|---|
| eta | No | When it should be done: 24h, 3d, or a date. Renders as a live countdown in each viewer’s own timezone. | |
| game | Yes | Game name or universe id. | |
| note | No | One line shown under the stage, e.g. "Second pass, wider crop". | |
| stage | Yes | Where it is now. In order: ordered, confirmed, ideating, conceptualizing, concept_review, finding_artist, cooking_art, art_review, revising, delivered, data_reviewed, notes_taken. Note revising goes back to the artist rather than forward. | |
| ticket | Yes | Ticket number, e.g. 0002, or the ticket id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description fully carries behavioral disclosure. It states each move posts a new card rather than editing, only the newest stays pinned, jumping stages is allowed and names skipped ones, automatic transitions on open/approve, and the separate storage of review gates. This is rich, actionable behavior that an agent would need.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is somewhat long but every sentence adds crucial detail for a complex tool with 12 stages. It is structured logically: what it does, how it behaves, special cases. No wasted words, but it could be tighter if it separated the automatic transitions from the main behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 stages, multiple side effects), the description covers all necessary contextual information: side effects, pinning, skipping, automatic transitions, review gate specifics, and alternatives. It is complete for an agent to select and invoke correctly, even without an output schema (which is likely fine for a setter).
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds value beyond the schema by explaining the stage enum semantics in context (e.g., 'revising goes back to the artist rather than forward,' and the distinction between review gates). It also provides examples for the note parameter ('Second pass, wider crop') which aids understanding.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource: 'Set which of the twelve production stages a ticket is on' and clarifies the side effect of redrawing the pinned card. It clearly distinguishes from siblings like get_ticket_stage (reading stage) and post_ticket_panel (posting a panel) by focusing on the stage-setting action.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explains when this tool is used (for manual stage transitions after automatic 'ordered' and 'confirmed' states) and mentions an alternative: 'every stage after that is set here or with /ticket status.' While it doesn't explicitly say when NOT to use it, the context of pipeline progression is clear. It implies that this is the primary tool for advancing stages manually.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
unqueue_thumbnailTake a thumbnail out of the queueA
Remove an entry from the swap queue so auto-swap will not promote it. The thumbnail itself is untouched and stays on the game.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Queue entry id or asset id, both from get_queue. | |
| game | Yes | Game name or universe id. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the transparency burden. It explicitly discloses a key non-destructive trait: the thumbnail itself is untouched and stays on the game. It does not mention reversibility, idempotency, or error behavior, but the core side effects are clearly stated.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short sentences with no filler. It front-loads the primary action and then adds the important non-destructive clarification. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with no output schema and no nested objects, the description plus schema is largely complete. It explains what the tool does, what it affects, and what it does not affect. It could mention what happens to the removed entry or whether the action is reversible, but these are minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description itself adds no parameter-level meaning beyond the schema, which already explains that id can be a queue entry id or asset id and game is a game name or universe id.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Remove an entry') and resource ('swap queue'), clearly distinguishing this from sibling tools like queue_thumbnail (add) and get_queue (list). It also explains the intended effect on auto-swap behavior, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use the tool: when you want to prevent auto-swap from promoting a specific queue entry. It does not explicitly name alternatives or state when not to use it, but the context is clear enough given the sibling tool set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_generationPublish a stored 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.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| generationId | Yes | Generation id from list_generations. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the side effect: the resulting Roblox asset id is recorded against the generation, enabling analytics tracing. It also clarifies the network behavior (site sends its own stored copy) and what is not done (no download/re-upload). This is strong transparency for a publish action, though it could mention potential failure modes or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that front-loads the core action and then adds necessary context. Every clause adds value: the source of the generation id, the mechanism (no download/re-upload), and the side effect (asset id recorded for analytics). No wasted words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 params, no output schema, no annotations), the description is quite complete. It explains the workflow (publish from history), the mechanism, and the downstream benefit (analytics tracing). It could be slightly more complete by mentioning what the response contains (e.g., the asset id) or any prerequisites like permissions, but it covers the essential context well.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage with descriptions for both parameters ('Game name or universe id' and 'Generation id from list_generations'). The description adds context by explaining the generation id's origin and the purpose of the asset id recording, but it does not add new syntax or format details beyond the schema. Baseline 3 is appropriate given the high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Publish an image already in a project's history to Roblox'), the specific resource (a generation identified by its id from list_generations), and the mechanism (the site sends its own stored copy, no download/re-upload). It distinguishes itself from sibling tools like upload_thumbnail and generate_thumbnail by focusing on publishing an existing generation to Roblox.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains the context of use: it operates on a generation id from list_generations, implying a prerequisite step. It also clarifies what the tool does not do (nothing is downloaded or re-uploaded), which helps set expectations. However, it does not explicitly state when to use this tool versus alternatives like upload_thumbnail, though the distinction is implied by the generation id reference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
upload_thumbnailUpload a thumbnail to RobloxA
Publish a local image as a thumbnail on a Roblox game. Roblox moderates asynchronously, so a Pending result is normal rather than a failure.
| Name | Required | Description | Default |
|---|---|---|---|
| game | Yes | Game name or universe id. | |
| imagePath | Yes | Path to the image file on this machine. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description takes on full responsibility for behavioral disclosure. It proactively explains the asynchronous moderation behavior, which is non-obvious and essential for the agent to correctly interpret results. This goes beyond a simple action statement and sets a high bar for transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that front-loads the purpose and immediately addresses the most important behavioral nuance. Every word earns its place; there is no wasted verbiage or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity (2 params, no output schema), the description covers the essential elements: action, resource, and critical asynchronous behavior. It doesn't mention potential errors (e.g., invalid image path, size limits) but with no output schema, it could have added a note on response handling. Still, it's reasonably complete for its purpose.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of parameters with descriptions for both 'game' and 'imagePath'. The description does not add extra semantic meaning beyond the schema, but the baseline of 3 applies because the schema is self-sufficient. No additional details about format, validation, or constraints are needed.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Publish a local image as a thumbnail on a Roblox game') with a specific verb and resource. It distinguishes from siblings like 'generate_thumbnail' (which generates rather than uploads) and 'delete_thumbnail' (which deletes), though it doesn't explicitly contrast with them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use the tool (publishing a local image) and adds critical information about asynchronous moderation, implying that a Pending result is expected. However, it doesn't explicitly state when not to use it or mention alternatives like 'upload_generation' (which might be for uploading generated images).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
39 tool updates
v1.3.0- First observed
add_project - First observed
check_permissions - First observed
close_ticket - First observed
configure_auto_swap - First observed
create_channel - First observed
create_ticket - First observed
delete_thumbnail - First observed
export_thumbnail_report - First observed
generate_thumbnail - First observed
get_auto_swap - First observed
get_channel_messages - First observed
get_game_info - First observed
get_notification_history - First observed
get_qptr_trend - First observed
get_queue - First observed
get_thumbnail_momentum - First observed
get_thumbnails - First observed
get_ticket_stage - First observed
invite_collaborator - First observed
link_channel - First observed
list_artist_channels - First observed
list_collaborators - First observed
list_discord_roles - First observed
list_generations - First observed
list_projects - First observed
list_style_profiles - First observed
list_tickets - First observed
notify_team - First observed
post_ticket_panel - First observed
queue_thumbnail - First observed
run_auto_swap - First observed
search_roblox_games - First observed
send_channel_message - First observed
set_active_thumbnails - First observed
set_project_credentials - First observed
set_ticket_stage - First observed
unqueue_thumbnail - First observed
upload_generation - First observed
upload_thumbnail
TDQS
Each tool targets a distinct resource or action: notifications, projects, channels, thumbnails, generations, auto-swap, queue, analytics, reports, permissions, credentials, tickets, and collaborators. Even seemingly similar tools like get_thumbnails, get_qptr_trend, and get_thumbnail_momentum measure different metrics (current performance, overall trend, per-thumbnail direction). Descriptions clearly delineate boundaries, minimizing agent misselection.
All 39 tools follow a consistent snake_case verb_noun pattern (e.g., list_projects, set_active_thumbnails, get_auto_swap, queue_thumbnail). There are no mixed conventions or vague verbs like 'process' or 'run'. The naming is predictable and aligns with the action each tool performs.
At 39 tools, the surface is heavy and exceeds the typical 15-tool sweet spot. However, the server covers a broad domain—Roblox thumbnail management, Discord integration, ticket workflows, analytics, and collaboration—so each tool earns its place. Still, the sheer number may overwhelm agents, making this borderline between 'heavy but justified' and 'too many'.
The toolset covers the full lifecycle: project onboarding, credential setup, thumbnail generation/upload/deletion, active set management, auto-swap configuration, queue management, analytics tracking, reporting, notifications, ticketing, and collaboration. Minor gaps exist (e.g., no remove_project or revoke_collaborator), but agents can work around these with existing tools. Overall, the surface is nearly complete for the stated purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
MCP server for NanoBanana AI image generation and editing
MCP server for Flux AI image generation
Official MCP server for Agentwork — delegate tasks to AI agents with human-in-the-loop
An MCP server that integrates with Discord to provide AI-powered features.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for YouTube creator-ops — video metadata, comments, playlists, channel analytics, plus a ComfyUI bridge for AI thumbnail generation.15641MIT
- AlicenseAqualityDmaintenanceAn MCP server for image generation, editing, and analysis using OpenAI's gpt-image-1 model, with specialized templates for YouTube thumbnails, blog headers, social media, and more.7MIT
- FlicenseNot gradedqualityDmaintenanceMCP server that lets AI assistants manage an art catalogue — find paintings, post to social media, upload to galleries, schedule posts, and update metadata.-
- AlicenseNot gradedqualityAmaintenanceAn MCP server that gives an AI coding agent real control of Roblox Studio and Roblox Open Cloud, with a test-and-security layer no other Studio MCP has.63MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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