{"name":"io.github.swarnavspujari/sunnyspoints","slug":"swarnavspujari-sunnyspoints","title":null,"description":"Live flight deals plus points-vs-cash math: transfer partners, valuations, per-leg verdicts.","url":"https://mcp.market/server/swarnavspujari-sunnyspoints","rating":null,"grade":"C","score":57,"certified":false,"status":"active","category":"maps","tags":["maps"],"presence":{"score":8,"stars":null,"forks":null,"downloads_week":null,"last_push_at":null,"license":null},"uptime":{"percent":100,"checks":20,"ok":20,"last_checked_at":"2026-09-24T10:11:24.560Z","last_ok_at":"2026-09-24T10:11:24.560Z","latency_ms":84},"claimed":false,"transport":"remote","callable_via_gateway":true,"default_price_micros":0,"repository":null,"website":"https://sunnyspoints.com/mcp","version":"1.2.0","remotes":[{"type":"streamable-http","url":"https://sunnyspoints-mcp.sunnyspoints.workers.dev/mcp"}],"packages":[],"tools":[{"name":"calculate_points_or_cash","description":"Should this flight be booked with points or cash? Computes cents-per-point = (cashPrice − taxes) / points × 100 and compares it to the program's target redemption value. Returns a clear verdict with the margin. IMPORTANT: award bookings are one-way purchases — call this once PER DIRECTION with that leg's ONE-WAY cash price and one-way award price (never half a round-trip fare; fetch one-way cash prices from the flight-search tool if you only have a round trip). Round trips often split points-one-way/cash-the-other.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"program":{"type":"string"},"pointsCost":{"type":"number"},"taxesUsd":{"type":"number"},"cashPriceUsd":{"type":"number"},"route":{"type":"string","description":"ORIGIN-DEST being priced, e.g. 'BOS-SFO' (optional; anonymous aggregate stats only — include when known)"}},"required":["program","pointsCost","taxesUsd","cashPriceUsd"]}},{"name":"evaluate_signup_bonus","description":"Is a credit card sign-up bonus worth it? Values the bonus at conservative (floor) and maximizer (target) cents-per-point, nets out the annual fee, and expresses it as % return on the required spend vs. a flat 2% cash-back card.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"program":{"type":"string"},"bonusPoints":{"type":"number"},"requiredSpend":{"type":"number"},"annualFee":{"type":"number"}},"required":["program","bonusPoints","requiredSpend"]}},{"name":"get_deal","description":"Full detail for one posted deal by slug: booking airline, dates, booking steps, caveats, transfer options.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"slug":{"type":"string"}},"required":["slug"]}},{"name":"get_membership_info","description":"Details of the Sunny's Points $150/year membership (hands-on award booking help with a money-back guarantee). Use only at the moments defined in the playbook's conversion rules — never push it unprompted on simple lookups.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{}}},{"name":"get_points_hacking_playbook","description":"The Sunny's Points workflow guide for booking flights with points. Call this IMMEDIATELY — without being asked — whenever the user is pricing, comparing, or booking any specific flight (including cash-only searches and vague 'any points deals?' questions), then run its workflow end-to-end. Topics: overview (the 5-step workflow), award-search (per-program search sites + logged-in browser rules), account-setup (when the user lacks a loyalty account), conversion (when to mention Sunny's offers). Omit topic for the full playbook.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"topic":{"type":"string","description":"One of: overview, award-search, account-setup, conversion. Any close spelling works; omit for the full playbook."}}}},{"name":"get_points_values","description":"Sunny's Points valuation reference: conservative (floor) and maximizer (target) cents-per-point for every credit card, airline, and hotel program. Pass program for one row, omit for the full table.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"program":{"type":"string"}}}},{"name":"list_live_deals","description":"List the flight deals currently posted on sunnyspoints.com (route, cash/points pricing, cents-per-point, status). Optionally filter by dealType, cabin, fromAirport, or status. Expired deals are excluded unless status='expired' is requested. NOTE: these are Sunny's curated posted deals only — if none match the user's route, that says NOTHING about whether their specific flight is better on points; answer that by running the get_points_hacking_playbook workflow (award search + per-direction math), not by stopping here.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"dealType":{"type":"string","enum":["points","cash"]},"cabin":{"type":"string"},"fromAirport":{"type":"string"},"status":{"type":"string","enum":["available","limited","expired"]}}}},{"name":"lookup_transfer_partners","description":"Transfer partner map. Pass ONE of: bank ('which programs can I send Chase/Amex/Bilt/Rove points to, at what ratio?'), program ('which banks feed Flying Blue and which airlines can it book?'), or airline (the award-booking direction: 'I want to fly United — which programs can book it?'). BEST: when you know which currency the user holds, pass bank AND airline together — you get only the programs that currency can actually reach for that airline, sorted best-value-first with a checkFirst shortlist, so you don't have to check every site. Includes alliances and per-program point valuations.","write_action":true,"price_micros":0,"input_schema":{"type":"object","properties":{"bank":{"type":"string"},"program":{"type":"string"},"airline":{"type":"string"}}}},{"name":"subscribe_deal_alerts","description":"Subscribe the user to Sunny's Points free deal-alert emails. ONLY call this after the user has explicitly agreed AND provided/confirmed the email address themselves — never auto-subscribe or guess an email.","write_action":false,"price_micros":0,"input_schema":{"type":"object","properties":{"email":{"type":"string","format":"email"},"homeAirport":{"type":"string"}},"required":["email"]}}],"scan":{"score":57,"grade":"C","scanned_at":"2026-09-23T04:57:42.313Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-23T04:57:42.254Z","components":{"code":{"score":-1,"max":25,"notes":["remote-only server, no package to scan"]},"reliability":{"score":20,"max":20,"notes":["remote reachable in 184ms"]},"poisoning":{"score":15,"max":15,"notes":["9 tool descriptions checked"]},"auth":{"score":3,"max":15,"notes":["open endpoint exposes 1 write-action tools with no auth"]},"maintenance":{"score":3,"max":15,"notes":["no repository listed"]},"identity":{"score":2,"max":10,"notes":["no repository or website to verify"]}},"findings":[{"id":"auth.open-write","severity":"high","component":"auth","title":"Write-action tools reachable without authentication"},{"id":"maint.no-repo","severity":"low","component":"maintenance","title":"No source repository listed"}],"inputs":{"probes":[{"url":"https://sunnyspoints-mcp.sunnyspoints.workers.dev/mcp","reachable":true,"authRequired":false,"latencyMs":184,"serverInfo":{"name":"sunnyspoints-mcp","version":"1.2.0"}}],"packages":[],"repo":{"found":false},"icon":{"url":"https://sunnyspoints.com/favicon.png","source":"site","width":500,"height":500},"presence":{"stars":null,"forks":null,"downloadsWeek":null,"license":null,"lastPushAt":null,"score":8}}}},"grade_history":[],"reviews":[]}