Review artwork
projects:readart:read
Inspect slots and existing image assets without changing bindings.
Your workspace, connected
Give your assistant access to one private project. Inspect its assets and published math, replace artwork and sound, or adjust declared Motion settings.
Model Context Protocol (MCP) lets a compatible client discover and call ReelGrove’s tools. You choose which project it can reach and what it can change. ReelGrove checks that access on every call.
Connect, ask the client to identify the project, and inspect its current state. Add write scopes only for the work you want it to perform.
Setup
Sign in to ReelGrove and open Developer access. Select the studio that contains your game. You need a ready project and current project-read permission.
Choose the project, give the key a recognizable name, and select its scopes. Expiry defaults to 7 days; you can choose 1–30 days. Save the secret from the one-time dialog.
In your MCP client, choose a remote Streamable HTTP server. Copy the endpoint from Developer access and add the authorization header below. Then connect and ask for project_context.
/mcpAuthorizationBearer YOUR_PROJECT_KEYFor example, an account at https://studio.example uses https://studio.example/mcp. Use the actual endpoint shown in your account; this example host is a placeholder.
Client configuration formats differ. Enter the URL and header in your client’s manual settings; there is no universal configuration JSON or OAuth sign-in flow for this endpoint. A client that only supports OAuth cannot use a project key through that flow.
Keep the secret in your client’s credential settings. Do not put it in a URL, a prompt, source control, or a shared screenshot. Signing into ReelGrove in a browser does not authenticate an MCP client.
Access
Every key includes projects:read. Choose the additional scopes its task needs. Developer access includes the matching read scopes when you select Art, Sound or Motion writes, so the client can inspect slots and revisions before editing.
projects:readart:read
Inspect slots and existing image assets without changing bindings.
projects:readsound:read + sound:write
Upload audio, bind cues and set their volume.
projects:readmath:read
Read the available published libraries and their reports.
A key can never grant more access than its creator currently has. Its saved scopes are an upper limit, including for a studio owner. Membership changes and permission reductions take effect on later calls. The capabilities returned by project_context describe this intersection; they do not confirm current trial or paid editing capacity.
Write calls use the creator’s current editing access and require an active trial or subscription with enough editor capacity. Owners are checked too. Permitted read calls can continue after editing access ends.
Reference
Run project_context first. Use its project.activeRevision as expectedActiveRevision in every other call. The key selects the project; do not send a game, studio, project, actor, or filesystem path.
| Tool | What it does | Additional scope |
|---|---|---|
project_context | Current project, active revision and effective capabilities. | None |
list_assets | List image or audio asset metadata; choose assetClass. | art:read for image;sound:read for audio |
read_asset | Read one listed asset as base64, up to 4 MiB. | art:read for image;sound:read for audio |
upload_asset | Upload verified image or audio bytes, up to 4 MiB. | art:write for image;sound:write for audio |
art_slots | Declared artwork slots, bindings and their revisions. | art:read |
sound_cues | Declared cues, mixes and binding revisions. | sound:read |
bind_image | Assign an uploaded image or restore a slot’s build default. | art:write |
bind_sound | Assign audio, set its volume, or restore a cue’s build default. | sound:write |
list_motions | Declared states, supported settings and saved Motion revisions. | motion:read |
set_motion | Save supported Motion settings or restore the build default. | motion:write |
list_math_libraries | Published math available in this project revision. | math:read |
math_report | Outcome weights and report evidence for a published variant. | math:read |
calculate_math | Return, variance, sample size, hits, streaks, exposure, wagering and cash-flow calculators. | math:read |
compare_math_modes | Compare published variants and modes within this project revision. | math:read |
simulate_math_sessions | Reproducible session simulation from exact project weights or an uploaded CSV. | math:read |
analyze_bet_archive | Analyze a submitted CSV or JSON bet archive in one currency. | math:read |
verify_math_seed | Check a revealed MGRGS seed commitment and draw; this is not a generic slot verifier. | math:read |
get_engine_tracker | Search all tracked games and providers, including artwork URLs and activity statistics. | math:read |
search_engine_games | Search public live-game catalog and version metadata. | math:read |
Discovery describes the available tool contract. Seeing a tool in your client does not grant permission to call it.
Workflows
These are prompts you can give your connected assistant, followed by example MCP tools/call parameters. They are tool calls, not client configuration files.
Identify the project this key belongs to. List its artwork slots and current image assets. Tell me which images are replaced. Don’t change anything.
{
"name": "project_context",
"arguments": {}
}Read project.activeRevision from the result. The UUID below is illustrative: replace it with that exact value. Slot and cue names must come from the current registry.
{
"name": "art_slots",
"arguments": {
"expectedActiveRevision": "11111111-1111-4111-8111-111111111111"
}
}Then call list_assets with the same revision and assetClass: "image". Use a returned assetId to read or bind an asset.
Read the current circle binding, upload the supplied PNG, replace that slot using the latest observed revision, then reread to confirm. Stop on a conflict.
upload_asset takes assetClass, filename, base64 data, and its matching lowercase SHA-256 in sha256, plus the active revision. Uploading makes an asset available; bind_image assigns it to a declared slot.
For a replacement, send the returned assetId. For a restore, use restoreDefault: true instead. The example assumes the current registry declares circle at binding revision "3":
{
"name": "bind_image",
"arguments": {
"expectedActiveRevision": "11111111-1111-4111-8111-111111111111",
"slot": "circle",
"expectedRevision": "3",
"restoreDefault": true
}
}Inspect the spin cue and its current audio. Keep the same take, set its gain to 45%, and confirm the saved binding. Stop if another person changes the cue first.
Call sound_cues, then bind_sound with cue, the existing assetId, the observed expectedRevision and integer volumePpm: 450000. The range is 0–1,000,000; one million means full volume. Omitting volumePpm uses the cue’s declared default gain, so send it explicitly when preserving a mix. It cannot accompany restoreDefault.
Read the circle slot’s supported Motion settings. If its idle state allows this, save a gentle 1-second bob at intensity 550, with sineInOut easing and looping. Use the current saved revision. Tell me what changed and how to sample it in Art Lab.
Start with list_motions. Each build declares its own supported presets, timing and intensity limits. This example only applies when the returned idle capabilities permit these settings:
{
"name": "set_motion",
"arguments": {
"expectedActiveRevision": "11111111-1111-4111-8111-111111111111",
"slot": "circle",
"state": "idle",
"expectedRevision": "0",
"settings": {
"preset": "bob",
"durationMs": 1000,
"intensity": 550,
"easing": "sineInOut",
"loop": true
}
}
}A successful save confirms persisted settings. To check rendering, open the project’s Art Lab and sample the saved Motion state. The MCP save itself does not prove that an animation rendered.
List the published math libraries and summarize the default variant’s theoretical return, outcome weights and evidence gaps. Separate what the report measures from anything it does not prove.
{
"name": "math_report",
"arguments": {
"expectedActiveRevision": "11111111-1111-4111-8111-111111111111"
}
}Call list_math_libraries first. For another published variant, add its exact name as variant. Omitting it, or sending an empty string, selects the default. A report does not certify game-event correctness or external platform approval.
Research
The seven research tools accept expectedActiveRevision and an input object. The discovered schema describes each input and its decimal-string units. Published comparisons and simulations can only read the project selected by your key.
{
"name": "get_engine_tracker",
"arguments": {
"expectedActiveRevision": "11111111-1111-4111-8111-111111111111",
"input": {"ranking": "games", "period": "past30Days", "sort": "turnover", "query": "Waylanders", "limit": 20}
}
}The tracker includes every source-tracked game, with search, provider filtering and optional pagination. Missing statistics and artwork remain null. Turnover uses USD micro-unit strings; RTP is source-declared. imageUrl and thumbnailUrl reference public artwork. Cached snapshots include source and freshness information; updates are normally checked every 15 minutes.
Submitted archives and lookup CSVs are limited to 4 MiB through the customer API, within an 8 MiB total request. Browser imports run locally and support up to 32 MiB. Simulations run at most 2 million rounds. Private inputs are not logged or saved. These tools model test outcomes and never place bets or modify project files.
Working together
expectedActiveRevisionproject_context. A project reset changes it. Refresh the context and inspect the new state before continuing.expectedRevisionart_slots, sound_cues or list_motions. Send it as a decimal string, including "0" when that is the observed value.If a teammate edits the same binding, the older write is rejected with aborted. Reread the current value, compare the changes and decide what to save. Do not automatically resend with an incremented revision.
After a timeout, cancellation or an unconfirmed response, a change may already have been saved. Read the current state before trying again. The client should inspect MCP isError and the structured code and message; an error is not a successful tool result.
Use restoreDefault: true with the observed binding revision. Do not send null, an empty asset ID, or both an asset and a restore operation. Motion likewise accepts either settings or restoreDefault: true.
Credentials
You can have up to 5 active keys per user and project. Keys do not add paid seats; creating more keys cannot increase your permissions or editing capacity.
When something needs attention
unauthenticatedCheck the exact endpoint from Developer access and the Authorization: Bearer … header. Check expiry and revocation. Browser cookies, query tokens and X-API-Key do not authenticate this endpoint.
permission_deniedCheck both the key’s scopes and the creator’s current studio membership and permissions. The server also checks any supplied Origin. Reconnecting cannot expand a key’s saved scopes.
failed_preconditionFor writes, check the studio subscription and confirmed editor capacity. Read the message: a required Lab or math-report service may also be unavailable in this deployment.
abortedReread project context and the affected binding. A project reset or another edit can make the supplied revision stale. Review the new state before saving again.
invalid_argument / not_foundUse the discovered camelCase schema, exact registry slot or cue, and an asset ID from this project revision. Check data hashes, image formats and the build’s Motion bounds. Unknown, duplicate, null and missing required fields are rejected.
resource_exhaustedA request, upload, key or storage limit was reached. Read the message, wait if the service is busy, or use the Lab for a file above the MCP size limit. Retrying cannot bypass a storage limit.
unavailable, deadline_exceeded or canceledTreat a mutation as unconfirmed. Inspect the current binding before another deliberate action. For reads, retry when the service is available.
Product scope
Asset reads and uploads through MCP are limited to 4 MiB per file. Images support PNG, JPEG and WebP; SVG uploads are not supported. Audio supports WAV, MP3, OGG, FLAC, M4A and AIFF. Files still undergo the Lab’s format and storage checks. Use the Lab UI for supported larger files.
Motion tools edit the build’s declared idle and win presentation states. Supported presets are pulse, bob and tilt, with linear, sineInOut or quadOut easing; individual states may allow only a subset and impose tighter bounds. This is not a timeline or skeletal-animation editor.
The customer MCP endpoint does not generate images, audio or game math. It does not edit frontend or math source, execute games or builds, spin or force outcomes, replay rounds, import or export projects, publish games, or manage keys, teams and billing. Use the product screens for the actions they support.