{
  "service": "dovetail",
  "displayName": "Dovetail",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Personal API Key",
      "placeholder": "Paste your Dovetail personal API key",
      "description": "Dovetail personal API key sent in the Authorization Bearer header. Generate it in Settings -> Account -> Personal API keys: https://dovetail.com/settings/user/account."
    }
  ],
  "homepageUrl": "https://dovetail.com",
  "actions": [
    {
      "id": "dovetail.create_data",
      "service": "dovetail",
      "name": "create_data",
      "description": "Create a Dovetail data record inside a specific project.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "Unique identifier of the Dovetail project that owns the data."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "Title to assign to the new Dovetail data record."
          },
          "content": {
            "type": "string",
            "minLength": 1,
            "description": "Initial plain text or HTML content to store in the new Dovetail data record."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Field label defined in Dovetail."
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "String field value."
                    },
                    {
                      "type": "boolean",
                      "description": "Boolean field value."
                    },
                    {
                      "type": "number",
                      "description": "Numeric field value."
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "description": "String item inside the Dovetail field value array."
                      },
                      "description": "Array field value."
                    },
                    {
                      "type": "null",
                      "description": "Null field value."
                    }
                  ],
                  "description": "Supported Dovetail field value."
                }
              },
              "additionalProperties": false,
              "description": "One Dovetail data field value."
            },
            "description": "Structured fields to attach to the data."
          }
        },
        "additionalProperties": false,
        "required": [
          "projectId"
        ],
        "description": "Input parameters for creating a Dovetail data record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "dataItem": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Dovetail data payload."
          }
        },
        "additionalProperties": false,
        "description": "Dovetail data creation response wrapper."
      }
    },
    {
      "id": "dovetail.export_data",
      "service": "dovetail",
      "name": "export_data",
      "description": "Export a Dovetail data record in HTML or Markdown format.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "dataId": {
            "type": "string",
            "minLength": 1,
            "description": "Unique identifier of the Dovetail data record."
          },
          "format": {
            "type": "string",
            "enum": [
              "html",
              "markdown"
            ],
            "description": "Export format requested from Dovetail."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for exporting a Dovetail data record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "exportedData": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Exported Dovetail data payload with either HTML or Markdown content."
          }
        },
        "additionalProperties": false,
        "description": "Dovetail data export response wrapper."
      }
    },
    {
      "id": "dovetail.get_data",
      "service": "dovetail",
      "name": "get_data",
      "description": "Get one Dovetail data record by identifier.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "dataId": {
            "type": "string",
            "minLength": 1,
            "description": "Unique identifier of the Dovetail data record."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for reading one Dovetail data record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "dataItem": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Dovetail data payload."
          }
        },
        "additionalProperties": false,
        "description": "Dovetail single data response wrapper."
      }
    },
    {
      "id": "dovetail.get_token_info",
      "service": "dovetail",
      "name": "get_token_info",
      "description": "Get metadata for the current Dovetail personal API key.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "Input parameters for reading the current Dovetail token metadata."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "token": {
            "type": "object",
            "properties": {
              "id": {
                "type": "string",
                "minLength": 1,
                "description": "Unique identifier of the current Dovetail personal API key."
              },
              "subdomain": {
                "type": "string",
                "minLength": 1,
                "description": "Workspace subdomain associated with the current API key."
              }
            },
            "additionalProperties": false,
            "description": "Dovetail token metadata."
          }
        },
        "additionalProperties": false,
        "description": "Dovetail token metadata response wrapper."
      }
    },
    {
      "id": "dovetail.list_data",
      "service": "dovetail",
      "name": "list_data",
      "description": "List Dovetail data records with pagination and common filters.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "startCursor": {
            "type": "string",
            "minLength": 1,
            "description": "Cursor returned by the previous page."
          },
          "limit": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Maximum number of records to return, from 0 to 100."
          },
          "sort": {
            "type": "string",
            "enum": [
              "created_at:asc",
              "created_at:desc",
              "title:asc",
              "title:desc"
            ],
            "description": "Single Dovetail sort instruction."
          },
          "titleContains": {
            "type": "string",
            "minLength": 1,
            "description": "Case-insensitive substring used to filter Dovetail titles."
          },
          "projectId": {
            "type": "string",
            "minLength": 1,
            "description": "Project identifier used to filter Dovetail data."
          },
          "createdAtGte": {
            "type": "string",
            "description": "ISO 8601 timestamp used to filter Dovetail records.",
            "format": "date-time"
          },
          "createdAtLte": {
            "type": "string",
            "description": "ISO 8601 timestamp used to filter Dovetail records.",
            "format": "date-time"
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Dovetail data records."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "dataItems": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Dovetail data payload."
            },
            "description": "Dovetail data records returned for the page."
          },
          "totalCount": {
            "type": "number",
            "description": "Total number of matching Dovetail data records."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether another Dovetail data page is available."
          },
          "nextCursor": {
            "anyOf": [
              {
                "type": "string",
                "description": "Cursor value for the next page."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Dovetail data collection response wrapper."
      }
    },
    {
      "id": "dovetail.list_projects",
      "service": "dovetail",
      "name": "list_projects",
      "description": "List Dovetail projects with pagination and title filtering.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "startCursor": {
            "type": "string",
            "minLength": 1,
            "description": "Cursor returned by the previous page."
          },
          "limit": {
            "type": "integer",
            "minimum": 0,
            "maximum": 100,
            "description": "Maximum number of records to return, from 0 to 100."
          },
          "sort": {
            "type": "string",
            "enum": [
              "created_at:asc",
              "created_at:desc",
              "title:asc",
              "title:desc"
            ],
            "description": "Single Dovetail sort instruction."
          },
          "titleContains": {
            "type": "string",
            "minLength": 1,
            "description": "Case-insensitive substring used to filter Dovetail titles."
          }
        },
        "additionalProperties": false,
        "description": "Input parameters for listing Dovetail projects."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "projects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "Dovetail project payload."
            },
            "description": "Dovetail projects returned for the current page."
          },
          "totalCount": {
            "type": "number",
            "description": "Total number of matching Dovetail projects."
          },
          "hasMore": {
            "type": "boolean",
            "description": "Whether another Dovetail projects page is available."
          },
          "nextCursor": {
            "anyOf": [
              {
                "type": "string",
                "description": "Cursor value for the next page."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Dovetail projects collection response wrapper."
      }
    },
    {
      "id": "dovetail.update_data",
      "service": "dovetail",
      "name": "update_data",
      "description": "Update the title or fields of a Dovetail data record.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "dataId": {
            "type": "string",
            "minLength": 1,
            "description": "Unique identifier of the Dovetail data record."
          },
          "title": {
            "type": "string",
            "minLength": 1,
            "description": "Updated title for the Dovetail data record."
          },
          "fields": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {
                "label": {
                  "type": "string",
                  "minLength": 1,
                  "description": "Field label defined in Dovetail."
                },
                "value": {
                  "anyOf": [
                    {
                      "type": "string",
                      "description": "String field value."
                    },
                    {
                      "type": "boolean",
                      "description": "Boolean field value."
                    },
                    {
                      "type": "number",
                      "description": "Numeric field value."
                    },
                    {
                      "type": "array",
                      "items": {
                        "type": "string",
                        "description": "String item inside the Dovetail field value array."
                      },
                      "description": "Array field value."
                    },
                    {
                      "type": "null",
                      "description": "Null field value."
                    }
                  ],
                  "description": "Supported Dovetail field value."
                }
              },
              "additionalProperties": false,
              "description": "One Dovetail data field value."
            },
            "description": "Replacement fields for the data record."
          }
        },
        "additionalProperties": false,
        "required": [
          "dataId"
        ],
        "description": "Input parameters for updating a Dovetail data record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "dataItem": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Dovetail data payload."
          }
        },
        "additionalProperties": false,
        "description": "Dovetail data update response wrapper."
      }
    }
  ]
}
