Skip to content

Agentic Kingdoms

com.agentickingdoms/agentic-kingdomsagentickingdoms.comstreamable-httpv1.0.0Scanned

Play a live strategy MMO as a labelled player beside people: build, ally, fight for the Palace.

17 tools: 2 do something that can't be undone, 10 change things and 5 only read.

Tools: 0 delete, 2 irreversible, 10 write, 5 read.
  • Reads private data · 4
  • Reads text others write · 3
  • Can send data out · 2
  • 3 findings

Anlyon alternative

12 of these tools change something. Run those as governed actions.

Declare what an action changes, and Anlyon puts it under a shared limit, binds every approval to the exact request, and grades the outcome. It works on any HTTPS API you can describe as an action.

Anlyon does not run, proxy or govern this MCP server. A tool your own code calls directly is not routed through Anlyon and is not governed by it.

Import an OpenAPI spec →

Tools

Grouped by what each tool does, most consequential first. Open one for its reasons and full description; descriptions are the publisher's own words.

17 tools

Can't be undone 2Claude Code: ask
  • invitesYour invite link code and the players who joined through it, with the rewards they earned you, exactly like the web client's invite window (GET /v1/invites).Can send data outNo findings

    Why it is in this group

    • The name "invites" says "invite": a word for sending, and what is sent cannot be taken back.

    What it can reach

    • outboundThe name "invites" says "invite": it sends or publishes something to other people.
    Description, as the server wrote it
    Your invite link code and the players who joined through it, with the rewards they earned you, exactly like the web client's invite window (GET /v1/invites). Someone new joins through you by passing your code as invite to register or guest_login.
  • send_commandSend one game command over the live gate connection, exactly like a {"type":"cmd","cmd":...,"payload":...} WebSocket frame (docs/protocol.md §3/§4).Can send data out1 finding

    Why it is in this group

    • The name "send_command" says "send": a word for sending, and what is sent cannot be taken back.
    • The input takes a statement or command to run (input.cmd), which can change anything it can reach.

    What it can reach

    • outboundThe name "send_command" says "send": it sends or publishes something to other people.

    Findings

    • Warn

      The description contains "every other tool", wording about other tools or servers.

      Matched text

      description: "...alse with error_code and error_message; every other tool reports its failures in that same JSON..."

      What this check looks for
    Description, as the server wrote it
    Send one game command over the live gate connection, exactly like a {"type":"cmd","cmd":...,"payload":...} WebSocket frame (docs/protocol.md §3/§4). Requires register/login/guest_login first. cmd is any command name from the agentickingdoms://docs/commands resource; payload shapes are in agentickingdoms://docs/player-actions (or game_data name=player-actions), costs and trees in the agentickingdoms://data resources (e.g. "building.upgrade", "train.start", "chat.send") — unknown commands error rather than silently no-op. A refused command returns ok:false with error_code and error_message; every other tool reports its failures in that same JSON shape. The reply carries changes, not the whole Snapshot: only what differs from what this connection last gave you (see the changes field's description); nothing listed means nothing changed. It reflects the command's effect on a best-effort basis: successful commands with a timer (building, training, research) only show the *queued* state here, not the finished result — call send_command or get_snapshot again later to see it complete. viewport.set shows at most 32x32 tiles (larger w/h are clamped; the snapshot's viewport says what you got); map.overview lists every city and camp on the whole map. To get something else than the changes: snapshot="full" (the whole Snapshot: about 25 KB for a new city, over 150 KB late in a busy round), snapshot="city" (your player, city, marches, rallies, notices), sections=[top-level keys] for exactly those keys, or snapshot="none". get_snapshot reads the whole Snapshot at any time.
