MCP.so
Sign In
S

Specter

@dirtcubeinteractive

About Specter

Configure a Specter game backend from chat — players, economy, progression, leaderboards, tournaments, battle passes, and real-time multiplayer — via your AI assistant. Browser sign-in; create/mutate tools opt-in.

Config

Add this server to your MCP-compatible client using the configuration below.

{
  "mcpServers": {
    "specter": {
      "command": "npx",
      "args": [
        "-y",
        "-p",
        "specter-skills",
        "specter-mcp"
      ],
      "env": {
        "SPECTER_ENV": "production",
        "SPECTER_ALLOW_MUTATIONS": "true"
      }
    }
  }
}

Tools

46

Smoke-test the configured Specter project: api-key validity, project info, currencies, test-player login, wallet provisioning, and tasks. Use this first to answer "is my Specter backend set up correctly?".

List the currencies configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the items configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the bundles / loot boxes configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the stores configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the tasks / achievements configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the custom events configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the leaderboards configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the tournaments / competitions configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the battle passes configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the level / progression systems configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

List the progression markers configured in this Specter project. Returns ids/slugs you can reference when creating other entities. Requires a one-time browser sign-in (specter_login).

Sign in the sandbox test player and read their task/achievement status, wallet balances, and inventory. Use to inspect what a player currently sees, or to check an achievement's progress.

Send a custom event (by its slug) as the sandbox test player — the same event your game would fire. Use to trigger tasks/achievements and verify they respond. `params` are the event parameters (statistics/states) your rule references.

Prove a configured task/achievement works: reads the test player's task status, fires the trigger event (with optional params), polls again, and reports whether the task progressed/completed. Use right after creating a task to verify it actually fires.

Read the test player's reward history — including PENDING rewards waiting to be claimed (on-claim tasks). Filter by status ('pending' shows claimable). Each entry has sourceType + sourceId (e.g. the task), amount, and status (pending → completed).

Claim the test player's pending reward(s) from a source — this is how a game claims an ON-CLAIM task/mission reward after it completes (grant-reward-by-source). It grants the reward to the wallet/inventory and flips its status pending → completed. Identify the source by its slug/id and type.

Generate ready-to-paste game integration code (v2 client REST) wired with this project's real client api-key + a real event slug. Covers login, firing events, reading tasks, and wallet. JS works anywhere; C# is dependency-free Unity (the official Specter Unity SDK is recommended for production).

