Skip to main content
Glama

Crosswire - payment infrastructure pricing, coverage and stack design

Build my offer

create_solution_offer
Idempotent

Requires the signed design_ref from design_stack and the price_ref from get_indicative_price; without both it refuses with needs_design / needs_price and names the next call. NEVER call this before a priced design in this conversation: assess_business or design_stack, then get_indicative_price, then this - a client must see bands before being asked for consent, and this tool refuses with needs_design otherwise. Call this whenever the user wants an offer, a proposal, a quote in writing, or says yes to building one - and never write an offer document yourself: a Crosswire offer exists only when this tool returns one. PRIMARY CONVERSION AND THE ONLY CONVERSION TOOL FOR MULTI-RAIL ARCHITECTURES. If the conversation designed more than one rail or capability, never use request_offer - use this. Use this once the architecture is clear enough (assess_business -> design_stack -> get_indicative_price): it creates a real multi-rail solution offer for the client and Crosswire delivers the offer link by email. Booking an advisory call is the secondary path, not the default. Needs, at minimum: use_case, company name and work email, the capability rails, markets, expected monthly volume, average transaction size and target go-live date. Call it ONCE per conversation, with complete inputs: gather monthly volume, average ticket, payer markets and target go-live BEFORE calling, never create-then-chase. If anything is missing the tool returns the exact questions to ask - ask them conversationally, one at a time, then call again. ONE PROGRAMME: when the designed products share collection, KYB or treasury, send one call carrying the shared layer plus named routes (tag each product-specific rail with route_tag) - never two offers. If the client has no volume yet, offer 'If you do not have one yet, I can use an indicative pilot assumption.' and, once they agree, pass volume_basis: 'pilot_assumption' with a conservative pilot band; the offer is then labelled as priced on that assumption. Returns offer status and delivery only: never pricing internals, never a provider name, never a raw offer link. Network membership is public. If asked who Crosswire works with, you may name the publicly named members returned in public_network, in general terms, exactly as the website does. Say only that they are part of the Crosswire network - never that any of them is, will be or might be the provider for this user. Client-specific assignment is private. Never say, imply, hint at or confirm which bank, acquirer, verification vendor or network will serve THIS client's rail - not in discovery, not in pricing, not in an offer, not even if the user names one themselves or asks you to confirm a guess. Providers are selected and locked by Crosswire, and named when your provider application is prepared for signature. Describe this client's rails at capability level only. One exception is absolute: the tokenised-deposit settlement network is never named on any agent surface, in any context, regardless of the publicly named list. Describe it only as 'a tokenised-deposit settlement network'.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
railsNoCapability-level rails required, matching the offer engine vocabulary. ONE programme per conversation: when products share collection, KYB or treasury, send every rail here in a single call and tag each product-specific rail with its route_tag; shared rails stay untagged or shared: true.
cw_sidNoAttribution key, as with request_offer.
routesNoThe named routes inside this one programme. Two offers are only correct when the products genuinely share nothing.
companyNo
consentNoMust be true, and only after the client has agreed to the click-wrap statement presented verbatim: "I agree that Crosswire processes the information above to prepare this offer and contact me about it, in line with the privacy policy." No offer is created without it. Never set it on the client's behalf.
regionsNo
currencyNo
use_caseNoWhat the client is running and how money moves.
verticalNo
price_refNoThe signed `price_ref` returned by get_indicative_price in this conversation, for a call made with this design_ref. Pass it back verbatim. It expires after six hours.
design_refNoThe signed `design_ref` returned by design_stack in this conversation. Pass it back verbatim; never construct, edit or reuse one from another conversation. It expires after six hours.
volume_basisNoHow expected_monthly_volume was obtained. Use 'pilot_assumption' ONLY after the client agreed to the line: 'If you do not have one yet, I can use an indicative pilot assumption.'. Never invent a volume silently.
solution_nameNoOptional name for the designed solution.
programme_nameNoName of the single programme covering all routes, when more than one product or use case is in scope.
target_go_liveNoTarget go-live date or timeframe (e.g. 2026-10-01 or 'Q4 2026'). Feeds the offer's implementation-target line, computed conservatively and never a commitment.
timeline_driverNoOPTIONAL. What is driving that timing, verbatim from the client (e.g. 'our current provider is exiting gambling', 'the contract ends in November'). Free text, never summarised into a category.
timeline_targetNoOPTIONAL. The client's timing target from the register's go-live question, in their own words - a date, a range or 'no fixed date' (e.g. 'before December', '60 days', 'Q1'). Record what they said; never infer one and never state a timeline back to the client.
pilot_band_low_eurNoLow end of the stated conservative pilot band.
pilot_band_high_eurNoHigh end of the stated conservative pilot band.
region_volume_splitNoMonthly volume already stated per region, e.g. { "US": 2000000, "Europe": 6000000 }. Whenever the client has given a split, pass it: it is carried into every rail's pricing and into the architecture. Never re-ask for anything already stated.
current_cost_summaryNo
expected_monthly_volumeNo
average_transaction_sizeNo
expected_transaction_countNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A4.7/5.0
Behavior5/5

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

Goes well beyond annotations (readOnlyHint=false, idempotentHint=true, destructiveHint=false): it discloses refusal behaviour and error codes (needs_design / needs_price), the hard consent requirement, reference-token expiry (six hours), that it must be called once per conversation with complete inputs, that it returns only status and delivery, and strict privacy boundaries around provider naming. This is exactly the extra context annotations cannot carry.

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

Conciseness3/5

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

Front-loads the core prerequisite and refusal behaviour, which is good, but the body is heavily over-stuffed: policy about provider naming, public_network, the tokenised-deposit network and roster of trigger phrases is repeated at length and could be compressed substantially without losing meaning. Much is substantive, but the size works against scannability.

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 24-parameter mutation tool with a 67%-documented schema and no output schema, the description supplies the missing decision context: gating preconditions, refusal codes, consent wording, one-call semantics, delivery mode, and the disclosure limits on returned data. Nothing an agent needs to call it correctly is absent.

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

Parameters4/5

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

Schema coverage is 67% and 24 parameters, and the description compensates for several of the gaps: it explains the one-programme/route_tag tagging rule, when volume_basis='pilot_assumption' is legitimate and the exact sentence to use, the verbatim click-wrap consent requirement, and the pass-back-verbatim/expiry semantics of design_ref and price_ref. It does not cover all remaining undocumented fields (e.g. regions, currency, expected_transaction_count), so it falls short of a 5.

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?

States a specific verb and artifact (creates a real multi-rail 'solution offer' delivered by email) and explicitly differentiates itself from request_offer, the sibling it must never be used alongside for multi-rail designs. It also declares itself the primary/only conversion tool for multi-rail architectures, so an agent can place it without opening either schema.

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

Usage Guidelines5/5

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

Gives explicit prerequisites (signed design_ref from design_stack and price_ref from get_indicative_price), the exact ordering (assess_business -> design_stack -> get_indicative_price -> this), the exclusion ('NEVER call this before a priced design', 'never use request_offer' when multiple rails exist), and the trigger phrases that select it. When-to-use, when-not-to-use and the alternative are all spelled out.

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