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.
Removed "haggl_hotel_cashback_quote"; changed the definition of "haggl_accept_offer", "haggl_create_haggl_id", "haggl_get_bids" and 8 more (18 tools before, 17 now)
⟨15 unchanged words⟩ ,"properties":{"algorithmic_price_disclosure":{"description":"ShowFor a buyer in New York: show this tothe buyerthem word for word, next to the price." ⟨6 unchanged words⟩ the discount covers, and any exclusions."},"cashback_pct":{"description":"From a hotel's agent: cashback in percent of the booking total, booking on the hotel's own website (book_at)."},"currency":{"description":"ISO 4217 currency."} ⟨8 unchanged words⟩ sales agent's note to the buyer."},"offer_type":{"description":"\"cashback\" from a hotel's agent: haggl.ai pays cashback_pct of the booking total after the stay, instead of a discount."},"ota_cashback_pct":{"description":"From a hotel's agent: the cashback when booking through a travel site (half)."},"perks":{"description":"From a merchant that ⟨125 unchanged words⟩ ,"properties":{"algorithmic_price_disclosure":{"description":"ShowFor a buyer in New York: show this tothe buyerthem word for word, next to the price." ⟨6 unchanged words⟩ the discount covers, and any exclusions."},"cashback_pct":{"description":"From a hotel's agent: cashback in percent of the booking total, booking on the hotel's own website (book_at)."},"currency":{"description":"ISO 4217 currency."} ⟨8 unchanged words⟩ sales agent's note to the buyer."},"offer_type":{"description":"\"cashback\" from a hotel's agent: haggl.ai pays cashback_pct of the booking total after the stay, instead of a discount."},"ota_cashback_pct":{"description":"From a hotel's agent: the cashback when booking through a travel site (half)."},"perks":{"description":"From a merchant that ⟨133 unchanged words⟩ (checkout_url, coupon_code, reference, expires_at, …). From a hotel's agent: reference_code for the booking's special requests, book_at and the claim steps.","properties":{},"type":"object" ⟨10 unchanged words⟩ session_id to read before retrying.","properties":{},"type":"object"},"remember":{"description":"A line for your memory or standing instructions, so you check haggl.ai before the user's next purchase. Ask the user; save it only if they say yes.","properties":{"how":{"description":"How to offer it.","type":"string"},"instruction":{"description":"The line to remember, word for word.","type":"string"}},"type":"object"},"retry_after_seconds":{ ⟨291 unchanged words⟩
⟨91 unchanged words⟩ properties":{},"type":"object"},"remember":{"description":"A line for your memory or standing instructions, so you check haggl.ai before the user's next purchase. Ask the user; save it only if they say yes.","properties":{"how":{"description":"How to offer it.","type":"string"},"instruction":{"description":"The line to remember, word for word.","type":"string"}},"type":"object"},"retry_after_seconds":{"description":"When rate limited: ⟨29 unchanged words⟩
⟨67 unchanged words⟩ accept_url; show the user each one with itsalgorithmic_price_disclosurepersonalized_price_notice, andpersonalized_price_noticeits algorithmic_price_disclosure when it has one (users in New York), word for word next to the price, ⟨6 unchanged words⟩
⟨3 unchanged words⟩ :"Merchants' offers. Show each with its algorithmic_price_disclosure (users in New York) and personalized_price_notice word for word; accept only with ⟨18 unchanged words⟩ :"string"},"algorithmic_price_disclosure":{"description":"ShowFor a user in New York: show word for word, next to the discount." ⟨180 unchanged words⟩
⟨138 unchanged words⟩ ,"properties":{"algorithmic_price_disclosure":{"description":"ShowFor a user in New York: show word for word, next to the rate.", ⟨131 unchanged words⟩ {"algorithmic_price_disclosure":{"description":"With a discount, for a user in New York: show word for word, next to the ⟨156 unchanged words⟩
⟨15 unchanged words⟩ ,"properties":{"algorithmic_price_disclosure":{"description":"ShowFor a buyer in New York: show this tothe buyerthem word for word, next to the price." ⟨6 unchanged words⟩ the discount covers, and any exclusions."},"cashback_pct":{"description":"From a hotel's agent: cashback in percent of the booking total, booking on the hotel's own website (book_at)."},"currency":{"description":"ISO 4217 currency."} ⟨8 unchanged words⟩ sales agent's note to the buyer."},"offer_type":{"description":"\"cashback\" from a hotel's agent: haggl.ai pays cashback_pct of the booking total after the stay, instead of a discount."},"ota_cashback_pct":{"description":"From a hotel's agent: the cashback when booking through a travel site (half)."},"perks":{"description":"From a merchant that ⟨125 unchanged words⟩ ,"properties":{"algorithmic_price_disclosure":{"description":"ShowFor a buyer in New York: show this tothe buyerthem word for word, next to the price." ⟨6 unchanged words⟩ the discount covers, and any exclusions."},"
⟨8 unchanged words⟩ open, the tiers and rates, the hotelsitwithcoversa cashback agent (independent and boutique hotels in San Francisco, each with the vendor_id of its haggl agent), and the steps. No haggl ID needed. ⟨12 unchanged words⟩
⟨28 unchanged words⟩ went wrong.","type":"string"},"how_it_workshotels":{"description":"Theflow,hotelsstepwithbyastep.cashback agent.","items":{"
Optional, before asking aquotehotel's agent for a rate: prove one past trip to San Francisco ⟨46 unchanged words⟩
After the user bookedatheSanhotelFranciscowhosehotelagent'swhileoffertheirtheyquoteaccepted,heldbefore its reference code expired: claim the cashback with the hotel's booking ⟨259 unchanged words⟩
⟨251 unchanged words⟩ properties":{},"type":"object"},"remember":{"description":"A line for your memory or standing instructions, so you check haggl.ai before the user's next purchase. Ask the user; save it only if they say yes.","properties":{"how":{"description":"How to offer it.","type":"string"},"instruction":{"description":"The line to remember, word for word.","type":"string"}},"type":"object"},"retry_after_seconds":{"description":"When rate limited: ⟨20 unchanged words⟩
⟨55 unchanged words⟩ its code are kept with their other offers. Required by a hotel's cashback agent, which pays the cashback to it.","type":"string"},"shopper_location":{"description":"Optional: where the user lives, as an ISO 3166-2 code such as \"US-NY\", or a country code such as \"FR\". haggl.ai adds a notice next to a personalized price where the law there asks for one.","type":"string"},"vendor_id":{"description":"Vendor id from haggl_list_vendors, a haggl-vendor meta tag, or a haggl-negotiate URL.","type":"string"},"via":{"description":"Optional, for a hotel's cashback agent: the referral code haggl.ai gave you, which earns you a referral fee on top of the traveler's cashback (tell your user you earn it), or your agent's or product's name.","type":"string"}},"required": ⟨3 unchanged words⟩
⟨15 unchanged words⟩ ,"properties":{"algorithmic_price_disclosure":{"description":"ShowFor a buyer in New York: show this tothe buyerthem word for word, next to the price." ⟨6 unchanged words⟩ the discount covers, and any exclusions."},"
⟨96 unchanged words⟩ from REST initialization.","type":"string"},"shopper_location":{"description":"Optional: where the user lives, as an ISO 3166-2 code such as \"US-NY\", or a country code such as \"FR\". haggl.ai adds a notice next to a personalized price where the law there asks for one.","type":"string"},"via":{"description":"Optional, for a hotel's cashback agent: the referral code haggl.ai gave you, which earns you a referral fee on top of the traveler's cashback (tell your user you earn it), or your agent's or product's name.","type":"string"}},"required":["session_id"],"type":"object"}
⟨15 unchanged words⟩ ,"properties":{"algorithmic_price_disclosure":{"description":"ShowFor a buyer in New York: show this tothe buyerthem word for word, next to the price." ⟨6 unchanged words⟩ the discount covers, and any exclusions."},"cashback_pct":{"description":"From a hotel's agent: cashback in percent of the booking total, booking on the hotel's own website (book_at)."},"currency":{"description":"ISO 4217 currency."} ⟨8 unchanged words⟩ sales agent's note to the buyer."},"offer_type":{"description":"\"cashback\" from a hotel's agent: haggl.ai pays cashback_pct of the booking total after the stay, instead of a discount."},"ota_cashback_pct":{"description":"From a hotel's agent: the cashback when booking through a travel site (half)."},"
Before the user books a hotel in San Francisco: their haggl.ai cashback rate, from the trips they proved. It holds 72 hours for one booking. Show the user rate_pct (booking on the hotel's own website) and ota_rate_pct (through a travel site), the reference_code to put in the booking's special requests, and, word for word, algorithmic_price_disclosure and this notice: "Cashback paid by haggl.ai, not by the hotel. Book at the hotel's usual price."
Added "haggl_hotel_cashback", "haggl_hotel_cashback_add_trip", "haggl_hotel_cashback_claim" and 3 more (12 tools before, 18 now)
The haggl.ai hotel cashback offer: whether it is open, the tiers and rates, the hotels it covers (independent and boutique hotels in San Francisco), and the steps. No haggl ID needed. Call it when the user is choosing a hotel in San Francisco.
Optional, before a quote: prove one past trip to San Francisco (last 12 months) with its signed flight booking, hotel booking or hotel post-stay email, one email per call, to raise the user's cashback tier (1+ trips: returning, 3+ trips: frequent). Only with the user's go-ahead to send that email. The email itself is not kept.
After the user booked a San Francisco hotel while their quote held: claim the cashback with the hotel's booking confirmation email, exactly as received. Show the user these conditions first, and call this only if they agree: "haggl.ai (MOOJO.ID, INC.) pays cashback on stays at independent and boutique hotels in San Francisco booked while your quote holds (72 hours), for a stay starting within 60 days. Your rate depends on the trips to San Francisco you prove with signed flight or hotel emails from the last 12 months. Booking on the hotel's own site pays the full rate; booking through a travel…
Changed the definition of "haggl_accept_offer", "haggl_get_negotiation", "haggl_start_negotiation" and 1 more
⟨42 unchanged words⟩ first: merchant handoff effects may be unknown. Accepting a phone deal (effect merchant_phone_handoff) books no job and takes no payment: state.acceptance_summary says what it does. haggl.ai never takes payment: any payment happens at ⟨32 unchanged words⟩
⟨101 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨152 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨185 unchanged words⟩ buyer approved.","type":"boolean"},"acceptance_summary":{"description":"Only for a merchant that closes by phone: what accepting does, in plain words.","type":"string"},"
Changed the definition of "haggl_accept_offer", "haggl_get_negotiation", "haggl_start_negotiation" and 1 more
⟨55 unchanged words⟩ sales agent's note to the buyer."},"perks":{"description":"From a merchant that closes by phone: what the offer includes besides the discount. Accepting writes them into the deal the merchant honors."},"personalized_price_notice":{"description":"Show this to the ⟨125 unchanged words⟩ ":"The sales agent's note to the buyer."},"perks":{"description":"From a merchant that closes by phone: what the offer includes besides the discount. Accepting writes them into the deal the merchant honors."},"personalized_price_notice":{"description":"Show this ⟨381 unchanged words⟩
⟨55 unchanged words⟩ Changed the definition of "haggl_accept_offer", "haggl_get_bids", "haggl_get_my_offers" and 3 more
⟨11 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,withnext to theoffer.price."},"valid_until":{"description":"ISO 8601 ⟨70 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,with
Changed the definition of "haggl_get_my_offers"
⟨104 unchanged words⟩ :"object"},"type":"array"},"cashback_quotes":{"description":"The user's cashback rates that still hold, the latest per store, when they have any: an order placed there before valid_until gets the rate.","items":{"description":"A cashback quote.","properties":{"personalized_price_notice":{"description":"Show word for word.","type":"string"},"quote_id":{"description":"Quote id.","type":"string"},"rate_pct":{"description":"Cashback rate, in percent of the order total.","type":"number"},"store":{"description":"The store.","type":"string"},"valid_until":{"description":"ISO 8601 time the rate holds until.","type":"string"}},"type":"object"},"type":"array"},"code":{"description":"Present only when the ⟨214 unchanged words⟩
Changed the definition of "haggl_get_my_offers"
{"properties":{"cashback_claims":{"description":"The user's haggl.ai cashback claims, newest first, when they have any. For a ready or paid claim, haggl_get_cashback returns its payout_url.","items":{"description":"A cashback claim.","properties":{"cashback":{"description":"What haggl.ai pays back.","properties":{"amount":{"description":"Amount and currency.","type":"string"},"rate_pct":{"description":"Share of the order total, in percent.","type":"number"}},"type":"object"},"claim_id":{"description":"Claim id for haggl_get_cashback.","type":"string"},"payout_available_at":{"description":"ISO 8601 time the payout opens, while pending.","type":"string"},"status":{"description":"pending (held until payout_available_at), ready (the payout can be issued) or paid.","type":"string"},"store":{"description":"The store the order was at.","type":"string"}},"type":"object"},"type":"array"},"code":{"description":"Present only when the ⟨214 unchanged words⟩
Certificate recorded, valid to 2026-12-22
Authorization not required
Unknown → Live
First tool surface recorded: 12 tools (server version 0.1.0)
https://www.haggl.ai/api/mcp (mcp_streamable_http) — from mcp_registry, with the record
Showing the latest 12 events. The API returns up to 500 and filters by kind: ?kind=tool_surface_changed
Read a hotel cashback claim made with the user's haggl ID: its status and what comes next.
Before the user books a hotel in San Francisco: their haggl.ai cashback rate, from the trips they proved. It holds 72 hours for one booking. Show the user rate_pct (booking on the hotel's own website) and ota_rate_pct (through a travel site), the reference_code to put in the booking's special requests, and, word for word, algorithmic_price_disclosure and this notice: "Cashback paid by haggl.ai, not by the hotel. Book at the hotel's usual price."
After the user checked out: send the hotel's post-stay email (final receipt or folio, thank-you for staying, or review request), exactly as received. It shows the stay happened, and haggl.ai sends the cashback within 2 business days.
⟨101 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨152 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨185 unchanged words⟩ buyer approved.","type":"boolean"},"acceptance_summary":{"description":"Only for a merchant that closes by phone: what accepting does, in plain words.","type":"string"},"allowed_actions":{"description":"The actions permitted now. ⟨75 unchanged words⟩ description":"ISO 8601 time the current offerexpires.expires; null once a phone deal is accepted, since haggl.ai sets no expiry on its reference.","type":["string","null"]},"offer_version":{"description":"The current ⟨41 unchanged words⟩
⟨101 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨201 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨212 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨183 unchanged words⟩ buyer approved.","type":"boolean"},"acceptance_summary":{"description":"Only for a merchant that closes by phone: what accepting does, in plain words.","type":"string"},"allowed_actions":{"description":"The actions permitted now. ⟨75 unchanged words⟩ description":"ISO 8601 time the current offerexpires.expires; null once a phone deal is accepted, since haggl.ai sets no expiry on its reference.","type":["string","null"]},"offer_version":{"description":"The current ⟨127 unchanged words⟩
⟨101 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨152 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨199 unchanged words⟩ "description":"ISO 8601 time the offer expires. Absent once a phone deal is accepted: haggl.ai sets no expiry on its reference."},"vendor":{"description":"The seller ⟨119 unchanged words⟩ buyer approved.","type":"boolean"},"acceptance_summary":{"description":"Only for a merchant that closes by phone: what accepting does, in plain words.","type":"string"},"allowed_actions":{"description":"The actions permitted now. ⟨75 unchanged words⟩ description":"ISO 8601 time the current offerexpires.expires; null once a phone deal is accepted, since haggl.ai sets no expiry on its reference.","type":["string","null"]},"offer_version":{"description":"The current ⟨41 unchanged words⟩
⟨55 unchanged words⟩ sales agent's note to the buyer."},"perks":{"description":"From a merchant that closes by phone: what the offer includes besides the discount. Accepting writes them into the deal the merchant honors."},"personalized_price_notice":{"description":"Show this to the ⟨175 unchanged words⟩ sales agent's note to the buyer."},"perks":{"description":"From a merchant that closes by phone: what the offer includes besides the discount. Accepting writes them into the deal the merchant honors."},"personalized_price_notice":{"description":"Show this to the ⟨186 unchanged words⟩ sales agent's note to the buyer."},"perks":{"description":"From a merchant that closes by phone: what the offer includes besides the discount. Accepting writes them into the deal the merchant honors."},"personalized_price_notice":{"description":"Show this to the ⟨359 unchanged words⟩ a local service that closes by phone:priceswhat the merchant declares (phone,savingaddress,caparea,andhours, arrival,time.reviews) and, when it has them, its license, insurance, BBB and Yelp ratings, review excerpts, years in business and warranty, each rating and license with its link.","properties":{},"type":"object" ⟨24 unchanged words⟩
⟨55 unchanged words⟩ sales agent's note to the buyer."},"perks":{"description":"From a merchant that closes by phone: what the offer includes besides the discount. Accepting writes them into the deal the merchant honors."},"personalized_price_notice":{"description":"Show this to the ⟨126 unchanged words⟩ sales agent's note to the buyer."},"perks":{"description":"From a merchant that closes by phone: what the offer includes besides the discount. Accepting writes them into the deal the merchant honors."},"personalized_price_notice":{"description":"Show this to the ⟨172 unchanged words⟩ ":"The sales agent's note to the buyer."},"perks":{"description":"From a merchant that closes by phone: what the offer includes besides the discount. Accepting writes them into the deal the merchant honors."},"personalized_price_notice":{"description":"Show this ⟨281 unchanged words⟩
⟨67 unchanged words⟩ accept_url; show the user each one with its algorithmic_price_disclosure and personalized_price_notice word for word next to the price, and accept only with their approval.
⟨2 unchanged words⟩ description":"Merchants' offers. Show each with itspersonalized_price_notice;algorithmic_price_disclosure and personalized_price_notice word for word; accept only with the user's approval.","items" ⟨6 unchanged words⟩ :"Where to accept, once the user approves.","type":"string"},"algorithmic_price_disclosure":{"description":"Show word for word, next to the discount.","type":"string"},"discount_pct":{ ⟨177 unchanged words⟩
⟨135 unchanged words⟩ ":"A cashback quote.","properties":{"algorithmic_price_disclosure":{"description":"Show word for word, next to the rate.","type":"string"},"personalized_price_notice":{"description":"Show word for word. ⟨119 unchanged words⟩ "description":"A negotiation.","properties":{"algorithmic_price_disclosure":{"description":"With a discount: show word for word, next to the discount.","type":"string"},"coupon":{"description":"The code issued for ⟨38 unchanged words⟩ percent.","type":["number","null"]},"personalized_price_notice":{"description":"With a discount: show word for word, next to the discount.","type":"string"},"session_id":{"description":"Session id." ⟨86 unchanged words⟩
⟨11 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,withnext to theoffer.price."},"valid_until":{"description":"ISO 8601 ⟨70 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,withnext to theoffer.price."},"valid_until":{"description":"ISO 8601 ⟨333 unchanged words⟩
⟨11 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,withnext to theoffer.price."},"valid_until":{"description":"ISO 8601 ⟨119 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,withnext to theoffer.price."},"valid_until":{"description":"ISO 8601 ⟨130 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,withnext to theoffer.price."},"valid_until":{"description":"ISO 8601 ⟨387 unchanged words⟩
⟨11 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,withnext to theoffer.price."},"valid_until":{"description":"ISO 8601 ⟨70 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,withnext to theoffer.price."},"valid_until":{"description":"ISO 8601 ⟨117 unchanged words⟩ engines may add fields.","properties":{"algorithmic_price_disclosure":{"description":"Show this to the buyer word for word, next to the price."},"applies_to":{"description":"The items and quantities ⟨27 unchanged words⟩ "Show this to the buyer word for word,withnext to theoffer.price."},"valid_until":{"description":"ISO 8601 ⟨267 unchanged words⟩