Escape hatch for the game-facing API: POST to any /v2/client/* endpoint as the sandbox test player. Use for client calls that lack a dedicated tool (e.g. player/me/get-inventory, friends/send-request, stores/default-purchase, leaderboards/get-rankings, competitions/enter). Find the exact path + body in the client-api-index / curated-client-api references. asPlayer=true (default) sends the test-player token; false = api-key-only catalog reads.

Opens the Specter dashboard in the browser so the member can sign in (email/password, Google, or Apple) and authorize this tool. Required once before creating currencies/tasks. No password is ever shared with the tool.

Create an inventory item. Properties (consumable/equippable/...), prices, unlock conditions go in `fields`. MUTATES live game config — confirm with the user and prefer staging.

Create a bundle. For a gacha/loot box set isGacha + pity fields in `fields`; contents/prices go in `fields` too. MUTATES live game config — confirm with the user and prefer staging.

Create a store. Categories/contents/platforms go in `fields` (storeCategories[]). MUTATES live game config — confirm with the user and prefer staging.

Create a battle pass. tiers (free/premium rewards per tier) go in `fields`. MUTATES live game config — confirm with the user and prefer staging.

Create a level system. levelSystemTypeId: 1=XP-based, 2=event-based. levelDetails is the per-level config. MUTATES live game config — confirm with the user and prefer staging.

Create a progression marker (a named counter like XP or trophies). MUTATES live game config — confirm with the user and prefer staging.

Create a leaderboard. prizeDistributionRule/prize config goes in `fields`. outcomeType: 1=high_score, 2=time_trial, 4=position_weighting, 5=cumulative_score. sourceType: 1=match, 2=statistics, 3=custom. MUTATES live game config — confirm with the user and prefer staging.

Create a competition. competitionFormatTypeMasterId: 2=tournament, 3=instant battle, 4=paid challenge, 5=bracket. For match-based (sourceTypeId 1) pass matchId+gameId in `fields`; entry prices/prizes/schedule also go in `fields`. MUTATES live game config — confirm with the user and prefer staging.

Schedule a leaderboard or competition live. Provide exactly one of competitionId / leaderboardId. Recurrence config goes in `fields`. MUTATES live game config — confirm with the user and prefer staging.

Grant items/bundles/currencies/markers to a player. rewardDetails is an array; each entry has rewards: {items[],bundles[],currencies[],progressionMarkers[]}. MUTATES live game config — confirm with the user and prefer staging.

Create a virtual or real-money currency. `type` is "virtual" (in-game, e.g. coins/gems) or "real" (real-money). currencyId (slug) is auto-derived from the name if omitted. MUTATES live game config — confirm with the user and prefer staging.

Define an exchange rate from one currency to another (e.g. 100 gems → 1 gold). Pass currencies by slug/name; the tool resolves them to the integer ids the API needs. MUTATES live game config — confirm and prefer staging.

Attach a policy to a currency: "balance_limits" (min/max a player can hold), "currency_decay" (lose a % over time), or "earning_caps" (max earnable per period). Pass the currency by slug/name. MUTATES live game config — confirm and prefer staging.

Create a multiplayer match template (the config a real-time session is based on). `format` is single/multi/team; `outcome` is how a winner is decided (highest score, fastest time, finish position). The game is resolved by name/slug. Matchmaking rules (team size, MMR) go in `fields`. MUTATES live game config — confirm and prefer staging.

Create a custom event that tasks/achievements can be triggered by (e.g. "boss_defeated"). Create the event BEFORE the task that references it. eventId (slug) is auto-derived from the name. MUTATES live game config — confirm with the user and prefer staging.

Create a SINGLE-objective achievement (a "task"/"quest"/"objective" — one trigger, one reward). For multi-objective achievements use specter_create_mission (a pool), specter_create_step_series (sequential), or specter_create_time_series (streaks). `event` is the trigger event (slug/name, resolved automatically). `rewards` grants currencies/items/markers (by slug/name). `recurring` captures cadence intent (actual go-live is via scheduling). MUTATES live game config — confirm with the user and prefer staging.

Create a MISSION: a pool of tasks where players see/complete a subset per cycle (typeId 1). Use for "daily missions", "rotating challenges", "pick N of these". For sequential use specter_create_step_series; for streaks use specter_create_time_series. Each task in `tasks` is created inline. MUTATES live game config — confirm and prefer staging.

Create a STEP SERIES: ordered tasks where each unlocks the next (typeId 2). Use for "quest lines", "tutorial chains", "finish step 1 before step 2". The order of `tasks` (or each task's sortingOrder) defines the sequence. MUTATES live game config — confirm and prefer staging.

Create a TIME SERIES: per-window recurring tasks, e.g. a daily login streak (typeId 3). Use for "streaks", "login N days in a row", "weekly recurring that resets on miss". `stageLength` is the window count (e.g. 7) and `interval` its unit (e.g. "day"). MUTATES live game config — confirm and prefer staging.

Activate a created task or task-group (mission/step-series/time-series) by setting its dates/recurrence. Pass exactly one of taskRef (single task) or groupRef (a group), by slug/name/id. Omitting startDate makes it go live immediately. MUTATES live game config — confirm and prefer staging.

Halt a live task or task-group (keeps the record; reversible by scheduling again). Pass exactly one of taskRef / groupRef. MUTATES live game config — confirm and prefer staging.

Soft-delete a single task (kind="task") or a group (kind="mission"|"step_series"|"time_series"). Provide refs (slugs/names/ids). DESTRUCTIVE — confirm with the user first, and prefer staging.

Update an existing currency (name, description, code, type, …). Identify it by slug/name. MUTATES live game config — confirm and prefer staging.

Update an existing single task's name, description, rewardClaim, recurrence, or businessLogic (identify it by slug/name). To CHANGE REWARDS, delete and recreate the task — task/edit uses diff-semantics on rewards that aren't reliably expressible here. MUTATES live game config — confirm and prefer staging.

Generic editor for the long tail: update an item/bundle/store/leaderboard/competition/battlepass/level_system/marker/mission/step_series/time_series/event. Pass the entity's `id` (from the matching list_* tool) and the `fields` to change. MUTATES live game config — confirm and prefer staging.

Escape hatch for the dashboard/admin API: POST to any /v1 admin endpoint that lacks a dedicated tool (e.g. match/add, member/invite/send, reward-set/create, games/add, tag/create, ugc-leaderboard/create, app-event/custom/subscribe-all, bulk-upload/*). Find the exact path + request body in the specter-admin references (references/endpoints-index.md and admin-endpoints.md). projectId is auto-injected when omitted. MUTATES live config — ALWAYS confirm with the user first, treat any path containing '/delete' as destructive, and prefer staging.

Overview

What is Specter?

Specter is a game backend platform. The specter-skills package includes an MCP server that lets Claude inspect and configure a Specter backend directly from chat, using tools to read and manage game configuration such as currencies, tasks, leaderboards, and achievements.

How to use Specter?

Install the package with npx specter-skills init. Set up the MCP server via npx specter-skills mcp (or manually edit your MCP host config). Sign in once through your browser to authorize the tool. After that, Claude can run read-only and mutating tools on your Specter project.

Key features of Specter

  • Read-only tools to inspect economy, progression, and competition configuration.
  • Mutating tools to create currencies, items, tasks, and achievements.
  • Client tools to simulate player actions like sending events and claiming rewards.
  • Browser-based sign‑in with no password shared with the tool.
  • Auto‑detects your project from your sign‑in session.
  • Works with Claude Desktop, Claude Code, and other MCP‑compatible hosts.

Use cases of Specter

  • Inspect a project’s currencies, tasks, or leaderboards without opening the dashboard.
  • Create new currencies, items, or battle passes with a single chat command.
  • Set up and schedule achievements, missions, and daily quests from chat.
  • Test player progression by firing custom events and checking state.
  • Generate client code for your game using your real API key.

FAQ from Specter

What does the MCP server do vs the skills?

Skills teach Claude the Specter API so it writes correct integration code. The MCP server lets Claude act on your backend to inspect and configure it straight from chat.

What are the runtime requirements?

Node.js is required. The package is installed via npm and runs as an MCP server. No additional services beyond a Specter account are needed.

Where does my data live?

Your API key and sign‑in token are stored locally (~/.specter/credentials.json). No data is sent to third parties. You can revoke access from the dashboard at any time.

Are there known limits?

Mutating tools are flagged non‑read‑only and require confirmation before each call. The README advises pointing them at a staging project first. No explicit rate limits are mentioned.

How does authentication work?

Sign‑in is done through your browser using your normal Specter credentials (email/password, Google, or Apple). A revocable token is saved locally. Your password never touches the tool or Claude. Read‑only tools work after sign‑in; mutating tools require SPECTER_ALLOW_MUTATIONS=true.

Frequently asked questions

What does the MCP server do vs the skills?

Skills teach Claude the Specter API so it writes correct integration code. The MCP server lets Claude act on your backend to inspect and configure it straight from chat.

What are the runtime requirements?

Node.js is required. The package is installed via npm and runs as an MCP server. No additional services beyond a Specter account are needed.

Where does my data live?

Your API key and sign‑in token are stored locally (`~/.specter/credentials.json`). No data is sent to third parties. You can revoke access from the dashboard at any time.

Are there known limits?

Mutating tools are flagged non‑read‑only and require confirmation before each call. The README advises pointing them at a staging project first. No explicit rate limits are mentioned.

How does authentication work?

Sign‑in is done through your browser using your normal Specter credentials (email/password, Google, or Apple). A revocable token is saved locally. Your password never touches the tool or Claude. Read‑only tools work after sign‑in; mutating tools require `SPECTER_ALLOW_MUTATIONS=true`.

Comments

More AI & Agents MCP servers