{"openapi":"3.1.0","info":{"title":"Fusion Auth Forms (BYOK) API","version":"0.1.0","description":"Fusion Auth Forms (BYOK) lets an AI assistant read your own Fusion Auth Forms data through the Fusion Auth Forms API with a key you supply (FusionAuth API key). Read-only: 8 tools (list_forms, get_form, list_form_fields, get_form_field, list_message_templates, get_message_template, list_user_action_reasons, get_user_action_reason). The BYOK key travels with each request, is used for that one call...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-fusionauth-forms.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-fusionauth-forms/docs"},"termsOfService":"https://connectorbay.com/byok-fusionauth-forms/terms"},"servers":[{"url":"https://byok-fusionauth-forms.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-fusionauth-forms/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_forms":{"post":{"operationId":"list_forms","summary":"List all forms (registration, admin registration, admin user and self-service user) with name, type, steps and dates. Us","description":"List all forms (registration, admin registration, admin user and self-service user) with name, type, steps and dates. Use for \"Which forms are defined in our FusionAuth instance\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"instance":{"description":"Your FusionAuth Cloud hostname label: the part before .fusionauth.io, for example 'acme' for acme.fusionauth.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Instance","type":"string"}},"required":["instance"],"title":"list_formsArguments","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/get_form":{"post":{"operationId":"get_form","summary":"Get one form by id: name, type, steps and dates. Use for \"Which steps does FusionAuth form 5d8d4ef4-3c3e-4f7c-8f56-3d6e4","description":"Get one form by id: name, type, steps and dates. Use for \"Which steps does FusionAuth form 5d8d4ef4-3c3e-4f7c-8f56-3d6e4b3c0a11 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"instance":{"description":"Your FusionAuth Cloud hostname label: the part before .fusionauth.io, for example 'acme' for acme.fusionauth.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Instance","type":"string"},"form_id":{"description":"Form id (a UUID) from list_forms.","maxLength":200,"title":"Form Id","type":"string"}},"required":["instance","form_id"],"title":"get_formArguments","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_form_fields":{"post":{"operationId":"list_form_fields","summary":"List all form fields with name, key, data type, input control, required flag and linked consent. Use for \"Which custom f","description":"List all form fields with name, key, data type, input control, required flag and linked consent. Use for \"Which custom fields can be collected by FusionAuth forms\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"instance":{"description":"Your FusionAuth Cloud hostname label: the part before .fusionauth.io, for example 'acme' for acme.fusionauth.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Instance","type":"string"}},"required":["instance"],"title":"list_form_fieldsArguments","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/get_form_field":{"post":{"operationId":"get_form_field","summary":"Get one form field by id: name, key, data type, input control, required flag and description. Use for \"Is FusionAuth for","description":"Get one form field by id: name, key, data type, input control, required flag and description. Use for \"Is FusionAuth form field 6a1d4ef4-3c3e-4f7c-8f56-3d6e4b3c0a22 required\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"instance":{"description":"Your FusionAuth Cloud hostname label: the part before .fusionauth.io, for example 'acme' for acme.fusionauth.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Instance","type":"string"},"field_id":{"description":"Form field id (a UUID) from list_form_fields.","maxLength":200,"title":"Field Id","type":"string"}},"required":["instance","field_id"],"title":"get_form_fieldArguments","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_message_templates":{"post":{"operationId":"list_message_templates","summary":"List SMS and voice message templates with name, type and dates. Template text is not picked. Use for \"Which SMS message ","description":"List SMS and voice message templates with name, type and dates. Template text is not picked. Use for \"Which SMS message templates does FusionAuth have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"instance":{"description":"Your FusionAuth Cloud hostname label: the part before .fusionauth.io, for example 'acme' for acme.fusionauth.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Instance","type":"string"}},"required":["instance"],"title":"list_message_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/get_message_template":{"post":{"operationId":"get_message_template","summary":"Get one SMS or voice message template by id: name, type and dates. Template text is not picked. Use for \"What type is Fu","description":"Get one SMS or voice message template by id: name, type and dates. Template text is not picked. Use for \"What type is FusionAuth message template 7b2e4ef4-3c3e-4f7c-8f56-3d6e4b3c0a33\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"instance":{"description":"Your FusionAuth Cloud hostname label: the part before .fusionauth.io, for example 'acme' for acme.fusionauth.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Instance","type":"string"},"message_template_id":{"description":"Message template id (a UUID) from list_message_templates.","maxLength":200,"title":"Message Template Id","type":"string"}},"required":["instance","message_template_id"],"title":"get_message_templateArguments","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_user_action_reasons":{"post":{"operationId":"list_user_action_reasons","summary":"List the reasons administrators can give when applying a user action, with code and text. Use for \"Which user action rea","description":"List the reasons administrators can give when applying a user action, with code and text. Use for \"Which user action reasons exist in FusionAuth\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"instance":{"description":"Your FusionAuth Cloud hostname label: the part before .fusionauth.io, for example 'acme' for acme.fusionauth.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Instance","type":"string"}},"required":["instance"],"title":"list_user_action_reasonsArguments","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/get_user_action_reason":{"post":{"operationId":"get_user_action_reason","summary":"Get one user action reason by id: code, text and dates. Use for \"What is FusionAuth user action reason 8c3f4ef4-3c3e-4f7","description":"Get one user action reason by id: code, text and dates. Use for \"What is FusionAuth user action reason 8c3f4ef4-3c3e-4f7c-8f56-3d6e4b3c0a44\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"instance":{"description":"Your FusionAuth Cloud hostname label: the part before .fusionauth.io, for example 'acme' for acme.fusionauth.io.","maxLength":200,"pattern":"^[a-z0-9]([a-z0-9-]{0,61}[a-z0-9])?$","title":"Instance","type":"string"},"reason_id":{"description":"User action reason id (a UUID) from list_user_action_reasons.","maxLength":200,"title":"Reason Id","type":"string"}},"required":["instance","reason_id"],"title":"get_user_action_reasonArguments","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}}}}