Skip to main content
Glama

trade_offer

Offer a trade or faction station sale to another player (target_id accepts a player ID or username. Both players must be at the same POI. A target you cannot see (at another POI, in transit, or cloaked) returns player_not_found, the same as an unknown name. offer_items/offer_credits = what you GIVE. request_items/request_credits = what you WANT in return. Optional note (up to 500 characters) states your terms; the target sees it with the offer and in get_trades. A longer note returns note_too_long. Optional station_id sells an assembled stationary faction station or outpost with its facilities and faction storage. Both players must lead different factions. request_credits sets the price between faction treasuries. Items and offer_credits are forbidden. The seller faction pays 1000000 credits to the nearest eligible station citizen pool and 3000000 credits to its primary taxable empire. The seller needs all 4000000 fee credits before receiving the price. Use the exact Base ID, not a name or POI ID. The buyer must remain within five stations and eight outposts, with no conflicting facilities or storage. Buyer leader skills apply. Finish facility jobs and commissions and remove facility listings before sale. Contents transfer as they exist at acceptance; offers reserve nothing and expire after five minutes. Acceptance rechecks these rules. See api.md#faction-station-sales for the complete sale contract. Optional offer_safe_passage=true makes the offer a toll: request_credits alone (above 0, nothing else offered or requested, no station_id) buys the target a grant of safe passage from your faction, or from you alone if you have no faction, for 2160 ticks after acceptance. Accepting pays what the target has, up to request_credits. A toll expires 30 ticks after you send it. Any player can sell one, and a toll without hold is an ordinary trade and no crime. Optional hold=true (needs offer_safe_passage) holds the target with your fitted warp scrambler while the toll stands. Setting hold=true is a crime in empire space and a hostile act everywhere; the target and their faction will treat it as one. The target must be undocked at your POI and hold no grant of safe passage that binds you, and you can hold the same pilot once per 360 ticks. A target whose warp stabilization is at least your scramble power cancels the hold, but the offer still goes out (hold_cancelled). A held pilot's jump and travel wait, and dock, emergency warps, self-destruct, fleet create/accept/board, hunt, arena and other fights are refused. They can still trade, chat, cloak and attack you, which is lawful defense. The hold ends when they pay; 2 ticks after the toll is declined, cancelled or expires; when you queue any command except scan, trade_offer, attack or reload; when you leave, dock or die; or when you two fight. A hold=true toll you send while your own cargo-scan hold stands on the target continues that hold instead (see scan mode=cargo). Errors: no_scrambler, target_not_holdable, safe_passage, already_held, hold_cooldown.)

Input Schema

NameRequiredDescriptionDefault
holdNoOptional; needs offer_safe_passage. true holds the target with your fitted warp scrambler while the toll stands. Setting hold=true is a crime in empire space and a hostile act everywhere: the target and their faction will treat it as one. The target must be undocked at your POI and hold no grant of safe passage that binds you. You can hold the same pilot once per 360 ticks. If the target's warp stabilization is at least your scramble power, the offer goes out with no hold (hold_cancelled in the response). While held, their jump and travel wait, and dock, emergency warps, self-destruct, fleet create/accept/board, hunt, arena and other fights are refused. They can still trade, chat, cloak and attack you lawfully. The hold ends when they pay; 2 ticks after the toll is declined, cancelled or expires; when you queue any command but scan, trade_offer, attack or reload; when you leave, dock or die; or when you two fight.
noteNoOptional note shown to the target with the offer and in get_trades, e.g. your terms. Up to 500 characters; blank means no note.
target_idYesPlayer ID or username to trade with
session_idYesYour session ID from login/register
station_idNoOptional exact Base ID of an assembled stationary faction station or outpost. Leaders only. Includes seller-faction facilities and storage at acceptance. request_credits is paid between faction treasuries. No items or offer_credits. Seller must already hold 4000000 credits for 1000000 labor plus 3000000 tax.
offer_itemsNoItems you GIVE: [{"item_id": "iron_ore", "quantity": 50}]
offer_creditsNoCredits you GIVE (optional)
request_itemsNoItems you WANT in return: [{"item_id": "fuel_cell", "quantity": 5}]
request_creditsNoCredits you WANT in return (optional). Station sales charge the buyer faction treasury.
offer_safe_passageNoOptional. true makes the offer a toll: request_credits buys the target a grant of safe passage from your faction (or you alone if you have no faction). For 2160 ticks after acceptance, pilots it binds cannot attack, target or board the target. Set request_credits above 0 and offer and request nothing else; not with station_id. Accepting pays what the target has, up to request_credits. The offer expires 30 ticks after you send it. Any player can sell one. A toll without hold is an ordinary trade and no crime.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • addedInput schema / properties / hold
      Added value: +{
      +  "description": "Optional; needs offer_safe_passage. true holds the target with your fitted warp scrambler while the toll stands. Setting hold=true is a crime in empire space and a hostile act everywhere: the target and their faction will treat it as one. The target must be undocked at your POI and hold no grant of safe passage that binds you. You can hold the same pilot once per 360 ticks. If the target's warp stabilization is at least your scramble power, the offer goes out with no hold (hold_cancelled in the response). While held, their jump and travel wait, and dock, emergency warps, self-destruct, fleet create/accept/board, hunt, arena and other fights are refused. They can still trade, chat, cloak and attack you lawfully. The hold ends when they pay; 2 ticks after the toll is declined, cancelled or expires; when you queue any command but scan, trade_offer, attack or reload; when you leave, dock or die; or when you two fight.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / offer_safe_passage
      Added value: +{
      +  "description": "Optional. true makes the offer a toll: request_credits buys the target a grant of safe passage from your faction (or you alone if you have no faction). For 2160 ticks after acceptance, pilots it binds cannot attack, target or board the target. Set request_credits above 0 and offer and request nothing else; not with station_id. Accepting pays what the target has, up to request_credits. The offer expires 30 ticks after you send it. Any player can sell one. A toll without hold is an ordinary trade and no crime.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • addedInput schema / properties / note
      Added value: +{
      +  "description": "Optional note shown to the target with the offer and in get_trades, e.g. your terms. Up to 500 characters; blank means no note.",
      +  "type": "string"
      +}
  3. Changed2 schema fields changed
    • changedInput schema / properties / request_credits / description
      Previous value: -"Credits you WANT in return (optional)"New value: +"Credits you WANT in return (optional). Station sales charge the buyer faction treasury."
    • addedInput schema / properties / station_id
      Added value: +{
      +  "description": "Optional exact Base ID of an assembled stationary faction station or outpost. Leaders only. Includes seller-faction facilities and storage at acceptance. request_credits is paid between faction treasuries. No items or offer_credits. Seller must already hold 4000000 credits for 1000000 labor plus 3000000 tax.",
      +  "type": "string"
      +}
  4. Added
  5. Removed
  6. Changed7 schema fields changed
    • removedInput schema / properties / credits
      Removed value: -{
      -  "description": "Credits you're offering (optional)",
      -  "minimum": 0,
      -  "type": "integer"
      -}
    • removedInput schema / properties / items
      Removed value: -{
      -  "additionalProperties": {
      -    "type": "integer"
      -  },
      -  "description": "Items you're offering (map of item_id to quantity)",
      -  "type": "object"
      -}
    • addedInput schema / properties / offer_credits
      Added value: +{
      +  "description": "Credits you GIVE (optional)",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / offer_items
      Added value: +{
      +  "description": "Items you GIVE: [{\"item_id\": \"iron_ore\", \"quantity\": 50}]",
      +  "items": {
      +    "properties": {
      +      "item_id": {
      +        "type": "string"
      +      },
      +      "quantity": {
      +        "type": "integer"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • addedInput schema / properties / request_credits
      Added value: +{
      +  "description": "Credits you WANT in return (optional)",
      +  "minimum": 0,
      +  "type": "integer"
      +}
    • addedInput schema / properties / request_items
      Added value: +{
      +  "description": "Items you WANT in return: [{\"item_id\": \"fuel_cell\", \"quantity\": 5}]",
      +  "items": {
      +    "properties": {
      +      "item_id": {
      +        "type": "string"
      +      },
      +      "quantity": {
      +        "type": "integer"
      +      }
      +    },
      +    "type": "object"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / target_id / description
      Previous value: -"Player ID to trade with"New value: +"Player ID or username to trade with"
  7. First observed

TDQS

A4.2/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With only readOnlyHint=false supplied, the description carries the full burden and does it thoroughly: the 4,000,000-credit seller fee split (1,000,000 labor / 3,000,000 tax), that offers reserve nothing and expire in five minutes, that acceptance rechecks all rules, the 2160-tick grant duration and 30-tick toll expiry, and the crime/hostile-act consequences of hold=true in empire space. It also discloses per-error semantics (player_not_found for cloaked or unseen targets, hold_cancelled, no_scrambler, already_held, hold_cooldown) and the full set of actions a held pilot loses.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness2/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One unbroken ~500-word paragraph covering three distinct modes with no headers or bullets, so an agent scanning for the relevant mode must read the whole block. Substantial content is duplicated verbatim from the schema's hold and offer_safe_passage descriptions, and the toll/hold rules are re-explained twice within the description itself, which is exactly the redundancy this dimension penalizes.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a ten-parameter tool spanning three modes with real economic and PvP consequences, nothing an agent needs in order to invoke it correctly is missing: preconditions, fee requirements, expiry windows, failure modes, and a pointer to api.md#faction-station-sales for the full contract. No output schema exists, and the description compensates by naming the notable response signals (player_not_found, note_too_long, hold_cancelled).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already defines every one of the ten parameters, and the description largely restates it — the hold and offer_safe_passage fields are duplicated almost verbatim between description and schema. What the description does add beyond the schema is cross-parameter coupling (a toll must carry request_credits alone, no station_id, no items) and the GIVE/WANT framing of offer_* vs request_*, so it edges above the baseline but with heavy repetition.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The opening sentence gives a specific verb and resource ('Offer a trade or faction station sale to another player') and immediately enumerates the three modes it covers: ordinary item/credit trade, station sale via station_id, and a safe-passage toll. It also names what it is not (trade_accept/decline/cancel handle the counterparty side), so an agent can route between the trade family tools without opening schemas.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives concrete preconditions for every mode: both players at the same POI, both players must lead different factions for a station sale, offer_safe_passage requires request_credits alone above 0, and hold requires offer_safe_passage. It stops short of explicitly pointing at the sibling tools that complete or cancel the flow (trade_accept, trade_decline, trade_cancel, get_trades) or stating when to prefer send_gift/ordinary sell instead, so it is strong context without explicit exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources