AI and MCP
Connect AI clients over MCP
Ask an AI assistant about your workspace's software spending in plain language. Saver Option Business runs one remote MCP server that compatible AI clients can connect to after you sign in and approve.
What MCP is
The Model Context Protocol (MCP) is an open standard that lets AI applications call tools on other services. An AI client that supports remote MCP servers can connect to Saver Option Business, and then answer questions such as “Which subscriptions renew next month?” by calling the tools below with your permission.
Server URL
The endpoint is https://<your Saver Option domain>/mcp. The intended production endpoint is https://www.saveroption.com/mcp. Signed-in members can copy it from Settings → AI clients (MCP).
| Details | |
|---|---|
| Transport | Streamable HTTP. Clients POST JSON-RPC messages and get JSON responses. The server is stateless and offers no event stream (GET returns 405). |
| Protocol versions | 2025-11-25, 2025-06-18 and 2025-03-26. |
| Capabilities | Tools only. |
How sign-in works
- You add the server URL in your AI client.
- The client finds Saver Option's sign-in server and registers itself.
- Your browser opens Saver Option. You sign in with Google if needed.
- On the consent screen you choose one workspace and Read only or Read and change. The screen shows the app's self-declared name and the address it will return you to.
- You're sent back to the client, which can now call tools within your role.
| Standard | Where |
|---|---|
| OAuth 2.1 authorization code flow with PKCE (S256 only) | /business/oauth/authorize |
| Protected resource metadata (RFC 9728) | /.well-known/oauth-protected-resource/mcp |
| Authorization server metadata (RFC 8414) | /.well-known/oauth-authorization-server |
| Dynamic client registration (RFC 7591) | /oauth/register |
| Token endpoint (authorization_code, refresh_token) | /oauth/token |
| Token revocation (RFC 7009) | /oauth/revoke |
Unauthenticated requests get 401 with a WWW-Authenticate header pointing at the protected resource metadata. Access tokens last one hour; refresh tokens last 30 days and rotate on every use. Registered redirect URIs must use HTTPS, or HTTP on a loopback address (localhost or 127.0.0.1, any port).
Scopes
| Scope | Allows |
|---|---|
| business.read | Every read tool, within your role. |
| business.write | Also create_subscription and update_subscription — only when you chose “Read and change” and your role is Owner, Admin or Finance (members: records they own). |
Changes need your confirmation
The change tools work in two steps. A call with confirm: false (the default) returns the interpreted details or a before/after comparison, with warnings, and saves nothing. The client should show you the preview; only a second call with confirm: true saves it. Repeating the same confirmed call doesn't create a duplicate.
What it can't do
- Cancel, renew or buy subscriptions, make payments, or change anything at a vendor.
- Delete records, manage members or change workspace settings.
- Run arbitrary queries, SQL or code — each tool has a fixed input schema that the server validates.
- Reach any workspace other than the one you approved.
Tools
Generated from the server's tool registry.
list_subscriptionsList subscriptions. List the workspace's software subscriptions with price, billing interval, monthly/annual equivalents, renewal date, seats, owner and department. Filter by status, category, department, vendor, billing interval, currency or a search term; sort by cost, renewal date or name. Paginated (limit/offset).
Inputs:statussearchcategorydepartmentvendorbilling_intervalcurrencyinclude_archivedsortlimitoffsetget_subscription_detailsGet subscription details. Full details of one subscription: terms, seats, renewal decision, recorded price changes, recent recorded payments and open savings opportunities for it.
Inputs:subscription_id*get_spend_summaryGet spend summary. The workspace's software spend at a glance: monthly and annualized run-rate per currency, active and trial counts, recorded payments in the last 30 and 365 days, renewals in the next 30 days, license utilization, and potential vs realized savings. Each figure states whether it's actual, an estimate or a projection.
Inputs:currencyget_upcoming_renewalsGet upcoming renewals. Subscriptions renewing in the next N days (default 30, max 365), with expected amount, auto-renew flag, cancellation deadline and renewal decision, plus cancellation deadlines that fall in the window. Totals are a projection at current prices.
Inputs:daysinclude_cancellation_deadlinesget_spending_by_categoryGet spending by category. Monthly equivalent spend per software category, per currency, with share of total and subscription counts.
Inputs:currencylimitget_spending_by_vendorGet spending by vendor. Monthly equivalent spend per vendor, per currency, with share of total and subscription counts.
Inputs:currencylimitfind_duplicate_toolsFind duplicate or overlapping tools. Potential duplicate software records (same website, very similar names, same vendor and category) and categories with several active tools that usually do the same job. These are for the user to review — never confirmed duplicates; ask the user whether the tools serve the same purpose.
Inputs: noneget_savings_opportunitiesGet savings opportunities. Savings opportunities found by Spend Detective's rules (unused per-seat licenses, underutilized plans, potential overlap, high-cost plans, annual billing, open-source alternatives, renewals to review, matching Saver Option deals), each with evidence, an estimate only where the workspace's own data supports one, confidence and the recommended action. Potential and realized savings are reported separately.
Inputs:statustypelimitanalyze_saas_spendingAnalyze SaaS spending. A structured analysis to answer “where should we start reducing our software budget?”: run-rate per currency, the largest subscriptions and their share, concentration, items needing attention (high-cost renewals soon, cancellation deadlines, unused seats, missing prices/dates), the top savings opportunities with evidence, and data-quality gaps. All figures come from the workspace's own records.
Inputs: nonecompare_software_alternativesCompare software alternatives. For one of the workspace's subscriptions or software records: its current cost (normalized estimate) and alternatives from the Saver Option catalog that cover the same job, with functional notes and pricing evidence only where the catalog states them, related live deals, and a general migration checklist. Cost differences are only given when both prices are known on a comparable basis.
Inputs:subscription_idsoftware_idlimitsearch_dealsSearch Saver Option deals. Search live listings in the Saver Option Deals marketplace (discounts, credits, startup programs, lifetime deals, free plans, open-source alternatives). Returns only what the listings state — discount text, price and expiry are null when the listing doesn't give them — with verification status and links to the deal page.
Inputs:querycategoryoffer_typelimitoffsetget_deal_detailsGet deal details. Full details of one Saver Option deal listing by ID or slug (from search_deals): terms, eligibility, how to redeem, expiry, verification method and date, and the source page.
Inputs:deal_id*get_deals_for_my_softwareFind deals for our software. Live Saver Option listings for the tools this workspace already records (same product), tools with no listing right now, and listings for other products in the same categories (possible alternatives).
Inputs: nonegenerate_savings_reportGenerate a savings report. Creates and saves a dated savings report for the workspace (spend run-rate, potential savings by type with evidence, confirmed savings, renewals in the next N days, data-quality notes and method) and returns it with a link the user can open or share inside Saver Option.
Inputs:titlerenewal_dayscreate_subscriptionChanges recordsAdd a subscription. Adds a subscription record (creating the software in the inventory if it isn't there). Two steps: call with confirm false (default) to get the interpreted details and warnings — nothing is saved — show them to the user, then call again with the same fields and confirm true. Ask the user for missing details instead of guessing prices or dates. This only records the subscription in Saver Option; it never buys or changes anything at the vendor.
Inputs:software_name*vendorcategorywebsiteplanpricecurrencybilling_intervalcustom_interval_countcustom_interval_unitpricing_modelseats_purchasedseats_in_usestart_datenext_renewal_dateauto_renewcancellation_deadlinecontract_end_datestatusdepartmentownernotesconfirmupdate_subscriptionChanges recordsUpdate a subscription. Changes fields of an existing subscription record (price, billing, dates, seats, status, owner, department, notes). Two steps: confirm false (default) returns a before/after preview and saves nothing; call again with confirm true after the user agrees. Fields you leave out stay as they are. Changing status only updates the record — it never cancels anything at the vendor.
Inputs:subscription_id*planpricecurrencybilling_intervalcustom_interval_countcustom_interval_unitpricing_modelseats_purchasedseats_in_usestart_datenext_renewal_dateauto_renewcancellation_deadlinecontract_end_datestatusdepartmentownernotesconfirm
| Tool | What it does | Inputs (* required) |
|---|---|---|
list_subscriptions | List subscriptionsList the workspace's software subscriptions with price, billing interval, monthly/annual equivalents, renewal date, seats, owner and department. Filter by status, category, department, vendor, billing interval, currency or a search term; sort by cost, renewal date or name. Paginated (limit/offset). | statussearchcategorydepartmentvendorbilling_intervalcurrencyinclude_archivedsortlimitoffset |
get_subscription_details | Get subscription detailsFull details of one subscription: terms, seats, renewal decision, recorded price changes, recent recorded payments and open savings opportunities for it. | subscription_id* |
get_spend_summary | Get spend summaryThe workspace's software spend at a glance: monthly and annualized run-rate per currency, active and trial counts, recorded payments in the last 30 and 365 days, renewals in the next 30 days, license utilization, and potential vs realized savings. Each figure states whether it's actual, an estimate or a projection. | currency |
get_upcoming_renewals | Get upcoming renewalsSubscriptions renewing in the next N days (default 30, max 365), with expected amount, auto-renew flag, cancellation deadline and renewal decision, plus cancellation deadlines that fall in the window. Totals are a projection at current prices. | daysinclude_cancellation_deadlines |
get_spending_by_category | Get spending by categoryMonthly equivalent spend per software category, per currency, with share of total and subscription counts. | currencylimit |
get_spending_by_vendor | Get spending by vendorMonthly equivalent spend per vendor, per currency, with share of total and subscription counts. | currencylimit |
find_duplicate_tools | Find duplicate or overlapping toolsPotential duplicate software records (same website, very similar names, same vendor and category) and categories with several active tools that usually do the same job. These are for the user to review — never confirmed duplicates; ask the user whether the tools serve the same purpose. | none |
get_savings_opportunities | Get savings opportunitiesSavings opportunities found by Spend Detective's rules (unused per-seat licenses, underutilized plans, potential overlap, high-cost plans, annual billing, open-source alternatives, renewals to review, matching Saver Option deals), each with evidence, an estimate only where the workspace's own data supports one, confidence and the recommended action. Potential and realized savings are reported separately. | statustypelimit |
analyze_saas_spending | Analyze SaaS spendingA structured analysis to answer “where should we start reducing our software budget?”: run-rate per currency, the largest subscriptions and their share, concentration, items needing attention (high-cost renewals soon, cancellation deadlines, unused seats, missing prices/dates), the top savings opportunities with evidence, and data-quality gaps. All figures come from the workspace's own records. | none |
compare_software_alternatives | Compare software alternativesFor one of the workspace's subscriptions or software records: its current cost (normalized estimate) and alternatives from the Saver Option catalog that cover the same job, with functional notes and pricing evidence only where the catalog states them, related live deals, and a general migration checklist. Cost differences are only given when both prices are known on a comparable basis. | subscription_idsoftware_idlimit |
search_deals | Search Saver Option dealsSearch live listings in the Saver Option Deals marketplace (discounts, credits, startup programs, lifetime deals, free plans, open-source alternatives). Returns only what the listings state — discount text, price and expiry are null when the listing doesn't give them — with verification status and links to the deal page. | querycategoryoffer_typelimitoffset |
get_deal_details | Get deal detailsFull details of one Saver Option deal listing by ID or slug (from search_deals): terms, eligibility, how to redeem, expiry, verification method and date, and the source page. | deal_id* |
get_deals_for_my_software | Find deals for our softwareLive Saver Option listings for the tools this workspace already records (same product), tools with no listing right now, and listings for other products in the same categories (possible alternatives). | none |
generate_savings_report | Generate a savings reportCreates and saves a dated savings report for the workspace (spend run-rate, potential savings by type with evidence, confirmed savings, renewals in the next N days, data-quality notes and method) and returns it with a link the user can open or share inside Saver Option. | titlerenewal_days |
create_subscriptionChanges records | Add a subscriptionAdds a subscription record (creating the software in the inventory if it isn't there). Two steps: call with confirm false (default) to get the interpreted details and warnings — nothing is saved — show them to the user, then call again with the same fields and confirm true. Ask the user for missing details instead of guessing prices or dates. This only records the subscription in Saver Option; it never buys or changes anything at the vendor. | software_name*vendorcategorywebsiteplanpricecurrencybilling_intervalcustom_interval_countcustom_interval_unitpricing_modelseats_purchasedseats_in_usestart_datenext_renewal_dateauto_renewcancellation_deadlinecontract_end_datestatusdepartmentownernotesconfirm |
update_subscriptionChanges records | Update a subscriptionChanges fields of an existing subscription record (price, billing, dates, seats, status, owner, department, notes). Two steps: confirm false (default) returns a before/after preview and saves nothing; call again with confirm true after the user agrees. Fields you leave out stay as they are. Changing status only updates the record — it never cancels anything at the vendor. | subscription_id*planpricecurrencybilling_intervalcustom_interval_countcustom_interval_unitpricing_modelseats_purchasedseats_in_usestart_datenext_renewal_dateauto_renewcancellation_deadlinecontract_end_datestatusdepartmentownernotesconfirm |
Tools marked “Changes records” appear only on connections approved with read and change access.
AI client compatibility
The server targets Claude, ChatGPT, Gemini and Grok. A client is listed as verified only after sign-in, read tools and (where supported) write tools have been tested with this server. Until then, no client-specific setup steps are published.
| Client | Status | Last verified | Read tools | Write tools | What the vendor documents |
|---|---|---|---|---|---|
| Claude | Verified | Oct 24, 2026 | Verified: sign-in through Saver Option's consent screen worked, the read tools were listed, and list_subscriptions, get_spend_summary, get_upcoming_renewals and search_deals returned the connected workspace's data | Available on a “Read and change” connection; every change is previewed first and saved only after you confirm | Anthropic documents custom connectors to remote MCP servers with OAuth sign-in (dynamic client registration or a client ID metadata document) for claude.ai, the Claude desktop and mobile apps and Claude Code. Vendor docs |
| ChatGPT | Verified | Oct 24, 2026 | Verified: sign-in through Saver Option's consent screen and the read tools, answering with the connected workspace's data | Available on a “Read and change” connection; every change is previewed first and saved only after you confirm | OpenAI documents remote MCP servers in ChatGPT's developer mode (beta), with OAuth. Availability, and whether write actions are allowed, depend on the plan and workspace settings. Vendor docs |
| Gemini | Verified | Oct 24, 2026 | Verified: sign-in through Saver Option's consent screen and the read tools, answering with the connected workspace's data | Available on a “Read and change” connection; every change is previewed first and saved only after you confirm | Google documents remote MCP servers over Streamable HTTP with OAuth for the Gemini CLI. Vendor docs |
| Grok | Verified | Oct 24, 2026 | Verified: sign-in through Saver Option's consent screen and the read tools, answering with the connected workspace's data | Available on a “Read and change” connection; every change is previewed first and saved only after you confirm | xAI documents remote MCP tools for its API (Streamable HTTP or SSE servers). Vendor docs |