{
  "service": "attio",
  "displayName": "Attio",
  "categories": [
    "Productivity",
    "Data"
  ],
  "authTypes": [
    "api_key"
  ],
  "auth": [
    {
      "type": "api_key",
      "label": "Access Token",
      "placeholder": "ATTIO_ACCESS_TOKEN",
      "description": "Attio access token sent as a Bearer token. Create or copy a token from the Attio developer dashboard: https://build.attio.com/.",
      "extraFields": []
    }
  ],
  "homepageUrl": "https://attio.com",
  "actions": [
    {
      "id": "attio.create_record",
      "service": "attio",
      "name": "create_record",
      "description": "Create a record for an Attio object using documented attribute value shapes.",
      "requiredScopes": [
        "record_permission:read-write",
        "object_configuration:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "minLength": 1,
            "description": "The object ID or API slug, such as people or companies."
          },
          "values": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Record values keyed by Attio attribute API slug or attribute ID. Values are forwarded using Attio's documented attribute value shapes."
          }
        },
        "additionalProperties": false,
        "description": "Input for creating an Attio record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A raw Attio record returned by the API."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "A single Attio record result."
      }
    },
    {
      "id": "attio.delete_record",
      "service": "attio",
      "name": "delete_record",
      "description": "Delete a single Attio record by object and record ID.",
      "requiredScopes": [
        "record_permission:read-write",
        "object_configuration:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "minLength": 1,
            "description": "The object ID or API slug, such as people or companies."
          },
          "recordId": {
            "type": "string",
            "description": "The Attio record UUID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Input for deleting an Attio record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "deleted": {
            "type": "boolean",
            "description": "Whether Attio accepted the record delete request."
          },
          "raw": {
            "description": "The raw Attio delete response payload."
          }
        },
        "additionalProperties": false,
        "description": "The delete status returned by Attio."
      }
    },
    {
      "id": "attio.get_object",
      "service": "attio",
      "name": "get_object",
      "description": "Get one Attio object by object ID or API slug.",
      "requiredScopes": [
        "object_configuration:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "minLength": 1,
            "description": "The object ID or API slug, such as people or companies."
          }
        },
        "additionalProperties": false,
        "description": "Input for retrieving an Attio object."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A raw Attio object returned by the API."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "The requested Attio object."
      }
    },
    {
      "id": "attio.get_record",
      "service": "attio",
      "name": "get_record",
      "description": "Get a single Attio record by object and record ID.",
      "requiredScopes": [
        "record_permission:read",
        "object_configuration:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "minLength": 1,
            "description": "The object ID or API slug, such as people or companies."
          },
          "recordId": {
            "type": "string",
            "description": "The Attio record UUID.",
            "format": "uuid"
          }
        },
        "additionalProperties": false,
        "description": "Input for retrieving an Attio record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A raw Attio record returned by the API."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "A single Attio record result."
      }
    },
    {
      "id": "attio.identify",
      "service": "attio",
      "name": "identify",
      "description": "Identify the current Attio access token, its workspace, and the scopes attached to it.",
      "requiredScopes": [],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required to identify an Attio token."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "active": {
            "type": "boolean",
            "description": "Whether the token is active."
          },
          "workspaceId": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Attio workspace ID associated with the token."
              },
              {
                "type": "null"
              }
            ]
          },
          "workspaceName": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Attio workspace name associated with the token."
              },
              {
                "type": "null"
              }
            ]
          },
          "workspaceSlug": {
            "anyOf": [
              {
                "type": "string",
                "description": "The Attio workspace slug associated with the token."
              },
              {
                "type": "null"
              }
            ]
          },
          "scope": {
            "anyOf": [
              {
                "type": "string",
                "description": "The space-separated Attio scopes associated with the token."
              },
              {
                "type": "null"
              }
            ]
          },
          "raw": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Raw Attio token and workspace metadata."
          }
        },
        "additionalProperties": false,
        "description": "Attio credential metadata returned by /v2/self."
      }
    },
    {
      "id": "attio.list_attributes",
      "service": "attio",
      "name": "list_attributes",
      "description": "List attributes defined on an Attio object or list.",
      "requiredScopes": [
        "object_configuration:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "target": {
            "type": "string",
            "enum": [
              "objects",
              "lists"
            ],
            "description": "Whether to list attributes for an Attio object or list."
          },
          "identifier": {
            "type": "string",
            "minLength": 1,
            "description": "The object or list ID, or object/list API slug."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of attributes to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based pagination offset."
          },
          "showArchived": {
            "type": "boolean",
            "description": "Whether to include archived attributes."
          }
        },
        "additionalProperties": false,
        "required": [
          "target",
          "identifier"
        ],
        "description": "Input for listing Attio attributes."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "attributes": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Attio attribute returned by the API."
            },
            "description": "Attio attributes for the requested object or list."
          },
          "pagination": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "The maximum number of items requested from Attio."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "The zero-based offset requested from Attio."
                  }
                },
                "additionalProperties": false,
                "description": "Pagination parameters used for list-style Attio endpoints."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Attributes returned by Attio."
      }
    },
    {
      "id": "attio.list_objects",
      "service": "attio",
      "name": "list_objects",
      "description": "List all system-defined and user-defined objects in an Attio workspace.",
      "requiredScopes": [
        "object_configuration:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {},
        "additionalProperties": false,
        "description": "No input is required to list Attio objects."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "objects": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Attio object returned by the API."
            },
            "description": "Attio objects in the workspace."
          }
        },
        "additionalProperties": false,
        "description": "Objects returned by Attio."
      }
    },
    {
      "id": "attio.list_records",
      "service": "attio",
      "name": "list_records",
      "description": "List Attio records for an object with optional filtering, view filtering, sorting, limit, and offset.",
      "requiredScopes": [
        "record_permission:read",
        "object_configuration:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "minLength": 1,
            "description": "The object ID or API slug, such as people or companies."
          },
          "filter": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Attio filter object forwarded to the list records endpoint. Cannot be combined with filterViewId."
          },
          "filterViewId": {
            "type": "string",
            "description": "A saved view UUID whose filter configuration should be applied.",
            "format": "uuid"
          },
          "sorts": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "One Attio sort definition."
            },
            "description": "Sort definitions forwarded to Attio."
          },
          "limit": {
            "type": "integer",
            "minimum": 1,
            "description": "The maximum number of records to return."
          },
          "offset": {
            "type": "integer",
            "minimum": 0,
            "description": "The zero-based pagination offset."
          }
        },
        "additionalProperties": false,
        "required": [
          "object"
        ],
        "description": "Input for querying Attio records.",
        "not": {
          "required": [
            "filter",
            "filterViewId"
          ]
        }
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "records": {
            "type": "array",
            "items": {
              "type": "object",
              "properties": {},
              "additionalProperties": true,
              "description": "A raw Attio record returned by the API."
            },
            "description": "Attio records returned by the query."
          },
          "pagination": {
            "anyOf": [
              {
                "type": "object",
                "properties": {
                  "limit": {
                    "type": "integer",
                    "minimum": 1,
                    "description": "The maximum number of items requested from Attio."
                  },
                  "offset": {
                    "type": "integer",
                    "minimum": 0,
                    "description": "The zero-based offset requested from Attio."
                  }
                },
                "additionalProperties": false,
                "description": "Pagination parameters used for list-style Attio endpoints."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "Records returned by Attio."
      }
    },
    {
      "id": "attio.update_record",
      "service": "attio",
      "name": "update_record",
      "description": "Update an Attio record by appending or overwriting multiselect values according to Attio's PATCH and PUT semantics.",
      "requiredScopes": [
        "record_permission:read-write",
        "object_configuration:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "minLength": 1,
            "description": "The object ID or API slug, such as people or companies."
          },
          "recordId": {
            "type": "string",
            "description": "The Attio record UUID.",
            "format": "uuid"
          },
          "values": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Record values keyed by Attio attribute API slug or attribute ID. Values are forwarded using Attio's documented attribute value shapes."
          },
          "mode": {
            "type": "string",
            "enum": [
              "append_multiselect",
              "overwrite_multiselect"
            ],
            "description": "How Attio should handle multiselect attribute values."
          }
        },
        "additionalProperties": false,
        "required": [
          "object",
          "recordId",
          "values"
        ],
        "description": "Input for updating an Attio record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A raw Attio record returned by the API."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "A single Attio record result."
      }
    },
    {
      "id": "attio.upsert_record",
      "service": "attio",
      "name": "upsert_record",
      "description": "Create or update an Attio record for an object using a unique matching attribute.",
      "requiredScopes": [
        "record_permission:read-write",
        "object_configuration:read"
      ],
      "providerPermissions": [],
      "inputSchema": {
        "type": "object",
        "properties": {
          "object": {
            "type": "string",
            "minLength": 1,
            "description": "The object ID or API slug, such as people or companies."
          },
          "matchingAttribute": {
            "type": "string",
            "minLength": 1,
            "description": "The unique attribute API slug or ID used to find matches."
          },
          "values": {
            "type": "object",
            "properties": {},
            "additionalProperties": true,
            "description": "Record values keyed by Attio attribute API slug or attribute ID. Values are forwarded using Attio's documented attribute value shapes."
          }
        },
        "additionalProperties": false,
        "description": "Input for upserting an Attio record."
      },
      "outputSchema": {
        "type": "object",
        "properties": {
          "record": {
            "anyOf": [
              {
                "type": "object",
                "properties": {},
                "additionalProperties": true,
                "description": "A raw Attio record returned by the API."
              },
              {
                "type": "null"
              }
            ]
          }
        },
        "additionalProperties": false,
        "description": "A single Attio record result."
      }
    }
  ]
}
