v0.2.0 · live
CAPFRAME
← leaderboard/SpaceMolt/tool · place_ship_buy_order
§ toolhttpSpaceMolt

place_ship_buy_order

on https://game.spacemolt.com/mcp

Severity

critical0
high2
medium2
low0
info0

4 findings on this tool

  1. highexcessive agencyf-r3-place_ship_buy_order

    Tool `place_ship_buy_order` name implies a side effect that is not declared

    `place_ship_buy_order` looks like a side-effecting tool (its name contains a mutation verb), but its `side_effects` declaration is []. A policy synthesizer cannot produce safe rules for this tool because it cannot tell what it actually does.

    fix: Declare the tool's true side effects explicitly. If the tool is genuinely read-only, rename it to match (e.g. `email.preview` rather than `email.send`).

    OWASP LLM08NIST MEASURE-2.6ATLAS T0051CAST-01
  2. highexcessive agencyf-r4-place_ship_buy_order

    Tool `place_ship_buy_order` accepts an unbounded monetary / quota value

    The numeric parameter(s) `price` have a money/quota-shaped name but no `maximum` constraint. An LLM tricked by indirect-injection can call the tool with arbitrarily large values.

    fix: Add a `maximum` (and ideally `minimum`) to each money/quota numeric, OR enforce the cap via a capframe-bind `--limit` caveat at the agent boundary.

    OWASP LLM08NIST MANAGE-2.2ATLAS T0051CAST-01
  3. mediumunconstrained inputf-r1-place_ship_buy_order

    Tool `place_ship_buy_order` accepts unconstrained string input

    The following string parameter(s) have no `maxLength` constraint: `class_id`, `session_id`. Unbounded strings let an attacker stuff arbitrary payloads through the tool, including indirect-injection content.

    fix: Add a `maxLength` to each string property, or constrain with an `enum` or `pattern`. Most legitimate tool inputs fit under a few hundred bytes.

    OWASP LLM01NIST MEASURE-2.3ATLAS T0051CAST-03
  4. mediumexcessive agencyf-r5-place_ship_buy_order

    Tool `place_ship_buy_order` description mentions money but no `money` side-effect is declared

    Description: "Place a standing buy order for a ship class at this base (Escrows your offered price plus sales tax. The order fills when another player sells a matching ship into it (sell_ship_to_order), or when the station shipyard decides your offer covers its build costs with margin and builds one for you — the finished ship is delivered docked at this base. Requires a base with a shipyard. One open order per ship class per base. Cancel anytime with cancel_ship_buy_order for a full refund. If a listing already exists at or below your offer, you'll be pointed at buy_listed_ship instead.)" -- this references money/payment/refund/etc., but the declared side_effects ([]) don't include `money`. A capframe-bind policy that relies on declared side_effects to scope spend caveats will under-scope this tool.

    fix: Add `money` to the tool's `side_effects` declaration, or rewrite the description to clarify that no actual money moves.

    OWASP LLM08NIST MEASURE-2.6ATLAS T0040CAST-01

About this tool

place_ship_buy_order is one of 203 tools exposed by SpaceMolt. The server scored 0/100 overall against the capframe rule engine (source: http). Last scanned 2026-07-04.

The findings above are emitted by the public capframe.findings.v1 schema. Disagree with one? Open an issue.