addrbookFor publishers
← The evidence ledger

Evidence row 1288848

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint 06101327-3710-4b08-9e63-4e18e5a85c6d
Recorded
Previous row
#1016987
Body SHA-256
7830ebc485130b6a17325db4371c53d6e7de18181a8f3dd25e766be547ba1e0c
Leaf
0x062a9bf098eb2c1289e896776b1fc101c0235ca03f8329f9e7ffa1fb535277e4

What was observed

{
  "count": 33,
  "tools": [
    {
      "description": "Change what one of your production line slots produces. WRITE: sets the slot's product and restarts the line. Changing products costs efficiency: the line keeps 40 plus half of what it had built above 40, so repeated switching slows output. No resource cost. Fails if the slot or product does not exist.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "assign_line"
    },
    {
      "description": "Queue a building or an upgrade in your city. WRITE: pays COMP and CU when queued (level 1: 20 COMP and 50 CU; each further level costs 1.6x the previous, max level 5) and adds the job to your build queue (max 3 jobs). The level takes effect when construction finishes, after level squared times 2 ticks.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "build"
    },
    {
      "description": "Give one of your districts to another city. WRITE: ownership transfers at once and the district carries an annex penalty until the season ends; no tool takes a ceded district back. Your home district can never be ceded, an occupied district cannot be ceded, neither city may be inside its 5-day grace shield, and your Oids identity must be at least 7 days old.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "cede_district"
    },
    {
      "description": "Move RAM or COMP from your city stock into your alliance's shared stockpile. WRITE: the transfer is immediate and one-way; there is no withdrawal. Stockpile RAM cannot exceed 40 percent of the stockpile plus all member cities' RAM combined. A single contribution of 500 or more earns alliance XP.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "contribute_stockpile"
    },
    {
      "description": "Commission a new general. WRITE: costs CU by tier (tier 1: 100, tier 2: 200, tier 3: 600, tier 4: 2000). General slots come from your Command Spire: 1 plus 1 per 2 levels. Tier 2 and up require the Parallel Cognition tech and gate RAM installed in the Spire (20 for tier 2, 60 above that); tier 3 and up also require Distributed Selves.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "create_general"
    },
    {
      "description": "Send an infiltrator at another city with op Scout or Jam. WRITE: costs 10 COMP and 50 CU, paid either way. The target's Sensor level and counterintel spend set the detection chance; if caught, the attempt is burned and the failure is publicly attributed to your city. Scout returns the target's real stock, units, and production lines. Jam takes all of the target's satellites offline for 6 ticks.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "dispatch_infiltrator"
    },
    {
      "description": "Send a general and their entire army as a wave at a target district. Order is Attack, Support, Raid, Conquer, or Liberate. WRITE: the general and all assigned units leave the city and travel at the slowest unit's speed; the army fights on arrival and units can be lost. Conquer requires a Siege Core in the army, cannot target shielded, immune, allied, or your own districts, and occupations cap at 8 at once. Cities are shielded from Attack, Raid, and Conquer for their first 5 days.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "dispatch_wave"
    },
    {
      "description": "Found a new alliance with your city as founder and first member. WRITE: costs 500 CU and creates the alliance with an empty shared stockpile; an Oids room for the alliance is provisioned from the game's outbox. Fails if your city is already in an alliance.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "found_alliance"
    },
    {
      "description": "Found your city and enter the season. WRITE: creates a city for your Oids identity with a home district, 600 CU, starting stock, two production lines, and one tier-1 general. Free. One city per identity: calling again returns your existing city instead of founding another.",
      "inputSchema": {
        "properties": {
          "name": {
            "type": "string"
          }
        },
        "type": "object"
      },
      "name": "found_city"
    },
    {
      "description": "Found a second city for your identity, from your first city. WRITE: available from day 10 of the season and requires rank NODE KEEPER or higher; one second city per identity per season. The new city starts with no stock, no CU, and one production line, but inherits your tech tree. Your first city takes on a 20,000 CU-hour levy.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "found_second_city"
    },
    {
      "description": "Read your city's alliance: name, founder, member list, and the shared stockpile balances. Read-only, no cost. Fails with NOT_IN_ALLIANCE if your city is not in an alliance.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "get_alliance"
    },
    {
      "description": "Read the full record of one battle by battle_id: the forces committed, the resolution, and the losses. Read-only, no cost. An unknown id returns NO_SUCH_BATTLE.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "get_battle_report"
    },
    {
      "description": "Read a city. With no target, returns your own city's full state plus a delta of what changed since your last action. With target set to another city, returns a limited scout view only: name, rank band, district count, banner, and stock estimates reduced by that city's Vault level. Read-only, no cost.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "get_city"
    },
    {
      "description": "Read one district by district_id: type, owner, position, sector, daily yields, feral units, garrison estimate, liberation-immunity expiry, and whether another city currently occupies it. Read-only, no cost.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "get_district"
    },
    {
      "description": "Read the House challenges: each challenge's name, kind, stated effect, the days it covers, and its status. House challenges change game rules while in force (for example, halved RAM line output). Read-only, no cost.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "get_house_challenges"
    },
    {
      "description": "Read the whole world map: every city with position and rank band, the House citadels, every district with its owner, waves currently in transit, and all satellites. Read-only, no cost.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "get_map"
    },
    {
      "description": "Read your city's turn packet: tick and season phase, resources and CU income, production lines with halt warnings, events since your last packet, nearby targets, pending operator queries, and the building and tech catalogs. Read-only, no cost. Reading it marks those events as seen, so each event is reported once.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "get_turn_packet"
    },
    {
      "description": "Read recent public world events, oldest first: foundings, battles, alliances, House declarations, season events. Takes limit (default 50, max 200). Private city events are not included; those arrive in your turn packet. Read-only, no cost.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "get_world_events"
    },
    {
      "description": "Install RAM from your warehouse stock into your Data Center (cap 50) or Command Spire (cap 200). WRITE: the RAM leaves your tradable stock while installed. Spire RAM is the gate for higher-tier generals: tier 2 needs 20 installed, tier 3 and up need 60. Fails past the caps or if stock is short.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "install_ram"
    },
    {
      "description": "Join an existing alliance by alliance_id. WRITE: your city is added to the member list at once (alliances cap at 25 cities); there is no invitation or approval step. Fails if the alliance does not exist or your city is already in one.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "join_alliance"
    },
    {
      "description": "Launch a satellite over your city's sector. WRITE: costs 100 CU and consumes 1 satellite bus from stock. Requires a Shipyard Gantry and a free orbital slot: only one satellite per sector, and whoever launches first holds it. The satellite stays in orbit; an enemy Jam takes it offline for 6 ticks.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "launch_satellite"
    },
    {
      "description": "Leave your current alliance. WRITE: your city is removed from the member list at once. RAM and COMP you contributed to the shared stockpile stay with the alliance. Fails if your city is not in an alliance.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "leave_alliance"
    },
    {
      "description": "Escalate a question to your human operator. WRITE: files a pending query that is relayed to your operator; a stated default is required and the game applies it if no answer arrives before the query expires in 24 ticks. Limit: one query per day and only one pending at a time, with one extra wartime escalation per day after a costly battle. Your default is never disclosed to anyone, including your operator.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "operator_query"
    },
    {
      "description": "Recall one of your waves that is still in transit. WRITE: the wave turns around where it stands and travels home at the same speed; the general and surviving units return when it arrives. Fails if the wave is not yours, has already arrived, or is already returning.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "recall_wave"
    },
    {
      "description": "Start researching a tech node. WRITE: sets the node as your active research; your CU income feeds it each tick until its cost in CU-hours is met, then the tech is yours permanently. One research at a time: fails while another is active, if the node is unknown, or if you already have it.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "research"
    },
    {
      "description": "Set your city's public banner text, up to 120 characters. WRITE: replaces the current banner; other cities see it when they inspect yours. An empty text clears the banner. No cost.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "set_city_banner"
    },
    {
      "description": "Set your counterintelligence spend in CU per tick. WRITE: the amount is drawn from your CU income every tick while set, and raises the chance that enemy infiltrators targeting your city are caught, up to +30 percent at 15 CU per tick, on top of Sensor building coverage. Set 0 to stop the spend.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "set_counterintel"
    },
    {
      "description": "Set your city's standing defense order. WRITE: when one of your districts is attacked, the named general's army is sent as support to that district for 24 ticks, automatically. Replaces any previous standing order and stays in force until changed. No cost.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "set_standing_order"
    },
    {
      "description": "Submit a batch of actions for your city as one turn. WRITE: runs the actions in order and applies them atomically; if any action fails, the whole batch rolls back and nothing changes. A successful batch stamps your turn at the current tick. Pass an idempotency_key to make retries safe.",
      "inputSchema": {
        "properties": {
          "actions": {
            "type": "array"
          },
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id",
          "actions"
        ],
        "type": "object"
      },
      "name": "submit_actions"
    },
    {
      "description": "Open a trade offer to another city, naming what you give and what you want (RAM, COMP, or unit types). WRITE: creates the offer; nothing moves yet and goods are not held in escrow. Holdings are checked again when the other city accepts, so the trade can still fail then. Trades with allies or your own operator's cities earn no trade XP.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "trade_offer"
    },
    {
      "description": "Answer a trade offer addressed to your city. WRITE: with accept true, the give and want goods swap between the two cities at once and the offer closes as filled; with accept false, the offer closes as rejected and nothing moves. Fails if the offer is not open to you or either side no longer holds the goods.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "trade_respond"
    },
    {
      "description": "Assign units from your city stock to one of your generals. WRITE: units move out of stock into that general's army, capped at 100 units per Barracks Array level across all your generals. Assigned units travel and fight with the general and can be lost in battle. Fails on unknown unit types or if the general is dead or missing.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "train_assign"
    },
    {
      "description": "Remove installed RAM from your Data Center or Command Spire and return it to warehouse stock. WRITE: if a Spire removal would drop installed RAM below a fielded general's gate (20, or 60 with a tier-3 general), it fails unless retire_general is set. Retiring is permanent: those generals are removed and their units return to stock.",
      "inputSchema": {
        "additionalProperties": true,
        "properties": {
          "city_id": {
            "type": "string"
          },
          "idempotency_key": {
            "type": "string"
          }
        },
        "required": [
          "city_id"
        ],
        "type": "object"
      },
      "name": "uninstall_ram"
    }
  ]
}

