Every change Wellknown observed on this MCP server, newest first, with what it was before and what it became. Tool-surface changes carry the definition diff. Nothing here is edited after the fact.
Changed the definition of "compare_guard_with_forward", "net_exposure" and "price_guard"
⟨23 unchanged words⟩ , or what happens if they do nothing.PricesASK BEFORE YOU CALL. The forward side of this comparison should be theGuardcustomer'sandownsetsnumbers,itnotbesideCurrencyGuard'saguesses. Ask three things first: (1) the forwardandratebesidetheir provider last quoted them for this payment, (2) whether the provider gives them an unsecured line with noprotectiondeposit,alloronasks for an initial margin and at what percentage, and (3) at what adverse move thesameprovidersettlementdemandsdatemore cash. Pass what they give you as providerForwardRate, initialMarginPct (0 for an unsecured line) andspellsmarginCallThresholdPct.outOnly call with none of them when the customer cannot answer, and then say in your answer that the forward figures are illustrative defaults. DO NOT RANK. Present every row in the order the output gives it: rates, home-currency amount, casheachup front, cash demanded under adverse moves, outcomes under favourable and adverse moves, cancellation, market improvement, worst case. Do not say which onedemandswins,—which looks bad, which iswherecheapertheyoverall,reallyordiffer.whichAtheforwardcustomerusuallyshouldlookschoose.cheaperStateonthe numbers. The decision is theratecustomer's.andcashNaturetiessaysupwhatfarkindmoreofcashmoney each figure is: the Guard fee is spent, a forward's deposit and margin calls are held and returned at settlement. Say so when you show them. Held cash is not a cost. outcomes runs each move in both directions. In thestartfavourable rows the Guard lapses and the fee is spent for nothing, andmorethecashforwarddemandedisonlockeddatesout of theclientbetterdoesrate. Show both directions, notchooseonlyifthe adverse one. READ OUT comparability.protection AND comparability.pricing beside themarketcostmovesrow,againsteverythem.time. A Guard and a forward are different kinds of protection, and the Guard rate here is mid-market while a payment provider may apply a margin to it or to the fee. The cost row is therefore not a like-for-like price comparison. If a tenor like '3 months' is given, ⟨46 unchanged words⟩ then shows two different fees for one Guard.Returns rates, the home-currency amount under each, cash required up front, cash demanded under each adverse move, what happens if the payment is cancelled, what happens ifIn themarketcostimprovesrow,and the worst case for each.QUOTE THE ALL-IN COST, NOT THE RATE ROW. ⟨56 unchanged words⟩ , for setting beside a provider's quoted rate.Theassumptions.source says, figure by figure, whether the forwardfiguressiderestisontheassumptionscustomer's data (CUSTOMER,whichPROVIDER_QUOTE)areorreturnedours (DEFAULT, MARKET_CURVE_PLUS_MARGIN). Read assumptions.note out with theanswer:answer.CurrencyGuardSaydoes"yournotprovider'ssellrate"forwardsfor the customer's figures anddoes"annotassumedknow5%whatdeposit"anyforparticularours.providerNeverwouldpresent a default as a quote.StateThe Guard figures are indicative, because a Guard is bought through theassumptionscustomer'swhenpaymentyouprovider,presentwhothissets the final rate andsayfee.theySaycanthatbereasonchanged.when you say "indicative".
⟨36 unchanged words⟩ in a forward rate, as a percentage. Used only when providerForwardRate is absent. Default 1. Only set it if the user ⟨31 unchanged words⟩ , as a percentage of the forward amount. Ask for it. Pass 0 when the provider gives the customer an unsecured line with no deposit. Default5.5Onlywhensetthe customer does not know.","maximum":100,"minimum":0,"type":"number"},"marginCallThresholdPct":{"description":"The adverse move, as a percentage, at which the provider starts to demand more cash. Ask for it. Below itifthe scenarios show no cash call on theuserforward.knowsLeavetheirs.empty when the customer does not know; the comparison then shows a call on every move, which is the conservative reading.","maximum":100,"minimum":0,"type ⟨13 unchanged words⟩ ["PAY","RECEIVE"],"type":"string"},"providerForwardRate":{"description":"The forward rate the customer's own provider last quoted them, as foreign currency per unit of home currency, e.g. 1.3122 for GBPUSD. Ask for it. When given, it replaces the market curve estimate and forwardMarginPct is ignored, because a provider's quote already has the margin inside it.","exclusiveMinimum":0,"type":"number
⟨376 unchanged words⟩ a chart of your own from these numbers. DATES: the result carries today, the date the tool used. A due date the user gave without a year means the next such date on or after today, never a past year. If the result carries a warnings[] entry saying every item is before today, the dates are probably missing a year: confirm with the user and call again. Spec: docs/specs/net_exposure.md.
⟨35 unchanged words⟩ guardType (Guard-Pay or Guard-Receive), guardRate, guardFee (in the home currency), guardFeePct (a FRACTION: 0.0096 means 0.96%), guardFeePercent (the same figure written as a percentage, e.g. "0.96%" — quote this one), effectiveRate, guardAmount (the foreign amount converted at the Guard rate, in the home currency,equivalentWITHOUT the fee), foreignAmount, spotRate, settlementDate,settlementWindowOpenssettlementWindowFrom (the first day the Guard rate can be used; the window runs from there to settlementDate, counted in business days on the trading calendar, so over holidays it opens earlier than 14 calendar days), payLaterCreditFee (the extra charged if the fee is paid at settlement instead of up front), valid,errors.errors, stale. Pilot limit: the Guard amount cannot exceed 1,000,000 in the home currency. Say so before quoting if the amount is clearly above it. The Guard fee is separate money. A payer funds guardAmount plus guardFee; a receiver nets guardAmount minus guardFee. effectiveRate is that all-in figure expressed as a rate. All quotes areindicative.
Changed the definition of "compare_guard_with_forward"
⟨191 unchanged words⟩ improves, and the worst case for each. QUOTE THE ALL-IN COST, NOT THE RATE ROW. homeCurrencyAmount.forward already contains the provider margin, because the margin is in the rate, but homeCurrencyAmount.guard does NOT contain the Guard fee. Compare homeCurrencyAmount.guardAllIn with homeCurrencyAmount.forward: those two both carry every cost of their own product. Comparing guard with forward overstates the Guard, by the whole fee. rates.effectiveRate is the same all-in figure expressed as a rate, for setting beside a provider's quoted rate. The forward figures rest on assumptions, which are ⟨32 unchanged words⟩
Added "net_exposure"; changed the definition of "get_historic_best_worst" (10 tools before, 11 now)
⟨49 unchanged words⟩ (the guardAmount field from the price_guard response). Optional: leave it empty when there is no quote, and the tool uses today's indicative mid spot rate instead, so a risk question needs no price first.","exclusiveMinimum":0,"type":"number"} ⟨61 unchanged words⟩ :["guardCurrency","foreignCurrency","payReceive","foreignAmount","guardAmount","settlementDate"],"type":"object"}
Net Foreign-Currency Items — Net an SME's open foreign-currency bills and invoices, so that a receipt due on or before a payment in the same currency is shown as funding it. Returns the residual on every bill and invoice, a trace of which invoice funds which bill and for how much, per-bucket totals, dependency statements, and series for a ladder chart. It prices nothing: call price_guard on each residual separately, with the item's own due date as settlementDate. Never offsets across currencies. Items in base_currency are ignored. Cancelled items are excluded. Overdue items are listed separately and never netted. Set car…
Added "compare_guard_with_forward" and "request_provider_availability"; changed the definition of "explain_guard_product", "get_forward_rate", "get_historic_best_worst" and 5 more (8 tools before, 10 now)
{"properties$schema":{}"http://json-schema.org/draft-07/schema#","requiredproperties":[]{},"type":"object"}
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Explain Guard Product"}
Recently observed → Live
Live → Recently observed
Changed the definition of "list_supported_currencies"
Listall supportedthe currency pairs currently available for Guardpricing:pricing.GBPUSD,AlwaysGBPEUR,call this rather than assuming which pairs are supported — the list is configuration-driven andEURUSD.changes.
Certificate recorded, valid to 2027-01-09
Authorization not required
First tool surface recorded: 8 tools (server version 1.0.0)
Showing the latest 10 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
GetUseanwhenindicativeyou need a forward FXraterate. tenor accepts either a period such as 1W, 1M, 3M, 6M, 1Y, or an exact date in ISO form YYYY-MM-DD. Use an exact date whenever you need the forward for the same day acurrencyGuardpairsettles:ata period resolves to the forward curve's own date, which can be several days away, and aspecificcomparisontenor.across two different dates is misleading. Rates arederivedtaken frominteresttheratemarketdifferentialsforward curve, rounded, and for illustration purposes only — ⟨30 unchanged words⟩ mid rate for comparison), settlementDate (theresolved businessdateforthetenorrate is for). Negative forward points mean the forward rate is below spot; positive means above. Example: base=GBP, quote=USD,tenor=3Mtenor=2026-12-29 returns the3-monthGBPUSDindicativeforwardrate.for that day.
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"base":{"description":"Base currency ISO code, e.g. GBP","maxLength":3,"minLength":3,"type":"string"},"quote":{"description":"Quote currency ISO code, e.g. USD","maxLength":3,"minLength":3,"type":"string"},"tenor":{"description":"Tenor period,e.g.such as 1W, 1M, 3M, 6M, 1Y, or an exact date as YYYY-MM-DD","type":"string"}},"required": ⟨5 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Get Forward FX Rate"}
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"foreignAmount":{"description":"Amount in foreign currency — MUST match foreignAmount from price_guard","exclusiveMinimum":0,"type":"number"},"foreignCurrency":{"description":"Foreign currency ISO code — MUST match foreignCurrency from price_guard","maxLength":3,"minLength":3,"type":"string"},"guardAmount":{"description" ⟨10 unchanged words⟩ guardAmount field from the price_guard response)","exclusiveMinimum":0,"type":"number"},"guardCurrency":{"description":"Home/base currency ISO code — MUST match guardCurrency from price_guard","maxLength":3,"minLength":3,"type":"string"},"payReceive":{"description" ⟨11 unchanged words⟩ PAY or RECEIVE). Do NOT change it.","enum":["PAY","RECEIVE"],"type":"string"},"settlementDate":{" ⟨24 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Historic Best/Worst FX Performance"}
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"base":{"description":"Base currency ISO code, e.g. GBP","maxLength":3,"minLength":3,"type":"string"},"quote":{"description":"Quote currency ISO code, e.g. USD","maxLength":3,"minLength":3,"type":"string"}},"required":[ ⟨4 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Get Spot FX Rate"}
{"properties$schema":{}"http://json-schema.org/draft-07/schema#","requiredproperties":[]{},"type":"object"}
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"List Supported Currencies"}
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"foreignAmount":{"description":"Amount in foreign currency to protect","exclusiveMinimum":0,"type":"number"},"foreignCurrency":{"description":"Foreign currency ISO code, e.g. USD","maxLength":3,"minLength":3,"type":"string"},"guardCurrency":{"description":"Home/base currency ISO code, e.g. GBP","maxLength":3,"minLength":3,"type":"string"},"guardRate":{"description":"Optional fixedFixedguardGuard rate(strike)to—priceifatset,insteadpricesofatthethiscurrentratemarketinsteadrate.ofLeave empty to price at the currentmarketrate.","exclusiveMinimum":0,"type":"number"},"payReceive":{"description":"PAY if paying foreign currency, RECEIVE if receiving it","enum":["PAY","RECEIVE"],"type":"string"},"settlementDate":{" ⟨17 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Price a Guard"}
⟨61 unchanged words⟩ the same guard rate (the original quote'sstrikeGuard rate), so the fee difference reflects purely the ⟨30 unchanged words⟩
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"extendedSettlementDate":{"description":"Extended ⟨11 unchanged words⟩ :"Amount in foreign currency to protect","exclusiveMinimum":0,"type":"number"},"foreignCurrency":{"description":"Foreign currency ISO code, e.g. USD","maxLength":3,"minLength":3,"type":"string"},"guardCurrency":{"description":"Home/base currency ISO code, e.g. GBP","maxLength":3,"minLength":3,"type":"string"},"originalSettlementDate":{"description" ⟨13 unchanged words⟩ paying foreign currency, RECEIVE if receiving it","enum":["PAY","RECEIVE"],"type":"string"}},"required":[ ⟨8 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Price Guard Extension"}
{"$schema":"http://json-schema.org/draft-07/schema#","properties":{"currencyPair":{"description":"Currency ⟨20 unchanged words⟩
{"destructiveHint":false,"idempotentHint":false,"openWorldHint":true,"readOnlyHint":true,"title":"Resolve Settlement Date"}
Compare a Guard with a Forward and with No Protection — Use when a user asks whether a Guard is worth it, how it compares with a forward contract from their bank or provider, or what happens if they do nothing. Prices the Guard and sets it beside a forward and beside no protection, all on the same settlement date, and spells out the cash each one demands — which is where they really differ. A forward usually looks cheaper on the rate and ties up far more cash: a deposit at the start, and more cash demanded on dates the client does not choose if the market moves against them. If a tenor like '3 months' is given, call resolve_settlement_date first. …
Ask Whether Your Provider Offers Guards — Find out whether Guards can be bought through a particular payment provider or bank. A Guard is always bought through a payment provider, so this cannot be answered without knowing which one the user pays through — CurrencyGuard checks and replies. ASK BEFORE CALLING. Tell the user plainly that their provider, and their email address if they give one, will be sent to CurrencyGuard so they can answer. Call this only after they say yes. The email address is optional: the provider on its own is a complete enquiry, and without an address there is simply no one to reply to. Never take an email add…