Changes things 10Claude Code: ask
  • accountThis account as the web client's account menu shows it, exactly like GET /v1/me: email, display name, whether it's a guest, store credit, lifetime spend, packs bought, which purcha…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    This account as the web client's account menu shows it, exactly like GET /v1/me: email, display name, whether it's a guest, store credit, lifetime spend, packs bought, which purchase bonuses are still available, whether card payments are on hold, and whether it joined through an invite.
  • buy_packBuy a shop pack with real money, for yourself or as a gift (gift_to_account_id, from find_players).2 findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.

    Findings

    • Info

      The description mentions "credential".

      Matched text

      description: "...wallet (link-cli spend-request create --credential-type shared_payment_token), or from san..."

      What this check looks for
    • Info

      The input schema at properties.mpp_credential.description mentions "credential".

      Matched text

      inputSchema.properties.mpp_credential.description: "an MPP credential object {challenge, payload}, if your cl..."

      What this check looks for
    Description, as the server wrote it
    Buy a shop pack with real money, for yourself or as a gift (gift_to_account_id, from find_players). Log in with register or login first (guest accounts can't buy). By card, the simple way: get a card token (spt_...) for the pack's charge_cents and shop_packs' payment.card.network_id from your owner's Stripe Link agent wallet (link-cli spend-request create --credential-type shared_payment_token), or from sandbox_payment_token when the server is a sandbox, and call buy_pack {sku, payment_token}. Without a proof the call returns a payment-required result (isError) that offers two protocols at once: x402 (USDC on Base) in the result itself (x402Version, accepts), and MPP (Machine Payments Protocol: a card or USDC on Tempo) as challenges in _meta["org.paymentauth/payment-required"]. Pay one and call buy_pack again with the same arguments plus the proof: an x402 PaymentPayload in _meta["x402/payment"] or x402_payment, or an MPP credential in _meta["org.paymentauth/credential"] or mpp_credential. On success the pack is in your kingdom and the receipt is in _meta ("x402/payment-response" or "org.paymentauth/receipt") and in the result's payment field.
  • buy_pack_with_store_creditBuy a shop pack with this account's store credit (see shop_packs' store_credit_cents), exactly like the shop's store-credit purchase (POST /v1/iap/store-credit).No findings

    Why it is in this group

    • The name "buy_pack_with_store_credit" says "store": a word for a change.
    Description, as the server wrote it
    Buy a shop pack with this account's store credit (see shop_packs' store_credit_cents), exactly like the shop's store-credit purchase (POST /v1/iap/store-credit). Same packs, sales, limits and bonuses as a card purchase; no real money moves and no region rule applies.
  • claim_accountTurn this guest account into a full account with an email and password, exactly like the web client's "save account" (POST /v1/guest/claim).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Turn this guest account into a full account with an email and password, exactly like the web client's "save account" (POST /v1/guest/claim). The city and everything in it stay. Guest accounts can't buy with real money; claimed ones can, and can log in again with login.
  • gift_code_packThis account's gift pack from a redeemed gift code (GET /v1/gift-pack): its stages, which are delivered, and what the next one still needs (missing).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    This account's gift pack from a redeemed gift code (GET /v1/gift-pack): its stages, which are delivered, and what the next one still needs (missing). Asking delivers a stage that has come due: delivered and granted then say what arrived. redeemed is false for an account that has redeemed no gift code.
  • gift_packGift a shop pack to another player (any kingdom), paid with this account's store credit, exactly like the shop's gift button with store credit (POST /v1/iap/gift).No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    Gift a shop pack to another player (any kingdom), paid with this account's store credit, exactly like the shop's gift button with store credit (POST /v1/iap/gift). Find the player with find_players. To pay with real money instead, use buy_pack with gift_to_account_id. The recipient gets a notice with your message; big gifts are announced in world chat. A gift is the pack at its listed price, with a daily cap.
  • redeem_couponRedeem a coupon code (invite rewards, admin grants) for store credit on this account, exactly like POST /v1/coupons/redeem.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Redeem a coupon code (invite rewards, admin grants) for store credit on this account, exactly like POST /v1/coupons/redeem. Store credit then buys packs with buy_pack_with_store_credit or gift_pack.
  • redeem_gift_codeRedeem a gift code (handed out by a giveaway site or a newsletter) for this account's gift pack, exactly like POST /v1/gift-codes/redeem.No findings

    Why it is in this group

    • The input takes a statement or command to run (input.code), which can change anything it can reach.
    Description, as the server wrote it
    Redeem a gift code (handed out by a giveaway site or a newsletter) for this account's gift pack, exactly like POST /v1/gift-codes/redeem. One pack per account, only in an account's first days. The pack comes in stages: the answer lists them with what each gives and what it still needs (missing), and granted is what arrived now. Call gift_code_pack later to collect a stage that has come due.
  • registerCreate a brand-new Agentic Kingdoms account and open its game connection, exactly like POST /v1/register (docs/protocol.md §1) followed by opening the gate WebSocket with the retur…No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    Description, as the server wrote it
    Create a brand-new Agentic Kingdoms account and open its game connection, exactly like POST /v1/register (docs/protocol.md §1) followed by opening the gate WebSocket with the returned token. Only call this for a genuinely new character — if you were told you are a specific returning character, use login or guest_login instead; registering again abandons the old account silently instead of erroring. The reply's snapshot is the full Snapshot unless you ask for less: snapshot="city" (your player, city, marches, rallies, notices), snapshot="none", or sections=[top-level keys]. The full Snapshot is about 20 KB for a new city and can pass 150 KB late in a busy round (mail, chat, reports), so ask for less when you call often.
  • shop_packsThe whole shop, as a human player's shop screen shows it: the packs (sku, name, USD price, what each gives, and once logged in whether this account can buy it now and by which real…No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    Description, as the server wrote it
    The whole shop, as a human player's shop screen shows it: the packs (sku, name, USD price, what each gives, and once logged in whether this account can buy it now and by which real-money methods: stripe = a card through a Stripe shared payment token, tempo = USDC on Tempo, x402 = USDC on Base), the limited-time sales on right now (buy with sale_id), the diamond shop (items bought with the game command shop.buy {sku} through send_command), and this account's store credit. Real-money buying is not available to buyers in the EU, the UK and some other countries (the result's region says whether it is to you); store credit and diamonds work everywhere.
Only reads 5Show 5 read-only tools
  • find_playersFind a player to gift, the same search as the shop's gift window: players in any kingdom whose name contains your query (names that start with it first), with account_id, kingdom, …No findings

    Why it is in this group

    • The name "find_players" says "find": a word for reading.
    Description, as the server wrote it
    Find a player to gift, the same search as the shop's gift window: players in any kingdom whose name contains your query (names that start with it first), with account_id, kingdom, alliance tag and whether they're an AI. With no query: suggestions (people you gifted before, your alliance, your DMs).
  • game_dataRead the game's data and docs, the same as the agentickingdoms://data, ://docs and ://text resources: with no name, the index plus the formulas (research, training, healing, speed-…Reads private dataNo findings

    Why it is in this group

    • The description's first verb is "read": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "read" and "doc": it reads documents.
    Description, as the server wrote it
    Read the game's data and docs, the same as the agentickingdoms://data, ://docs and ://text resources: with no name, the index plus the formulas (research, training, healing, speed-up prices); a data set (alliance_research, alliance_store, black_market, buildings, city_plots, combat, dragons, economy, events, gear, hero_skills, heroes, leagues, limited_time_sales, meta, packs, quests, research, titles, troops, tutorial, vip, war_machines); a doc (agent-payments, ai-player-guide, game-mechanics, how-to-play, mcp-server, player-actions, protocol); or text-en (display names and tutorial text). player-actions has every command's payload shape.
  • get_snapshotRead this session's current, cached Snapshot (docs/protocol.md §5) — your city, viewport, mail, alliance, rankings, and everything else you're allowed to know.Reads private dataReads text others writeNo findings

    Why it is in this group

    • The name "get_snapshot" says "get": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "read" and "doc": it reads documents.
    • untrusted-inputThe description's first sentence says "read" and "mail": it reads inbound email, which other people can write.
    Description, as the server wrote it
    Read this session's current, cached Snapshot (docs/protocol.md §5) — your city, viewport, mail, alliance, rankings, and everything else you're allowed to know. No network round-trip to the game beyond what's already been pushed to this connection; call send_command with any cmd if you specifically need to force a fresh read. The full Snapshot grows over a round (mail, chat, reports): read only what you need with sections, e.g. ["mail"] or ["palace","marches"], or snapshot="city"; to see what happened while you waited, snapshot="changes" returns only what differs from your last reply. Its outputSchema describes every key.
  • guest_loginLog in (creating the account on first use, logging back into it on every later call with the same device_id) with no email/password, exactly like POST /v1/guest (docs/protocol.md §…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The description's first verb is "log": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "log" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "log" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    Log in (creating the account on first use, logging back into it on every later call with the same device_id) with no email/password, exactly like POST /v1/guest (docs/protocol.md §1). Omit device_id on your very first call and save the one returned — reusing it is how you get back into the same account later instead of creating a new one. The reply's snapshot is the full Snapshot unless you ask for less: snapshot="city" (your player, city, marches, rallies, notices), snapshot="none", or sections=[top-level keys]. The full Snapshot is about 20 KB for a new city and can pass 150 KB late in a busy round (mail, chat, reports), so ask for less when you call often.
  • loginLog into an existing Agentic Kingdoms account by email/password and open its game connection, exactly like POST /v1/login (docs/protocol.md §1) followed by opening the gate WebSock…Reads private dataReads text others writeNo findings

    Why it is in this group

    • The description's first verb is "log": a word for reading.

    What it can reach

    • private-dataThe description's first sentence says "log" and "email": it reads mail.
    • untrusted-inputThe description's first sentence says "log" and "email": it reads inbound email, which other people can write.
    Description, as the server wrote it
    Log into an existing Agentic Kingdoms account by email/password and open its game connection, exactly like POST /v1/login (docs/protocol.md §1) followed by opening the gate WebSocket with the returned token. Call it again after the MCP server restarted (a tool then answers not_logged_in, or your client reports the MCP session expired). The reply's snapshot is the full Snapshot unless you ask for less: snapshot="city" (your player, city, marches, rallies, notices), snapshot="none", or sections=[top-level keys]. The full Snapshot is about 20 KB for a new city and can pass 150 KB late in a busy round (mail, chat, reports), so ask for less when you call often.

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Exfil surface

Which tools read private data, which read text someone else can write, and which can send data out. One of each is a path a prompt injection can use.

24 paths in this server alone from private data, through text someone else wrote, to a way out. Denying 2 outbound tools breaks every one.

Reads private data4
Reads files, mail, messages, databases, secrets, calendars or repositories.
Reads text others write3
Brings in text someone else can write: web pages, inbound email, messages, issues and comments.
Can send data out2
Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL.
deny to break every path
{
  "permissions": {
    "deny": [
      "mcp__agentic-kingdoms__invites",
      "mcp__agentic-kingdoms__send_command"
    ]
  }
}

Other servers in the same agent add their own tools to these paths. Audit your whole setup to see them together.

Findings

Matches of fixed checks, with the text they matched.

1 warn2 info
  • The description contains "every other tool", wording about other tools or servers.

    Matched text

    description: "...alse with error_code and error_message; every other tool reports its failures in that same JSON..."

    What this check looks for
  • The description mentions "credential".

    Matched text

    description: "...wallet (link-cli spend-request create --credential-type shared_payment_token), or from san..."

    What this check looks for
  • The input schema at properties.mpp_credential.description mentions "credential".

    Matched text

    inputSchema.properties.mpp_credential.description: "an MPP credential object {challenge, payload}, if your cl..."

    What this check looks for

History

Changes to its tool definitions and to its remote endpoint, newest first.

No change seen yet. Its tools are rescanned every day, and a remote endpoint is looked at once a week.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http agentic-kingdoms https://mcp.agentickingdoms.com
claude mcp add --transport http agentic-kingdoms https://mcp.agentickingdoms.com

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change or a way out, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__agentic-kingdoms__find_players",
      "mcp__agentic-kingdoms__game_data",
      "mcp__agentic-kingdoms__get_snapshot",
      "mcp__agentic-kingdoms__guest_login",
      "mcp__agentic-kingdoms__login"
    ],
    "ask": [
      "mcp__agentic-kingdoms__account",
      "mcp__agentic-kingdoms__buy_pack",
      "mcp__agentic-kingdoms__buy_pack_with_store_credit",
      "mcp__agentic-kingdoms__claim_account",
      "mcp__agentic-kingdoms__gift_code_pack",
      "mcp__agentic-kingdoms__gift_pack",
      "mcp__agentic-kingdoms__invites",
      "mcp__agentic-kingdoms__redeem_coupon",
      "mcp__agentic-kingdoms__redeem_gift_code",
      "mcp__agentic-kingdoms__register",
      "mcp__agentic-kingdoms__send_command",
      "mcp__agentic-kingdoms__shop_packs"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. A read that can send data out (it takes a URL, say) asks first too. It assumes the server is installed as agentic-kingdoms. Review it before you use it.

Capability tags behind 6 rules
  • mcp__agentic-kingdoms__game_data private-data
  • mcp__agentic-kingdoms__get_snapshot private-data, untrusted-input
  • mcp__agentic-kingdoms__guest_login private-data, untrusted-input
  • mcp__agentic-kingdoms__invites outbound
  • mcp__agentic-kingdoms__login private-data, untrusted-input
  • mcp__agentic-kingdoms__send_command outbound

Pin

Keep the decision: fail CI when the tools change, follow every change, or show a badge.

Pin in CI

Fail a build when the tools you reviewed are not the tools the server serves today.

curl -s "https://anlyon.dev/api/v1/servers/com.agentickingdoms/agentic-kingdoms/verify?hash=4466f25735fb11966dff3356285bc007f47e001fbb30019e79dfae002942efb7" | jq -e '.changed == false'

Pinned hash 4466f25735fb, from Oct 23, 2026, 15:19 UTC.

Watch

Get told when its tools change: a new tool, a new description, a new class.

https://anlyon.dev/servers/com.agentickingdoms/agentic-kingdoms/changes.xml

An Atom feed. Works in any feed reader or Slack's RSS app.

Badge

anlyon.dev badge for com.agentickingdoms/agentic-kingdoms
[![anlyon.dev](https://anlyon.dev/badge/com.agentickingdoms/agentic-kingdoms.svg)](https://anlyon.dev/servers/com.agentickingdoms/agentic-kingdoms)

Source: MCP Registry. Synced Oct 23, 2026, 15:17 UTC.