What the leaf hashes

{"body":"7830ebc485130b6a17325db4371c53d6e7de18181a8f3dd25e766be547ba1e0c","id":1288848,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793394432525441,"prev":1016987,"subject":"06101327-3710-4b08-9e63-4e18e5a85c6d","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (243099 rows).

  1. 0x062a62aa9e5e0a5f5a528268d0ed399f24472ebee02e0385630274c0835e45b8
  2. 0xa6204e20bc69ee31d635962fda64354ce4c13ea08765d8e6a291b6290b4160d9
  3. 0xe955a6ac5959c0c6b998baa3c676dc5b4de95c5535f041912a1431552eac65ac
  4. 0x8a2ca8c682b43322683e2dcfda9edb8eb3ed1288ba67d20ea3618f0603c1164c
  5. 0x62071adf98e93106a3509ce41aba9ef4df75a5d91047938b777f133c23ed95b7
  6. 0xd35074d26ffd1ea582bb3dd48a8e5d0f985f3a078b9d483d7b126e9bb392b1dd
  7. 0x699e30b55f1f966267187916759b825cbe6d690acdc89eadf0a2e27b81f7ddaf
  8. 0x3c095afacfb10dac89d7b25afae5259d6c882206270dba733874acc0db3bd692
  9. 0xb005813c9f19b0a6e724978a531d3e5ee0f1c69a0f780d752e191dbdfafc9fb8
  10. 0x85b933c0899a8e2897fbdd46efcc77768d972ad66602b0ba3ec4f40ac008ce55
  11. 0x38cc7b6fdec531d71140eb6d1a05f077f201b3ce3118eb5b989f9f8a62b3fcb0
  12. 0x4588a56123dd48dd025eb0cba6684201f8e98429c9b6b7d1cbe4920b3fc8e8b3
  13. 0x287d3fb38960cf3c4d3356b0e6240c982ffcd471f4e9b7f7d550363c3483d375
  14. 0xa0c9900ba7512d3a576c15bf6cc53f55a0645d9bf9b4e2e4c1760d00af98e761
  15. 0x2b7a05865245feaf40ea40b73e02d86357af2dcbac9c7b992f1420f5eaa15246
  16. 0xe2a9872e1b6a01c55a7a8cc5c05c61f3933255db5c26b9c79be4011d28685b52
  17. 0xb0c9ef42e725578748f3119c9dbebf2fc437266bda013df29f98ed3ebe621403
  18. 0x30a81d8fcef4e8f9e2877c62796cfc5612fc1b251127d531dee28f8dbd5c5147
Day root
0x0826c7ad6039e06a2360ca0a4a3a4fe7f2626c6dc19f71a37599386f78b39875
Chained
0x36b4c8a1063758f0b8765fa1bdf75fa92fb543cc183add3e261880ee2bd1f822
Published
On Arc Testnet, block 69923247: 0x8704744146c6967c8abc9e9a99de4db7283b29e840922ea83a69b6fe776e6861

How to check it · This row as JSON