{
  "service": "formspree",
  "displayName": "Formspree",
  "categories": [
    "Developer Tools",
    "Marketing"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "FORMSPREE_API_KEY",
      "description": "Formspree API key used with the Authorization: Bearer <api_key> header. Create or copy one from the Formspree form API keys page: https://help.formspree.io/articles/the-forms-api/api-keys/.",
      "extraFields": [
        {
          "key": "formId",
          "label": "Form hashid",
          "inputType": "text",
          "required": true,
          "secret": false,
          "placeholder": "xabc123",
          "description": "Formspree form hashid used to validate and read submissions. Find it in the form endpoint URL or follow Formspree's hashid guide: https://help.formspree.io/articles/the-forms-api/getting-your-form-s-hashid/."
        }
      ]
    }
  ],
  "homepageUrl": "https://formspree.io",
  "actions": [
    {
      "id": "formspree.list_submissions",
      "service": "formspree",
      "name": "list_submissions",
      "description": "List submissions for a Formspree form with optional filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "form_id": {
            "type": "string",
            "minLength": 1,
            "description": "The Formspree form hashid. When omitted, the hashid saved during connection is used."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of submissions to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The pagination offset to return."
          },
          "since": {
            "type": "string",
            "description": "Only return submissions received after this datetime.",
            "format": "date-time"
          },
          "order": {
            "type": "string",
            "enum": [
              "asc",
              "desc"
            ],
            "description": "The sort order for returned submissions."
          },
          "spam": {
            "type": "boolean",
            "description": "Whether to return spam or non-spam submissions."
          }
        },
        "additionalProperties": false,
        "description": "Filters and pagination controls for listing Formspree submissions."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "fields": {
            "type": "array",
            "items": {
              "type": "string",
              "description": "A form field name."
            },
            "description": "The form field names returned by Formspree."
          },
          "submissions": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "email": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The submitter email address when Formspree extracted one."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "name": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The submitter name when Formspree extracted one."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "message": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The submitter message when Formspree extracted one."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "status": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The Formspree submission status when returned."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "submitted_at": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "The datetime when Formspree received the submission."
                    },
                    {
                      "type": "null"
                    }
                  ]
                },
                "data": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The submitted form fields exactly as Formspree returned them."
                },
                "raw": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "The raw Formspree API object for advanced fields."
                }
              },
              "additionalProperties": true,
              "required": [
                "raw"
              ],
              "description": "A Formspree submission."
            },
            "description": "The submissions returned for this page."
          },
          "page": {
            "type": "object",
            "properties": {
              "count": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The total number of matching submissions when returned."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "limit": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The requested page size when returned."
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "offset": {
                "anyOf": [
                  {
                    "type": "integer",
                    "description": "The requested result offset when returned."
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "additionalProperties": false,
            "description": "Pagination metadata returned by Formspree when available."
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Formspree API object for advanced fields."
          }
        },
        "additionalProperties": false,
        "description": "A Formspree submission list response."
      }
    }
  ]
}
