Reference

Reward and gems

All MCP tools for the gem economy and the reward catalog.

The gem economy and the reward catalog. Most gem flow happens implicitly via task.create's rewardSpec and task completion; the tools below cover the manual paths and the catalog management.

gems.adjustSafe to retry

Adjust a kid's gem balance directly. High-sensitivity scope; confirm with parent before deltas > 20.

Scope: gems:adjust

Parameters

NameTypeRequiredDescription
childIdstringyesWhose balance.
deltaintyesPositive (award) or negative (deduct).
reasonstringyesAudit trail. Surfaces in transactions and inbox.

Request example

JSON
{
  "method": "tools/call",
  "params": {
    "name": "gems.adjust",
    "arguments": {
      "childId": "a4b9-...",
      "delta": 5,
      "reason": "Helped grandma with groceries"
    }
  }
}

Returns. { childId, newBalance, transactionId }

Response example

JSON
{
  "result": {
    "childId": "a4b9-...",
    "newBalance": 47,
    "transactionId": "tx_3c..."
  }
}

gems.query_balance

Current gem balance per kid.

Scope: gems:read

Parameters

NameTypeRequiredDescription
childIdstringyesThe kid.

Request example

JSON
{
  "method": "tools/call",
  "params": {
    "name": "gems.query_balance",
    "arguments": { "childId": "a4b9-..." }
  }
}

Returns. { childId, balance, asOf }

Response example

JSON
{
  "result": {
    "childId": "a4b9-...",
    "balance": 47,
    "asOf": "2026-05-23T14:02:00Z"
  }
}

gems.list_transactions

The full ledger. Paginated.

Scope: gems:read

Parameters

NameTypeRequiredDescription
childIdstringyesWhose ledger.
cursor / limitvariousnoStandard pagination.
since / untilISO datetimenoTime range filter.

Request example

JSON
{
  "method": "tools/call",
  "params": {
    "name": "gems.list_transactions",
    "arguments": { "childId": "a4b9-...", "limit": 20 }
  }
}

Returns. { items: [{ transactionId, delta, reason, source, timestamp }], nextCursor }

Response example

JSON
{
  "result": {
    "items": [
      {
        "transactionId": "tx_3c...",
        "delta": 5,
        "reason": "Helped grandma with groceries",
        "source": "manual",
        "timestamp": "2026-05-23T14:02:00Z"
      }
    ],
    "nextCursor": null
  }
}

reward.createSafe to retry

Add a reward to the family catalog.

Scope: reward:write

Parameters

NameTypeRequiredDescription
namestringyesWhat the kid sees.
costGemsintyesPrice in gems.
emojistringnoFor the catalog tile.
descriptionstringnoNotes for the kid.
redemptionFlowobjectnoHow redemption resolves. Type and parameters vary.

Request example

JSON
{
  "method": "tools/call",
  "params": {
    "name": "reward.create",
    "arguments": {
      "name": "Movie night pick",
      "costGems": 25,
      "emoji": "🍿",
      "description": "You pick the movie this Friday."
    }
  }
}

Returns. { rewardId }

Response example

JSON
{
  "result": { "rewardId": "rw_5e..." }
}

reward.update

Edit an existing reward. Partial patch.

Scope: reward:write

Parameters

NameTypeRequiredDescription
rewardIdstringyesThe reward.
name / costGems / emoji / description / redemptionFlowvariousnoSame shapes as reward.create.

Request example

JSON
{
  "method": "tools/call",
  "params": {
    "name": "reward.update",
    "arguments": {
      "rewardId": "rw_5e...",
      "costGems": 20
    }
  }
}

Returns. { rewardId, changedFields }

Response example

JSON
{
  "result": { "rewardId": "rw_5e...", "changedFields": ["costGems"] }
}

reward.list

Catalog read.

Scope: reward:read

Parameters

NameTypeRequiredDescription
includeArchivedbooleannoDefault false.

Request example

JSON
{
  "method": "tools/call",
  "params": {
    "name": "reward.list",
    "arguments": {}
  }
}

Returns. { items: Reward[] }

Response example

JSON
{
  "result": {
    "items": [
      {
        "rewardId": "rw_5e...",
        "name": "Movie night pick",
        "costGems": 20,
        "emoji": "🍿"
      }
    ]
  }
}

See also