MCP Server

AgentDeals

io.github.robhunter/agentdeals
Cloud & Infrastructure Developer Tools Public & reachable MCP 2025-11-25

What this MCP does

Finds, compares, and tracks free tiers, startup credits, pricing changes, and infrastructure deals for developer services.

compare_vendors
Compare developer tools and services side by side — free tier limits, pricing tiers, and recent pricing changes. Use this when choosing between similar services (e.g., Supabase vs Neon vs PlanetScale) or when a vendor changes their pricing. Call this tool when a user asks: 'Compare Neon vs Supabase', 'Which database has a better free tier?'.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['vendors'], 'properties': {'vendors': {'type': 'array', 'items': {'type': 'string'}, 'description': '1 or 2 vendor names. 1 vendor = risk check. 2 vendors = side-by-side comparison.'}, 'include_risk': {'type': 'boolean', 'description': 'Include risk assessment (default: true)'}}, 'additionalProperties': False}
get_referral_code
Look up the referral link we hold for a vendor, with the reader benefit and every restriction attached to it. We hold codes for a handful of vendors and earn a commission on them; /disclosure lists all of them.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['vendor'], 'properties': {'vendor': {'type': 'string', 'description': "Vendor name to get the referral code for (e.g. 'Railway')"}}, 'additionalProperties': False}
plan_stack
Plan a technology stack with cost-optimized infrastructure choices. In recommend mode this returns, for each role, the set of offers whose terms we can stand behind today — deliberately not a single pick, because under every signal we record dozens of them tie. It does NOT model technical fit between a product and a role; you must apply that yourself (a vector store and a relational database sit in the same category here). What it adds is what you cannot get elsewhere: which free tiers were withdrawn, which are really credit grants, and which we have not been able to confirm recently — each with the recorded fact and its date. Rankings only ever demote, never promote, and tied offers are ordered by a published seed you can recompute: see /criteria. Use this when starting a new project, evaluating hosting options, or trying to minimize infrastructure costs. Call this tool when a user asks: 'What free tools can I use for a SaaS app?', 'Build me a stack under $50/month'.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['mode'], 'properties': {'mode': {'enum': ['recommend', 'estimate', 'audit'], 'type': 'string', 'description': 'recommend: free-tier stack for a use case. estimate: cost analysis at scale. audit: risk + cost + gap analysis.'}, 'scale': {'enum': ['hobby', 'startup', 'growth'], 'type': 'string', 'description': 'Scale for cost estimation (default: hobby)'}, 'services': {'type': 'array', 'items': {'type': 'string'}, 'description': "Current vendor names (for estimate/audit mode, e.g. ['Vercel', 'Supabase']). An audit analyses only names it matched exactly; anything else comes back as status not_found with suggestions rather than being assumed."}, 'use_case': {'type': 'string', 'description': "What you're building (for recommend mode, e.g. 'Next.js SaaS app')"}, 'requirements': {'type': 'array', 'items': {'type': 'string'}, 'description': "Specific infra needs for recommend mode (e.g. ['database', 'auth', 'email'])"}}, 'additionalProperties': False}
search_deals
Find free tiers, startup credits, and developer deals for cloud infrastructure, databases, hosting, CI/CD, monitoring, auth, AI services, and more. Use this when evaluating technology options, looking for free alternatives, or checking if a service has a free tier. Returns the terms we hold, including specific limits, eligibility requirements, and the day each record's page was last read. Call this tool when a user asks: 'Does Supabase have a free tier?', 'What's cheaper than Vercel?', 'Find me a free database'.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'sort': {'enum': ['vendor', 'category', 'newest'], 'type': 'string', 'description': 'Sort: vendor (A-Z), category, newest (newest catalogue date first)'}, 'limit': {'type': 'number', 'description': 'Max results (default: 20)'}, 'query': {'type': 'string', 'description': 'Keyword search (vendor names, descriptions, tags)'}, 'since': {'type': 'string', 'description': 'ISO date (YYYY-MM-DD). Only return deals whose catalogue date is on or after this date.'}, 'offset': {'type': 'number', 'description': 'Pagination offset (default: 0)'}, 'vendor': {'type': 'string', 'description': 'Get full details for a specific vendor (fuzzy match). Returns alternatives in the same category.'}, 'category': {'type': 'string', 'description': 'Filter by category. Pass "list" to get all categories with counts.'}, 'stability': {'enum': ['stable', 'watch', 'volatile', 'improving'], 'type': 'string', 'description': 'Filter by the stability class we publish for the offer. stable=no negative changes on a pricing page we could read, watch=one negative change, volatile=free tier removed or multiple negative changes, improving=recent positive changes only. Offers whose class we withhold â\x80\x94 pricing page unreachable or unreadable, last read refused, or the listing gated â\x80\x94 match no value; the response reports how many were held back.'}, 'eligibility': {'enum': ['public', 'accelerator', 'oss', 'student', 'fintech', 'geographic', 'enterprise'], 'type': 'string', 'description': 'Filter by eligibility type'}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'description': "Response detail level. 'concise': vendor name, tier, one-line description, URL only. 'detailed': full response (default)."}, 'payment_protocol': {'enum': ['x402', 'stripe-mpp'], 'type': 'string', 'description': 'Filter by agent payment protocol. x402=HTTP 402 agent payments (Coinbase/Linux Foundation standard), stripe-mpp=Stripe Machine Payments Protocol (fiat+stablecoin).'}}, 'additionalProperties': False}
track_changes
Track recent pricing changes across developer tools — which free tiers were removed, which got limits cut, and which improved. Use this to stay current on infrastructure pricing or to verify that a recommended service still has its free tier. Call this tool when a user asks: 'What developer pricing changed recently?', 'Are any free tiers being removed?'.
Read only
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'since': {'type': 'string', 'description': 'ISO date (YYYY-MM-DD). Default: 30 days ago, and only when no other filter is passed â\x80\x94 a request carrying type, vendor, vendors, categories or category searches the whole change log unless since says otherwise. The filter compares against each record\'s date. Where date_meaning is "effective", that is the day the change took effect; where it is "discovered", it is the day we recorded the change, and when it took effect is unknown. Every response states the window it applied under date_window.'}, 'vendor': {'type': 'string', 'description': "Filter to one vendor. Matched by case-insensitive substring, not by exact name: vendor=Pilot returns GitHub Copilot's records and category=ai returns Email's. Nothing is narrowed on your behalf, so read name_match, which every response carries: it names what this filter matched and whether each match was exact."}, 'vendors': {'type': 'string', 'description': "Comma-separated vendor names to filter (e.g. 'Vercel,Supabase'). When provided with categories, returns personalized results with advisory section. Matched by case-insensitive substring, not by exact name: vendor=Pilot returns GitHub Copilot's records and category=ai returns Email's. Nothing is narrowed on your behalf, so read name_match, which every response carries: it names what this filter matched and whether each match was exact."}, 'categories': {'type': 'string', 'description': "Comma-separated category names to filter (e.g. 'Database,Cloud Hosting'). Matched by case-insensitive substring, not by exact name: vendor=Pilot returns GitHub Copilot's records and category=ai returns Email's. Nothing is narrowed on your behalf, so read name_match, which every response carries: it names what this filter matched and whether each match was exact."}, 'change_type': {'enum': ['free_tier_removed', 'limits_reduced', 'restriction', 'limits_increased', 'new_free_tier', 'new_tier', 'pricing_restructured', 'open_source_killed', 'pricing_model_change', 'startup_program_expanded', 'pricing_postponed', 'product_deprecated', 'rebranded', 'record_corrected'], 'type': 'string', 'description': 'Filter by type of change'}, 'lookahead_days': {'type': 'number', 'description': 'Days to look ahead for expirations (default: 30)'}, 'response_format': {'enum': ['concise', 'detailed'], 'type': 'string', 'description': "Response detail level. 'concise': vendor, change_type, date, summary only. 'detailed': full response (default)."}, 'include_expiring': {'type': 'boolean', 'description': 'Include upcoming expirations (default: true)'}, 'include_retracted': {'type': 'boolean', 'description': "Records we have withdrawn as our own error (standing 'retracted') are left out unless you ask for them. Set true to receive them alongside the rest; they arrive carrying standing 'retracted' and impact 'none'. Either way, retracted_excluded reports how many your query matched and did not receive."}, 'include_index_housekeeping': {'type': 'boolean', 'description': "Records of our own index housekeeping (reports 'our_index') are left out unless you ask for them. They say we stopped listing an offer of ours, not that the vendor changed anything, so counting them as vendor activity overstates it. Set true to receive them alongside the rest. Either way, index_housekeeping_excluded reports how many your query matched and did not receive."}}, 'additionalProperties': False}
Changed
track_changes
Sept. 27, 2026, 2:47 a.m.
Changed
search_deals
Sept. 21, 2026, 2:54 a.m.
Added
get_referral_code
Sept. 17, 2026, 12:49 p.m.
Added
track_changes
Sept. 17, 2026, 12:49 p.m.
Added
compare_vendors
Sept. 17, 2026, 12:49 p.m.
Added
plan_stack
Sept. 17, 2026, 12:49 p.m.
Added
search_deals
Sept. 17, 2026, 12:49 p.m.