{
  "service": "bug_herd",
  "displayName": "BugHerd",
  "categories": [
    "Developer Tools",
    "Productivity"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "API Key",
      "placeholder": "your_bugherd_api_key",
      "description": "BugHerd API key used as the Basic Auth username with x as the password. Find it under Settings > General in your BugHerd account: https://www.bugherd.com/settings/general."
    }
  ],
  "homepageUrl": "https://bugherd.com/",
  "actions": [
    {
      "id": "bug_herd.create_attachment_from_url",
      "service": "bug_herd",
      "name": "create_attachment_from_url",
      "description": "Create a BugHerd task attachment from a publicly accessible file URL.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          },
          "task_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The globally unique BugHerd task identifier."
          },
          "file_name": {
            "type": "string",
            "minLength": 1,
            "description": "The file name to store with the attachment."
          },
          "url": {
            "type": "string",
            "description": "The publicly accessible URL that BugHerd should download and attach.",
            "format": "uri"
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id",
          "task_id",
          "file_name",
          "url"
        ],
        "description": "The input payload for creating a BugHerd attachment from a URL."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "attachment": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The BugHerd attachment identifier."
              },
              "file_name": {
                "type": "string",
                "description": "The attachment file name."
              },
              "url": {
                "type": "string",
                "description": "The URL for the stored BugHerd attachment.",
                "format": "uri"
              }
            },
            "additionalProperties": true,
            "description": "A BugHerd task attachment object."
          }
        },
        "additionalProperties": false,
        "required": [
          "attachment"
        ],
        "description": "The BugHerd attachment response."
      }
    },
    {
      "id": "bug_herd.create_comment",
      "service": "bug_herd",
      "name": "create_comment",
      "description": "Create a comment on a BugHerd task.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          },
          "task_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The globally unique BugHerd task identifier."
          },
          "text": {
            "type": "string",
            "minLength": 1,
            "description": "The comment text."
          },
          "user_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd user identifier for the commenter."
          },
          "email": {
            "type": "string",
            "description": "The commenter email address. BugHerd looks up the user by email.",
            "format": "email"
          },
          "is_private": {
            "type": "boolean",
            "description": "Whether this comment is private to team members."
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id",
          "task_id",
          "text"
        ],
        "description": "The input payload for creating a BugHerd task comment."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "comment": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The BugHerd comment identifier."
              },
              "text": {
                "type": "string",
                "description": "The comment text."
              },
              "user_id": {
                "type": "integer",
                "description": "The BugHerd user identifier for the commenter."
              },
              "is_private": {
                "type": "boolean",
                "description": "Whether the comment is private to team members."
              }
            },
            "additionalProperties": true,
            "description": "A BugHerd task comment object."
          }
        },
        "additionalProperties": false,
        "required": [
          "comment"
        ],
        "description": "The BugHerd comment response."
      }
    },
    {
      "id": "bug_herd.create_project",
      "service": "bug_herd",
      "name": "create_project",
      "description": "Create a BugHerd project with the required project name and website URL.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The BugHerd project name."
          },
          "devurl": {
            "type": "string",
            "description": "The primary website URL for the BugHerd project.",
            "format": "uri"
          },
          "is_active": {
            "type": "boolean",
            "description": "Whether the BugHerd project is active."
          },
          "is_public": {
            "type": "boolean",
            "description": "Whether public feedback is enabled for the BugHerd project."
          },
          "guests_see_guests": {
            "type": "boolean",
            "description": "Whether project guests can see other guests' feedback."
          }
        },
        "additionalProperties": false,
        "required": [
          "name",
          "devurl"
        ],
        "description": "The input payload for creating a BugHerd project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "project": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The BugHerd project identifier."
              },
              "name": {
                "type": "string",
                "description": "The BugHerd project name."
              },
              "devurl": {
                "type": "string",
                "description": "The primary website URL configured for the project."
              },
              "is_active": {
                "type": "boolean",
                "description": "Whether the project is active."
              }
            },
            "additionalProperties": true,
            "description": "A BugHerd project object."
          }
        },
        "additionalProperties": false,
        "required": [
          "project"
        ],
        "description": "The BugHerd project response."
      }
    },
    {
      "id": "bug_herd.create_task",
      "service": "bug_herd",
      "name": "create_task",
      "description": "Create a BugHerd task in a project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "description": "The BugHerd task description."
          },
          "priority": {
            "type": "string",
            "enum": [
              "not set",
              "critical",
              "important",
              "normal",
              "minor"
            ],
            "description": "The BugHerd task priority."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "The BugHerd status or custom column name for the task."
          },
          "requester_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd user identifier for the requester."
          },
          "requester_email": {
            "type": "string",
            "description": "The requester email address.",
            "format": "email"
          },
          "assigned_to_id": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "description": "The BugHerd user identifier to assign to the task."
              },
              {
                "type": "null"
              }
            ]
          },
          "assigned_to_email": {
            "type": "string",
            "description": "The email address of a project member to assign to the task.",
            "format": "email"
          },
          "unassign_user": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd user identifier to remove from assignees."
          },
          "tag_names": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A single BugHerd task tag name."
            },
            "description": "The tag names to assign to the BugHerd task.",
            "minItems": 1
          },
          "external_id": {
            "type": "string",
            "minLength": 1,
            "description": "An external identifier used to correlate the task."
          },
          "site": {
            "type": "string",
            "description": "The website URL where the task was reported.",
            "format": "uri"
          },
          "url": {
            "type": "string",
            "minLength": 1,
            "description": "The page path where the task was reported."
          },
          "updater_email": {
            "type": "string",
            "description": "The email address used to attribute this task update.",
            "format": "email"
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id",
          "description"
        ],
        "description": "The input payload for creating a BugHerd task."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "task": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A BugHerd task object."
          }
        },
        "additionalProperties": false,
        "required": [
          "task"
        ],
        "description": "The BugHerd task response."
      }
    },
    {
      "id": "bug_herd.get_project",
      "service": "bug_herd",
      "name": "get_project",
      "description": "Retrieve full details for a BugHerd project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id"
        ],
        "description": "The input payload for retrieving a BugHerd project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "project": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The BugHerd project identifier."
              },
              "name": {
                "type": "string",
                "description": "The BugHerd project name."
              },
              "devurl": {
                "type": "string",
                "description": "The primary website URL configured for the project."
              },
              "is_active": {
                "type": "boolean",
                "description": "Whether the project is active."
              }
            },
            "additionalProperties": true,
            "description": "A BugHerd project object."
          }
        },
        "additionalProperties": false,
        "required": [
          "project"
        ],
        "description": "The BugHerd project response."
      }
    },
    {
      "id": "bug_herd.get_task",
      "service": "bug_herd",
      "name": "get_task",
      "description": "Retrieve a BugHerd task by project ID and global task ID.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          },
          "task_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The globally unique BugHerd task identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id",
          "task_id"
        ],
        "description": "The input payload for retrieving a BugHerd task."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "task": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A BugHerd task object."
          }
        },
        "additionalProperties": false,
        "required": [
          "task"
        ],
        "description": "The BugHerd task response."
      }
    },
    {
      "id": "bug_herd.list_active_projects",
      "service": "bug_herd",
      "name": "list_active_projects",
      "description": "List active BugHerd projects in the organization.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The one-based page number to request from BugHerd."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing BugHerd projects."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The BugHerd project identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The BugHerd project name."
                },
                "devurl": {
                  "type": "string",
                  "description": "The primary website URL configured for the project."
                },
                "is_active": {
                  "type": "boolean",
                  "description": "Whether the project is active."
                }
              },
              "additionalProperties": true,
              "description": "A BugHerd project object."
            },
            "description": "The BugHerd projects returned for the requested page."
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "The total number of records reported by BugHerd when present."
              }
            },
            "additionalProperties": true,
            "description": "The pagination metadata returned by BugHerd."
          }
        },
        "additionalProperties": false,
        "required": [
          "projects",
          "meta"
        ],
        "description": "The BugHerd project list response."
      }
    },
    {
      "id": "bug_herd.list_attachments",
      "service": "bug_herd",
      "name": "list_attachments",
      "description": "List file attachments on a BugHerd task.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          },
          "task_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The globally unique BugHerd task identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id",
          "task_id"
        ],
        "description": "The input payload for listing BugHerd task attachments."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "attachments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The BugHerd attachment identifier."
                },
                "file_name": {
                  "type": "string",
                  "description": "The attachment file name."
                },
                "url": {
                  "type": "string",
                  "description": "The URL for the stored BugHerd attachment.",
                  "format": "uri"
                }
              },
              "additionalProperties": true,
              "description": "A BugHerd task attachment object."
            },
            "description": "The BugHerd attachments returned for the task."
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "The total number of records reported by BugHerd when present."
              }
            },
            "additionalProperties": true,
            "description": "The pagination metadata returned by BugHerd."
          }
        },
        "additionalProperties": false,
        "required": [
          "attachments",
          "meta"
        ],
        "description": "The BugHerd attachments list response."
      }
    },
    {
      "id": "bug_herd.list_comments",
      "service": "bug_herd",
      "name": "list_comments",
      "description": "List comments on a BugHerd task.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          },
          "task_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The globally unique BugHerd task identifier."
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id",
          "task_id"
        ],
        "description": "The input payload for listing BugHerd task comments."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "comments": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The BugHerd comment identifier."
                },
                "text": {
                  "type": "string",
                  "description": "The comment text."
                },
                "user_id": {
                  "type": "integer",
                  "description": "The BugHerd user identifier for the commenter."
                },
                "is_private": {
                  "type": "boolean",
                  "description": "Whether the comment is private to team members."
                }
              },
              "additionalProperties": true,
              "description": "A BugHerd task comment object."
            },
            "description": "The BugHerd comments returned for the task."
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "The total number of records reported by BugHerd when present."
              }
            },
            "additionalProperties": true,
            "description": "The pagination metadata returned by BugHerd."
          }
        },
        "additionalProperties": false,
        "required": [
          "comments",
          "meta"
        ],
        "description": "The BugHerd comments list response."
      }
    },
    {
      "id": "bug_herd.list_project_tasks",
      "service": "bug_herd",
      "name": "list_project_tasks",
      "description": "List BugHerd tasks for a project with optional server-side filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          },
          "updated_since": {
            "type": "string",
            "description": "Return tasks updated after this timestamp.",
            "format": "date-time"
          },
          "created_since": {
            "type": "string",
            "description": "Return tasks created after this timestamp.",
            "format": "date-time"
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by BugHerd status name or custom column name."
          },
          "priority": {
            "type": "string",
            "enum": [
              "not set",
              "critical",
              "important",
              "normal",
              "minor"
            ],
            "description": "The BugHerd task priority."
          },
          "tag": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by a BugHerd task tag name."
          },
          "assigned_to_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Filter by assigned BugHerd user identifier."
          },
          "external_id": {
            "type": "string",
            "minLength": 1,
            "description": "Filter by external task identifier."
          },
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The one-based page number to request from BugHerd."
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id"
        ],
        "description": "The input payload for listing BugHerd project tasks."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "tasks": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A BugHerd task object."
            },
            "description": "The BugHerd tasks returned for the requested page."
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "The total number of records reported by BugHerd when present."
              }
            },
            "additionalProperties": true,
            "description": "The pagination metadata returned by BugHerd."
          }
        },
        "additionalProperties": false,
        "required": [
          "tasks",
          "meta"
        ],
        "description": "The BugHerd task list response."
      }
    },
    {
      "id": "bug_herd.list_projects",
      "service": "bug_herd",
      "name": "list_projects",
      "description": "List all BugHerd projects in the organization.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "page": {
            "type": "integer",
            "minimum": 1,
            "description": "The one-based page number to request from BugHerd."
          }
        },
        "additionalProperties": false,
        "description": "The input payload for listing BugHerd projects."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "id": {
                  "type": "integer",
                  "description": "The BugHerd project identifier."
                },
                "name": {
                  "type": "string",
                  "description": "The BugHerd project name."
                },
                "devurl": {
                  "type": "string",
                  "description": "The primary website URL configured for the project."
                },
                "is_active": {
                  "type": "boolean",
                  "description": "Whether the project is active."
                }
              },
              "additionalProperties": true,
              "description": "A BugHerd project object."
            },
            "description": "The BugHerd projects returned for the requested page."
          },
          "meta": {
            "type": "object",
            "properties": {
              "count": {
                "type": "integer",
                "description": "The total number of records reported by BugHerd when present."
              }
            },
            "additionalProperties": true,
            "description": "The pagination metadata returned by BugHerd."
          }
        },
        "additionalProperties": false,
        "required": [
          "projects",
          "meta"
        ],
        "description": "The BugHerd project list response."
      }
    },
    {
      "id": "bug_herd.show_organization",
      "service": "bug_herd",
      "name": "show_organization",
      "description": "Retrieve top-level details about the authenticated BugHerd organization.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "The input payload for retrieving the BugHerd organization."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "organization": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The BugHerd organization identifier."
              },
              "name": {
                "type": "string",
                "description": "The BugHerd organization name."
              }
            },
            "additionalProperties": true,
            "description": "A BugHerd organization object."
          }
        },
        "additionalProperties": false,
        "required": [
          "organization"
        ],
        "description": "The BugHerd organization response."
      }
    },
    {
      "id": "bug_herd.update_project",
      "service": "bug_herd",
      "name": "update_project",
      "description": "Update settings for an existing BugHerd project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          },
          "name": {
            "type": "string",
            "minLength": 1,
            "description": "The BugHerd project name."
          },
          "devurl": {
            "type": "string",
            "description": "The primary website URL for the BugHerd project.",
            "format": "uri"
          },
          "is_active": {
            "type": "boolean",
            "description": "Whether the BugHerd project is active."
          },
          "is_public": {
            "type": "boolean",
            "description": "Whether public feedback is enabled for the BugHerd project."
          },
          "guests_see_guests": {
            "type": "boolean",
            "description": "Whether project guests can see other guests' feedback."
          },
          "has_custom_columns": {
            "type": "boolean",
            "description": "Whether the BugHerd project uses custom columns."
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id"
        ],
        "description": "The input payload for updating a BugHerd project."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "project": {
            "type": "object",
            "properties": {
              "id": {
                "type": "integer",
                "description": "The BugHerd project identifier."
              },
              "name": {
                "type": "string",
                "description": "The BugHerd project name."
              },
              "devurl": {
                "type": "string",
                "description": "The primary website URL configured for the project."
              },
              "is_active": {
                "type": "boolean",
                "description": "Whether the project is active."
              }
            },
            "additionalProperties": true,
            "description": "A BugHerd project object."
          }
        },
        "additionalProperties": false,
        "required": [
          "project"
        ],
        "description": "The BugHerd project response."
      }
    },
    {
      "id": "bug_herd.update_task",
      "service": "bug_herd",
      "name": "update_task",
      "description": "Update mutable fields on a BugHerd task.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "project_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd project identifier."
          },
          "task_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The globally unique BugHerd task identifier."
          },
          "description": {
            "type": "string",
            "minLength": 1,
            "description": "The BugHerd task description."
          },
          "priority": {
            "type": "string",
            "enum": [
              "not set",
              "critical",
              "important",
              "normal",
              "minor"
            ],
            "description": "The BugHerd task priority."
          },
          "status": {
            "type": "string",
            "minLength": 1,
            "description": "The BugHerd status or custom column name for the task."
          },
          "requester_id": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd user identifier for the requester."
          },
          "requester_email": {
            "type": "string",
            "description": "The requester email address.",
            "format": "email"
          },
          "assigned_to_id": {
            "anyOf": [
              {
                "type": "integer",
                "minimum": 1,
                "description": "The BugHerd user identifier to assign to the task."
              },
              {
                "type": "null"
              }
            ]
          },
          "assigned_to_email": {
            "type": "string",
            "description": "The email address of a project member to assign to the task.",
            "format": "email"
          },
          "unassign_user": {
            "type": "integer",
            "minimum": 1,
            "description": "The BugHerd user identifier to remove from assignees."
          },
          "tag_names": {
            "type": "array",
            "items": {
              "type": "string",
              "minLength": 1,
              "description": "A single BugHerd task tag name."
            },
            "description": "The tag names to assign to the BugHerd task.",
            "minItems": 1
          },
          "external_id": {
            "type": "string",
            "minLength": 1,
            "description": "An external identifier used to correlate the task."
          },
          "site": {
            "type": "string",
            "description": "The website URL where the task was reported.",
            "format": "uri"
          },
          "url": {
            "type": "string",
            "minLength": 1,
            "description": "The page path where the task was reported."
          },
          "updater_email": {
            "type": "string",
            "description": "The email address used to attribute this task update.",
            "format": "email"
          }
        },
        "additionalProperties": false,
        "required": [
          "project_id",
          "task_id"
        ],
        "description": "The input payload for updating a BugHerd task."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "task": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "A BugHerd task object."
          }
        },
        "additionalProperties": false,
        "required": [
          "task"
        ],
        "description": "The BugHerd task response."
      }
    }
  ]
}
