{"openapi":"3.1.0","info":{"title":"Subtracker API","version":"0.1.0","description":"A fully local subscription-spend tracking toolkit: normalizes mixed billing cycles to a common monthly/annual spend, breaks it down by category, computes cost-per-use, projects cancellation savings (including invested future value), and a methodology guide for auditing unused subscriptions — zero upstream calls, computed from the numbers you provide.\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://subtracker.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"hr@unifydynamics.com","url":"https://connectorbay.com/subtracker/docs"},"termsOfService":"https://connectorbay.com/subtracker/terms"},"servers":[{"url":"https://subtracker.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/subtracker/docs"},"security":[{},{"bearer":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/spend_summary":{"post":{"operationId":"spend_summary","summary":"Normalizes a mixed list of weekly/monthly/quarterly/annual subscriptions to a common monthly and annual","description":"Normalizes a mixed list of weekly/monthly/quarterly/annual subscriptions to a common monthly and annual\n    figure, reports total spend and a spend-by-category breakdown, and computes cost-per-use for any subscription\n    that includes uses_per_month. Use for \"what am I spending on subscriptions total, by category\", \"what's my\n    cost per use on this gym app I go to twice a month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subscriptions":{"description":"Each item: {name: str, cost: number, billing_cycle: monthly|annual|quarterly|weekly, category?: str, uses_per_month?: number}.","items":{"additionalProperties":true,"type":"object"},"title":"Subscriptions","type":"array"}},"required":["subscriptions"],"title":"spend_summaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/cancellation_savings_projector":{"post":{"operationId":"cancellation_savings_projector","summary":"Computes the monthly/annual savings and remaining spend from cancelling one or more subscriptions out of a","description":"Computes the monthly/annual savings and remaining spend from cancelling one or more subscriptions out of a\n    full list; with invest_return_pct and years also projects the future value of investing those savings monthly\n    instead of spending them (standard ordinary-annuity compounding). Use for \"how much would I save cancelling\n    Netflix and Spotify\", \"if I cancel these and invest the savings at 7% for 5 years, what's that worth\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"subscriptions":{"description":"Each item: {name: str, cost: number, billing_cycle: monthly|annual|quarterly|weekly, category?: str, uses_per_month?: number}.","items":{"additionalProperties":true,"type":"object"},"title":"Subscriptions","type":"array"},"cancel_names":{"description":"Names (from subscriptions) to project cancelling.","items":{"type":"string"},"title":"Cancel Names","type":"array"},"invest_return_pct":{"default":0.0,"description":"If > 0 with years, projects the future value of investing the monthly savings at this annual return, %.","minimum":0,"title":"Invest Return Pct","type":"number"},"years":{"default":0.0,"description":"Time horizon in years for the investment projection.","minimum":0,"title":"Years","type":"number"}},"required":["subscriptions","cancel_names"],"title":"cancellation_savings_projectorArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/audit_methodology_guide":{"post":{"operationId":"audit_methodology_guide","summary":"A hand-written, numbered methodology for auditing and trimming unused subscriptions — inventory, normalize,","description":"A hand-written, numbered methodology for auditing and trimming unused subscriptions — inventory, normalize,\n    score usage, spot overlap and free-trial conversions, rank by savings, downgrade before cancelling, cancel\n    through the real billing channel, and re-audit on a schedule. Use for \"how do I audit my subscriptions\",\n    \"how do I find and cancel subscriptions I don't use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"step":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"A specific step number to look up; omit for the full 10-step guide.","title":"Step"}},"title":"audit_methodology_guideArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/subtracker_glossary":{"post":{"operationId":"subtracker_glossary","summary":"Definitions of common subscription-management terms (subscription creep, cost per use, zombie","description":"Definitions of common subscription-management terms (subscription creep, cost per use, zombie\n    subscription, free-trial-to-paid conversion, tier downgrade, ...). Use for \"what's subscription creep\",\n    \"what's a zombie subscription\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"term":{"anyOf":[{"type":"string"},{"type":"null"}],"default":null,"description":"A specific term to look up; omit to list all.","title":"Term"}},"title":"subtracker_glossaryArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}