# Submo for coding agents

Submo finds recurring charges, tracks renewals, and returns cancellation steps. It does **not** cancel third-party subscriptions. The user completes the cancel with the provider.

## Surfaces

| Surface | URL |
| --- | --- |
| Website | https://submoapp.com |
| Developers | https://submoapp.com/developers |
| OpenAPI | https://submoapp.com/openapi.json |
| Auth walkthrough | https://submoapp.com/auth.md |
| Skill | https://submoapp.com/SKILL.md |
| Hosted MCP | https://api.submoapp.com/mcp |
| Docs MCP | https://api.submoapp.com/mcp/docs |
| REST | https://api.submoapp.com/v1 |
| Source | https://github.com/selimhancakir/submo |

Public research (`GET /v1/plans`, cancel guides, price indexes, catalog) needs no key.

## Auth

1. Discover: `GET https://api.submoapp.com/.well-known/oauth-protected-resource`
2. New member: `POST /agent/identity` with `type=service_auth` and `login_hint` (email). User pays at `verification_uri` (Stripe Checkout). Poll `POST /oauth/token` with `grant_type=urn:workos:agent-auth:grant-type:claim`.
3. Existing member: OAuth `authorization_code` + PKCE `S256` via `/oauth/authorize`.
4. Use `Authorization: Bearer submo_live_…`

Default key scopes: `research`, `checkout`, `account:read`, `subscriptions:read`, `subscriptions:write`, `discovery`, `advisor`.

## Product rules

- Reuse returned ids. Never invent subscription, scan, or checkout ids.
- Gmail and bank connect return a human URL. Poll `list_connections` / `review_scan`.
- Never echo raw API keys or poll tokens in user-facing prose after setup.
- Cancellation guides are instructions only.
