{
  "service": "featurebase",
  "displayName": "Featurebase",
  "categories": [
    "Productivity",
    "Developer Tools"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "sk_...",
      "description": "Featurebase API key sent as a Bearer token. Create or view API keys from your Featurebase workspace settings: https://docs.featurebase.app/rest-api."
    }
  ],
  "homepageUrl": "https://www.featurebase.app/",
  "actions": [
    {
      "id": "featurebase.create_post",
      "service": "featurebase",
      "name": "create_post",
      "description": "Create a Featurebase feedback post in a board.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "title": {
            "type": "string",
            "minLength": 2,
            "description": "The Featurebase post title."
          },
          "boardId": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase post content in HTML format."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One tag name."
            },
            "description": "The tag names to attach to the post.",
            "minItems": 1
          },
          "statusId": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "commentsEnabled": {
            "type": "boolean",
            "description": "Whether comments are enabled for the post."
          },
          "inReview": {
            "type": "boolean",
            "description": "Whether the post should be pending moderation."
          },
          "customFields": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Custom field values keyed by Featurebase custom field ID or name."
          },
          "eta": {
            "type": "string",
            "minLength": 1,
            "description": "An ISO 8601 timestamp or Unix timestamp accepted by Featurebase."
          },
          "assigneeId": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "visibility": {
            "type": "string",
            "enum": [
              "public",
              "authorOnly",
              "companyOnly"
            ],
            "description": "The Featurebase post visibility restriction."
          },
          "author": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Featurebase user ID."
              },
              "userId": {
                "type": "string",
                "minLength": 1,
                "description": "The external SSO user ID."
              },
              "email": {
                "type": "string",
                "description": "The user's email address.",
                "format": "email"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "The user's display name."
              },
              "profilePicture": {
                "type": "string",
                "description": "The user's profile picture URL.",
                "format": "uri"
              }
            },
            "additionalProperties": false,
            "description": "The user attribution fields used when creating or updating a Featurebase post."
          },
          "createdAt": {
            "type": "string",
            "minLength": 1,
            "description": "An ISO 8601 timestamp or Unix timestamp accepted by Featurebase."
          }
        },
        "additionalProperties": false,
        "required": [
          "title",
          "boardId"
        ],
        "description": "The input payload for creating a Featurebase post."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Featurebase object returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "object"
        ],
        "description": "A Featurebase object response."
      }
    },
    {
      "id": "featurebase.delete_contact",
      "service": "featurebase",
      "name": "delete_contact",
      "description": "Delete one Featurebase contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The input payload for deleting a Featurebase contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "object": {
            "type": "string",
            "description": "The Featurebase object type that was deleted."
          },
          "deleted": {
            "type": "boolean",
            "description": "Whether Featurebase deleted the requested object."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "description": "A Featurebase deletion confirmation."
      }
    },
    {
      "id": "featurebase.delete_post",
      "service": "featurebase",
      "name": "delete_post",
      "description": "Delete one Featurebase post by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The input payload for deleting a Featurebase post."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "object": {
            "type": "string",
            "description": "The Featurebase object type that was deleted."
          },
          "deleted": {
            "type": "boolean",
            "description": "Whether Featurebase deleted the requested object."
          }
        },
        "additionalProperties": false,
        "required": [
          "id",
          "object",
          "deleted"
        ],
        "description": "A Featurebase deletion confirmation."
      }
    },
    {
      "id": "featurebase.get_board",
      "service": "featurebase",
      "name": "get_board",
      "description": "Get one Featurebase board by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The input payload for retrieving a Featurebase board."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Featurebase object returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "object"
        ],
        "description": "A Featurebase object response."
      }
    },
    {
      "id": "featurebase.get_contact",
      "service": "featurebase",
      "name": "get_contact",
      "description": "Get one Featurebase contact by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The input payload for retrieving a Featurebase contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Featurebase object returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "object"
        ],
        "description": "A Featurebase object response."
      }
    },
    {
      "id": "featurebase.get_post",
      "service": "featurebase",
      "name": "get_post",
      "description": "Get one Featurebase post by ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The input payload for retrieving a Featurebase post."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Featurebase object returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "object"
        ],
        "description": "A Featurebase object response."
      }
    },
    {
      "id": "featurebase.list_boards",
      "service": "featurebase",
      "name": "list_boards",
      "description": "List all Featurebase boards for the authenticated organization.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for listing Featurebase boards."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "description": "The Featurebase list object type."
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw Featurebase object returned by the API."
            },
            "description": "The Featurebase objects returned for this page."
          },
          "nextCursor": {
            "anyOf": [
              {
                "type": "string",
                "description": "The cursor for the next page, or null when no page remains."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "object",
          "data",
          "nextCursor"
        ],
        "description": "A cursor-paginated Featurebase list response."
      }
    },
    {
      "id": "featurebase.list_contacts",
      "service": "featurebase",
      "name": "list_contacts",
      "description": "List Featurebase contacts with cursor pagination and contact type filtering.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of records to return, from 1 to 100."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "The opaque pagination cursor returned by Featurebase."
          },
          "contactType": {
            "type": "string",
            "enum": [
              "customer",
              "lead",
              "all"
            ],
            "description": "The Featurebase contact type filter."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing Featurebase contacts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "description": "The Featurebase list object type."
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw Featurebase object returned by the API."
            },
            "description": "The Featurebase objects returned for this page."
          },
          "nextCursor": {
            "anyOf": [
              {
                "type": "string",
                "description": "The cursor for the next page, or null when no page remains."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "object",
          "data",
          "nextCursor"
        ],
        "description": "A cursor-paginated Featurebase list response."
      }
    },
    {
      "id": "featurebase.list_posts",
      "service": "featurebase",
      "name": "list_posts",
      "description": "List Featurebase posts with cursor pagination and optional filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "limit": {
            "type": "integer",
            "minimum": 1,
            "maximum": 100,
            "description": "The maximum number of records to return, from 1 to 100."
          },
          "cursor": {
            "type": "string",
            "minLength": 1,
            "description": "The opaque pagination cursor returned by Featurebase."
          },
          "boardId": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "statusId": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One Featurebase tag name."
            },
            "description": "The tag names used to filter Featurebase posts.",
            "minItems": 1
          },
          "q": {
            "type": "string",
            "minLength": 1,
            "description": "The search query used to filter Featurebase posts."
          },
          "inReview": {
            "type": "boolean",
            "description": "Whether to include posts pending moderation."
          },
          "sortBy": {
            "type": "string",
            "enum": [
              "createdAt",
              "upvotes",
              "trending",
              "recent"
            ],
            "description": "The Featurebase post sorting mode."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing Featurebase posts."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "description": "The Featurebase list object type."
          },
          "data": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "The raw Featurebase object returned by the API."
            },
            "description": "The Featurebase objects returned for this page."
          },
          "nextCursor": {
            "anyOf": [
              {
                "type": "string",
                "description": "The cursor for the next page, or null when no page remains."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "required": [
          "object",
          "data",
          "nextCursor"
        ],
        "description": "A cursor-paginated Featurebase list response."
      }
    },
    {
      "id": "featurebase.update_post",
      "service": "featurebase",
      "name": "update_post",
      "description": "Update mutable fields on an existing Featurebase post.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "title": {
            "type": "string",
            "minLength": 2,
            "description": "The updated Featurebase post title."
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "description": "The updated Featurebase post content in HTML format."
          },
          "boardId": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "statusId": {
            "type": "string",
            "minLength": 1,
            "description": "The Featurebase object ID."
          },
          "tags": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "One tag name."
            },
            "description": "The replacement tag names for the post.",
            "minItems": 1
          },
          "commentsEnabled": {
            "type": "boolean",
            "description": "Whether comments are enabled for the post."
          },
          "inReview": {
            "type": "boolean",
            "description": "Whether the post should be pending moderation."
          },
          "customFields": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Custom field values keyed by Featurebase custom field ID or name."
          },
          "eta": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "An ISO 8601 timestamp or Unix timestamp accepted by Featurebase."
              },
              {
                "type": "null"
              }
            ]
          },
          "createdAt": {
            "type": "string",
            "minLength": 1,
            "description": "An ISO 8601 timestamp or Unix timestamp accepted by Featurebase."
          },
          "assigneeId": {
            "anyOf": [
              {
                "type": "string",
                "minLength": 1,
                "description": "The Featurebase object ID."
              },
              {
                "type": "null"
              }
            ]
          },
          "visibility": {
            "type": "string",
            "enum": [
              "public",
              "authorOnly",
              "companyOnly"
            ],
            "description": "The Featurebase post visibility restriction."
          },
          "author": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "The Featurebase user ID."
              },
              "userId": {
                "type": "string",
                "minLength": 1,
                "description": "The external SSO user ID."
              },
              "email": {
                "type": "string",
                "description": "The user's email address.",
                "format": "email"
              },
              "name": {
                "type": "string",
                "minLength": 1,
                "description": "The user's display name."
              },
              "profilePicture": {
                "type": "string",
                "description": "The user's profile picture URL.",
                "format": "uri"
              }
            },
            "additionalProperties": false,
            "description": "The user attribution fields used when creating or updating a Featurebase post."
          },
          "sendStatusUpdateEmail": {
            "type": "boolean",
            "description": "Whether to email voters when the status changes."
          }
        },
        "additionalProperties": false,
        "required": [
          "id"
        ],
        "description": "The input payload for updating a Featurebase post."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Featurebase object returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "object"
        ],
        "description": "A Featurebase object response."
      }
    },
    {
      "id": "featurebase.upsert_contact",
      "service": "featurebase",
      "name": "upsert_contact",
      "description": "Create or update a Featurebase contact by email or external user ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string",
            "description": "The contact email address.",
            "format": "email"
          },
          "userId": {
            "type": "string",
            "minLength": 1,
            "description": "The external user ID from your system."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The contact display name."
          },
          "profilePicture": {
            "type": "string",
            "description": "The contact profile picture URL.",
            "format": "uri"
          },
          "companies": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The external company ID from your system."
                },
                "name": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The company name."
                },
                "monthlySpend": {
                  "type": "number",
                  "description": "The company's monthly spend or revenue."
                },
                "customFields": {
                  "type": "object",
                  "properties": {},
                  "additionalProperties": true,
                  "description": "Custom field values keyed by Featurebase custom field ID or name."
                },
                "industry": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The company's industry."
                },
                "website": {
                  "type": "string",
                  "description": "The company's website URL.",
                  "format": "uri"
                },
                "plan": {
                  "type": "string",
                  "minLength": 1,
                  "description": "The company's current plan or subscription."
                },
                "companySize": {
                  "type": "integer",
                  "minimum": 0,
                  "description": "The company's employee count."
                },
                "createdAt": {
                  "type": "string",
                  "description": "The ISO 8601 timestamp when the company was created.",
                  "format": "date-time"
                }
              },
              "additionalProperties": false,
              "required": [
                "id",
                "name"
              ],
              "description": "A company associated with a Featurebase contact."
            },
            "description": "The companies associated with the contact.",
            "minItems": 1
          },
          "customFields": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Custom field values keyed by Featurebase custom field ID or name."
          },
          "subscribedToChangelog": {
            "type": "boolean",
            "description": "Whether the contact is subscribed to changelog updates."
          },
          "locale": {
            "type": "string",
            "minLength": 1,
            "description": "The contact locale or language code."
          },
          "phone": {
            "type": "string",
            "minLength": 1,
            "description": "The contact phone number."
          },
          "roles": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "The Featurebase object ID."
            },
            "description": "The role IDs to assign to the contact.",
            "minItems": 1
          },
          "userHash": {
            "type": "string",
            "minLength": 1,
            "description": "The HMAC hash used for Featurebase identity verification."
          },
          "createdAt": {
            "type": "string",
            "description": "The ISO 8601 timestamp when the contact was created.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "The input payload for upserting a Featurebase contact."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "The raw Featurebase object returned by the API."
          }
        },
        "additionalProperties": false,
        "required": [
          "object"
        ],
        "description": "A Featurebase object response."
      }
    }
  ]
}
