{"openapi":"3.1.0","info":{"title":"Finmo (BYOK) API","version":"0.1.0","description":"Finmo (BYOK) lets an AI assistant read your own Finmo data through the Finmo API with a key you supply (Finmo API token (Brokerage or Team API, from the integrations page)). Read-only: 6 tools (list_teams, list_brokers, list_applications, list_document_templates, list_generated_compliance_documents, list_required_compliance_documents). The BYOK key travels with each request, is used for that one...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-finmo.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-finmo/docs"},"termsOfService":"https://connectorbay.com/byok-finmo/terms"},"servers":[{"url":"https://byok-finmo.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-finmo/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_teams":{"post":{"operationId":"list_teams","summary":"List the teams in your brokerage with name, legal name, website, country, Pro subscription state and enabled calculators","description":"List the teams in your brokerage with name, legal name, website, country, Pro subscription state and enabled calculators. Use for \"Which teams are set up in our Finmo brokerage\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Search by team name, firm code or portal URL.","title":"Search"}},"title":"list_teamsArguments","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/list_brokers":{"post":{"operationId":"list_brokers","summary":"List the brokers in your brokerage with name, title, location, roles, activity dates and whether the account is confirme","description":"List the brokers in your brokerage with name, title, location, roles, activity dates and whether the account is confirmed (contact details are not returned). Use for \"Which brokers work in our brokerage and when were they last active\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_brokersArguments","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/list_applications":{"post":{"operationId":"list_applications","summary":"List mortgage application overviews (without borrower names) with goal, price, down payment, status, lender submission s","description":"List mortgage application overviews (without borrower names) with goal, price, down payment, status, lender submission status, closing date and province. Use for \"How many of our mortgage deals are funded versus still in progress\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only applications in this team.","title":"Team Id"},"brokerage_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only applications in this brokerage.","title":"Brokerage Id"}},"title":"list_applicationsArguments","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/list_document_templates":{"post":{"operationId":"list_document_templates","summary":"List the document request templates (for example pay stubs or bank statements) with category, type and whether bank stat","description":"List the document request templates (for example pay stubs or bank statements) with category, type and whether bank statements can be pulled. Use for \"Which document request templates does our team use\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only templates of this team.","title":"Team Id"}},"title":"list_document_templatesArguments","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/list_generated_compliance_documents":{"post":{"operationId":"list_generated_compliance_documents","summary":"List a team's generated compliance documents (documents Finmo produces for the compliance file). Use for \"Which complian","description":"List a team's generated compliance documents (documents Finmo produces for the compliance file). Use for \"Which compliance documents does Finmo generate for our team\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Finmo team id (UUID) from list_teams.","maxLength":200,"title":"Team Id","type":"string"},"is_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Return archived documents instead of active ones.","title":"Is Archived"}},"required":["team_id"],"title":"list_generated_compliance_documentsArguments","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/list_required_compliance_documents":{"post":{"operationId":"list_required_compliance_documents","summary":"List a team's required compliance documents and the document templates each one uses. Use for \"Which documents must be o","description":"List a team's required compliance documents and the document templates each one uses. Use for \"Which documents must be on file for compliance at our team\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"team_id":{"description":"Finmo team id (UUID) from list_teams.","maxLength":200,"title":"Team Id","type":"string"},"is_archived":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"Return archived documents instead of active ones.","title":"Is Archived"}},"required":["team_id"],"title":"list_required_compliance_documentsArguments","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}}}}