{"openapi":"3.1.0","info":{"title":"Formstack Form Config (BYOK) API","version":"0.1.0","description":"Formstack Form Config (BYOK) lets an AI assistant read your own Formstack Form Config data through the Formstack Form Config API with a key you supply (Formstack personal access token (starts with fs_pat_)). Read-only: 6 tools (list_smart_lists, get_smart_list, list_smart_list_options, list_submit_actions, list_notification_emails, list_confirmation_emails). The BYOK key travels with each...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-formstack-form-config.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-formstack-form-config/docs"},"termsOfService":"https://connectorbay.com/byok-formstack-form-config/terms"},"servers":[{"url":"https://byok-formstack-form-config.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-formstack-form-config/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_smart_lists":{"post":{"operationId":"list_smart_lists","summary":"List the account's smart lists (reusable option sets shared by fields) with name, image and separate-value flags and dat","description":"List the account's smart lists (reusable option sets shared by fields) with name, image and separate-value flags and dates; search by name. Use for \"Which smart lists does my Formstack account have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only smart lists whose name matches this text.","title":"Query"},"page_number":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"},"page_size":{"anyOf":[{"maximum":500,"minimum":10,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (10 to 500; the API default is 50).","title":"Page Size"}},"title":"list_smart_listsArguments","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_smart_list":{"post":{"operationId":"get_smart_list","summary":"Get one smart list: name, whether it uses images or separate values, and creation and update times. Use for \"Show Formst","description":"Get one smart list: name, whether it uses images or separate values, and creation and update times. Use for \"Show Formstack smart list 55\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"smart_list_id":{"description":"Numeric smart list id from list_smart_lists, for example 55.","title":"Smart List Id","type":"integer"}},"required":["smart_list_id"],"title":"get_smart_listArguments","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_smart_list_options":{"post":{"operationId":"list_smart_list_options","summary":"List the options of one smart list with label, value, image URL and sort position; search by label. Use for \"What option","description":"List the options of one smart list with label, value, image URL and sort position; search by label. Use for \"What options does Formstack smart list 55 contain\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"smart_list_id":{"description":"Numeric smart list id from list_smart_lists, for example 55.","title":"Smart List Id","type":"integer"},"query":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only options whose label matches this text.","title":"Query"},"page_number":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page Number"},"page_size":{"anyOf":[{"maximum":500,"minimum":10,"type":"integer"},{"type":"null"}],"default":25,"description":"How many results per page (10 to 500; the API default is 50).","title":"Page Size"}},"required":["smart_list_id"],"title":"list_smart_list_optionsArguments","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_submit_actions":{"post":{"operationId":"list_submit_actions","summary":"List what happens after a form is submitted: submit actions with name, type (default, message or redirect), message text","description":"List what happens after a form is submitted: submit actions with name, type (default, message or redirect), message text, redirect URL and whether data is appended. Use for \"What happens after someone submits Formstack form 1234567\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"form_id":{"description":"Numeric Formstack form id, for example 1234567.","title":"Form Id","type":"integer"}},"required":["form_id"],"title":"list_submit_actionsArguments","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_notification_emails":{"post":{"operationId":"list_notification_emails","summary":"List the notification emails of a form (internal alerts on submission) with name, subject, content type, format and atta","description":"List the notification emails of a form (internal alerts on submission) with name, subject, content type, format and attachment limit. Recipient and sender addresses and the message body are not returned. Use for \"Which notification emails does Formstack form 1234567 send\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"form_id":{"description":"Numeric Formstack form id, for example 1234567.","title":"Form Id","type":"integer"}},"required":["form_id"],"title":"list_notification_emailsArguments","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_confirmation_emails":{"post":{"operationId":"list_confirmation_emails","summary":"List the confirmation emails of a form (sent to the person who submitted) with name, subject, delay in minutes, content ","description":"List the confirmation emails of a form (sent to the person who submitted) with name, subject, delay in minutes, content type and format. Sender address and message body are not returned. Use for \"Which confirmation emails does Formstack form 1234567 send\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"form_id":{"description":"Numeric Formstack form id, for example 1234567.","title":"Form Id","type":"integer"}},"required":["form_id"],"title":"list_confirmation_emailsArguments","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}}}}