ReelGrove
Open studio

Your workspace, connected

Work with your game
through MCP.

Give your assistant access to one private project. Inspect its assets and published math, replace artwork and sound, or adjust declared Motion settings.

19 project toolsStreamable HTTPProject-key authentication

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.

Start with read access.

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

Three steps to your first call.

  1. Open Developer access

    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.

  2. Create a project key

    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.

  3. Add a manual HTTP connection

    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.

Server URL
Your account’s origin followed by /mcp
Transport
Streamable HTTP
Header name
Authorization
Header value
Bearer YOUR_PROJECT_KEY

For 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

Give the client a specific job.

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.

Review artwork

projects:read
art:read

Inspect slots and existing image assets without changing bindings.

Work on sound

projects:read
sound:read + sound:write

Upload audio, bind cues and set their volume.

Review math

projects:read
math: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.

Keys do not use extra seats.

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

The 19 customer tools.

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.

All calls require projects:read. Developer access includes matching reads when you select write scopes.
ToolWhat it doesAdditional scope
project_contextCurrent project, active revision and effective capabilities.None
list_assetsList image or audio asset metadata; choose assetClass.art:read for image;
sound:read for audio
read_assetRead one listed asset as base64, up to 4 MiB.art:read for image;
sound:read for audio
upload_assetUpload verified image or audio bytes, up to 4 MiB.art:write for image;
sound:write for audio
art_slotsDeclared artwork slots, bindings and their revisions.art:read
sound_cuesDeclared cues, mixes and binding revisions.sound:read
bind_imageAssign an uploaded image or restore a slot’s build default.art:write
bind_soundAssign audio, set its volume, or restore a cue’s build default.sound:write
list_motionsDeclared states, supported settings and saved Motion revisions.motion:read
set_motionSave supported Motion settings or restore the build default.motion:write
list_math_librariesPublished math available in this project revision.math:read
math_reportOutcome weights and report evidence for a published variant.math:read
calculate_mathReturn, variance, sample size, hits, streaks, exposure, wagering and cash-flow calculators.math:read
compare_math_modesCompare published variants and modes within this project revision.math:read
simulate_math_sessionsReproducible session simulation from exact project weights or an uploaded CSV.math:read
analyze_bet_archiveAnalyze a submitted CSV or JSON bet archive in one currency.math:read
verify_math_seedCheck a revealed MGRGS seed commitment and draw; this is not a generic slot verifier.math:read
get_engine_trackerSearch all tracked games and providers, including artwork URLs and activity statistics.math:read
search_engine_gamesSearch 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

Ask clearly. Check the result.

These are prompts you can give your connected assistant, followed by example MCP tools/call parameters. They are tool calls, not client configuration files.

Inspect the project before making changes

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.
First call
{
  "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.

Read declared artwork slots
{
  "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.

Replace artwork, or restore it deliberately

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

Restore one artwork slot
{
  "name": "bind_image",
  "arguments": {
    "expectedActiveRevision": "11111111-1111-4111-8111-111111111111",
    "slot": "circle",
    "expectedRevision": "3",
    "restoreDefault": true
  }
}

Set a sound cue’s level

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.

Adjust a declared Motion state

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:

Save Motion with all settings explicit
{
  "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.

Understand the published math

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.
Read the default report
{
  "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

Math tools and market activity.

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

Two revisions keep changes deliberate.

expectedActiveRevision
The project revision UUID from project_context. A project reset changes it. Refresh the context and inspect the new state before continuing.
expectedRevision
The current binding revision from art_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.

Restore is a new change.

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

A small key with a clear lifetime.

  • The secret is shown once. Closing its dialog, changing pages or studios, or signing out clears the displayed secret. It cannot be retrieved from the key list.
  • If key creation times out, refresh the list and revoke any key from that attempt before creating another. An uncertain response is not a reason to create several keys.
  • Use Developer access to revoke your own keys, including keys for studios you have left. A revoked or expired key cannot authenticate.
  • Signing out of the browser does not revoke machine keys. Revoke a key explicitly when you no longer need it. Password recovery revokes your existing keys; removing your membership revokes that studio’s keys.
  • Resetting a project does not move the key to another project. Fetch the new active revision. Rejoining a studio does not revive a revoked key.

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

Find the next useful check.

Cannot connect / unauthenticated

Check 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_denied

Check 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_precondition

For 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.

aborted

Reread 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_found

Use 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_exhausted

A 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 canceled

Treat a mutation as unconfirmed. Inspect the current binding before another deliberate action. For reads, retry when the service is available.

Product scope

What this connection supports today.

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.

Connect to your project.

Choose a ready game and the smallest useful set of scopes.

Open Developer access