diff --git a/app/en/references/auth-providers/attio/page.mdx b/app/en/references/auth-providers/attio/page.mdx
new file mode 100644
index 000000000..938c008cb
--- /dev/null
+++ b/app/en/references/auth-providers/attio/page.mdx
@@ -0,0 +1,314 @@
+import { Tabs, Callout, Steps } from "nextra/components";
+
+# Attio
+
+The Attio auth provider enables tools and agents to call [Attio APIs](https://developers.attio.com) on behalf of a user.
+
+
+ Want to quickly get started with Attio in your agent or AI app? The
+ [Arcade Attio MCP Server](/resources/integrations/sales/attio) is an [Arcade Optimized](/guides/create-tools/improve/types-of-tools#optimized-tools)
+ toolkit — hand-crafted and optimized for LLM usage.
+
+
+## What's documented here
+
+This page describes how to use and configure Attio auth with Arcade.
+
+This auth provider is used by:
+
+- The [Arcade Attio MCP Server](/resources/integrations/sales/attio), which provides [Arcade Optimized](/guides/create-tools/improve/types-of-tools#optimized-tools) pre-built tools for interacting with Attio
+- Your [app code](#using-attio-auth-in-app-code) that needs to call Attio APIs
+- Or, your [custom tools](#using-attio-auth-in-custom-tools) that need to call Attio APIs
+
+## Use Arcade's Default Attio Auth Provider
+
+
+ Arcade's default Attio OAuth app is currently pending approval from Attio. Until
+ approved, you will need to [use your own Attio app credentials](#use-your-own-attio-app-credentials)
+ to use Attio auth with Arcade.
+
+
+Arcade offers a default Attio auth provider that you can use in the Arcade Cloud Platform. In this case, your users will see `Arcade` as the name of the application that's requesting permission.
+
+If you choose to use Arcade's Attio auth, you don't need to configure anything. Follow the [Attio MCP Server examples](/resources/integrations/sales/attio) to get started calling Attio tools.
+
+## Use Your Own Attio App Credentials
+
+
+ When using your own app credentials, make sure you configure your project to
+ use a [custom user
+ verifier](/guides/user-facing-agents/secure-auth-production#build-a-custom-user-verifier).
+ Without this, your end-users will not be able to use your app or agent in
+ production.
+
+
+In a production environment, you will most likely want to use your own Attio app credentials. This way, your users will see your application's name requesting permission.
+
+Before showing how to configure your Attio app credentials, let's go through the steps to create an Attio integration.
+
+## Create an Attio Integration
+
+
+
+### Create a new integration
+
+Go to the [Attio developer dashboard](https://build.attio.com/) and click **Create a new integration**. Give it a name, description, and optionally an icon.
+
+### Enable OAuth 2.0
+
+Head to the **OAuth** tab in your integration's settings and enable OAuth 2.0 via the toggle at the top of the page.
+
+### Configure the redirect URI
+
+Add the **Redirect URL** generated by Arcade (see below) as a redirect URI for your integration.
+
+### Configure scopes
+
+Head to the **Scopes** tab and enable the scopes your tools need. The Arcade Attio MCP Server requires the following scopes:
+
+- `record_permission:read-write`
+- `object_configuration:read`
+- `user_management:read`
+- `note:read-write`
+- `task:read-write`
+- `list_configuration:read`
+- `list_entry:read-write`
+- `meeting:read`
+- `call_recording:read`
+
+### Copy your credentials
+
+In the **OAuth** tab, copy the **Client ID** and **Client Secret** to use in the Arcade configuration below.
+
+
+
+
+ If you are implementing your own [Attio custom
+ tools](#using-attio-auth-in-custom-tools), make sure to also enable any extra
+ [scopes](https://docs.attio.com/rest-api/guides/authentication) necessary for
+ the actions your tools need to perform.
+
+
+## Configuring your own Attio Auth Provider in Arcade
+
+
+
+
+### Configure Attio Auth Using the Arcade Dashboard GUI
+
+
+
+#### Access the Arcade Dashboard
+
+To access the Arcade Cloud dashboard, go to [api.arcade.dev/dashboard](https://api.arcade.dev/dashboard). If you are self-hosting, by default the dashboard will be available at http://localhost:9099/dashboard. Adjust the host and port number to match your environment.
+
+#### Navigate to the OAuth Providers page
+
+- Under the **Connections** section of the Arcade Dashboard left-side menu, click **Connected Apps**.
+- Click **Add OAuth Provider** in the top right corner.
+- Select the **Included Providers** tab at the top.
+- In the **Provider** dropdown, select **Attio**.
+
+#### Enter the provider details
+
+- Enter `attio` as the **ID** for your provider.
+- Optionally enter a **Description**.
+- Enter the **Client ID** and **Client Secret** from your Attio integration.
+- Note the **Redirect URL** generated by Arcade. This must be added as a redirect URI in your Attio integration's OAuth settings.
+
+#### Create the provider
+
+Hit the **Create** button and the provider will be ready to be used.
+
+
+
+When you use tools that require Attio auth using your Arcade account credentials, Arcade will automatically use this Attio OAuth provider. If you have multiple Attio providers, see [using multiple auth providers of the same type](/references/auth-providers#using-multiple-providers-of-the-same-type) for more information.
+
+
+
+
+## Using Attio auth in app code
+
+Use the Attio auth provider in your own agents and AI apps to get a user-scoped token for the Attio API. See [authorizing agents with Arcade](/get-started/about-arcade) to understand how this works.
+
+Use `client.auth.start()` to get a user token for the Attio API:
+
+
+
+
+```python {21}
+from arcadepy import Arcade
+
+client = Arcade(base_url="https://api.arcade.dev") # Automatically finds the `ARCADE_API_KEY` env variable
+
+user_id = "{arcade_user_id}"
+
+# Start the authorization process
+auth_response = client.auth.start(
+ user_id=user_id,
+ provider="attio",
+ scopes=["record_permission:read", "object_configuration:read"],
+)
+
+if auth_response.status != "completed":
+ print("Please complete the authorization challenge in your browser:")
+ print(auth_response.url)
+
+# Wait for the authorization to complete
+auth_response = client.auth.wait_for_completion(auth_response)
+
+token = auth_response.context.token
+# Do something interesting with the token...
+```
+
+
+
+
+
+```javascript {20}
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade({ baseURL: "https://api.arcade.dev" }); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const userId = "{arcade_user_id}";
+
+// Start the authorization process
+const authResponse = await client.auth.start(userId, "attio", {
+ scopes: ["record_permission:read", "object_configuration:read"],
+});
+
+if (authResponse.status !== "completed") {
+ console.log("Please complete the authorization challenge in your browser:");
+ console.log(authResponse.url);
+}
+
+// Wait for the authorization to complete
+const response = await client.auth.waitForCompletion(authResponse);
+
+const token = response.context.token;
+// Do something interesting with the token...
+```
+
+
+
+
+You can use the auth token to call [Attio API endpoints](https://developers.attio.com) and interact with records, lists, tasks, and more. By changing or adding scopes to the `client.auth.start` call, you can access different Attio endpoints.
+
+The scopes supported by the Arcade Attio auth provider are the ones [listed above](#configure-scopes). If you created your own Attio integration, make sure to enable the scopes you intend to use in the `client.auth.start` call.
+
+## Using Attio auth in custom tools
+
+You can author your own [custom tools](/guides/create-tools/tool-basics/build-mcp-server) that interact with the Attio API.
+
+Use the `OAuth2()` auth class with `id="attio"` to specify that a tool requires authorization with Attio. The authentication token needed to call the Attio API is available in the tool context through the `context.get_auth_token_or_empty()` method.
+
+```python {10,23}
+from typing import Annotated
+
+import httpx
+
+from arcade_tdk import ToolContext, tool
+from arcade_tdk.auth import OAuth2
+
+
+@tool(
+ requires_auth=OAuth2(
+ id="attio",
+ scopes=["record_permission:read", "object_configuration:read"],
+ )
+)
+async def get_company_details(
+ context: ToolContext,
+ company_id: Annotated[
+ str,
+ "The ID of the company to get the details of.",
+ ],
+) -> Annotated[dict, "Details of the company"]:
+ """Gets the details of a company."""
+ url = f"https://api.attio.com/v2/objects/companies/records/{company_id}"
+ headers = {"Authorization": f"Bearer {context.get_auth_token_or_empty()}"}
+
+ async with httpx.AsyncClient() as client:
+ response = await client.get(url, headers=headers)
+ response.raise_for_status()
+ return response.json()
+```
+
+Your new tool can be called like demonstrated below:
+
+
+
+
+ If you are self-hosting, change the `base_url` parameter in the `Arcade` constructor to match your Arcade Engine URL. By default, the Engine will be available at `http://localhost:9099`.
+
+
+```python
+from arcadepy import Arcade
+
+client = Arcade(base_url="https://api.arcade.dev") # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Attio.GetCompanyDetails"
+
+auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID)
+
+if auth_response.status != "completed":
+ print(f"Click this link to authorize: {auth_response.url}")
+
+# Wait for the authorization to complete
+client.auth.wait_for_completion(auth_response)
+
+tool_input = {
+ "company_id": "32134490789",
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(response.output.value)
+```
+
+
+
+
+ If you are self-hosting, change the `baseURL` parameter in the `Arcade` constructor to match your Arcade Engine URL. By default, the Engine will be available at `http://localhost:9099`.
+
+
+```javascript
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade({ baseURL: "https://api.arcade.dev" }); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Attio.GetCompanyDetails";
+
+// Start the authorization process
+const authResponse = await client.tools.authorize({
+ tool_name: TOOL_NAME,
+ user_id: USER_ID,
+});
+
+if (authResponse.status !== "completed") {
+ console.log(`Click this link to authorize: ${authResponse.url}`);
+}
+
+// Wait for the authorization to complete
+await client.auth.waitForCompletion(authResponse);
+
+const toolInput = {
+ company_id: "32134490789",
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(response.output.value);
+```
+
+
+
diff --git a/app/en/references/auth-providers/page.mdx b/app/en/references/auth-providers/page.mdx
index bc3c0151e..2a4540303 100644
--- a/app/en/references/auth-providers/page.mdx
+++ b/app/en/references/auth-providers/page.mdx
@@ -28,6 +28,13 @@ For more information on how to customize your auth provider, select an auth prov
+
+
+The Attio MCP Server is an [Arcade Optimized](/guides/create-tools/improve/types-of-tools#optimized-tools) toolkit that provides tools for interacting with Attio CRM.
+
+- **Records** — Query, get, create (upsert), and update records for people, companies, deals, and custom objects
+- **Lists** — Browse lists, get entries, add records to lists, and remove entries
+- **Activity** — Create notes and tasks linked to records
+- **Meetings** — List meetings for a record, get meeting details, and retrieve call transcripts
+- **Workspace** — Get workspace member info and identify the authenticated user
+
+## Available tools
+
+
+
+
+ If you need to perform an action that's not listed here, you can [get in touch
+ with us](mailto:contact@arcade.dev) to request a new tool, or [create your own
+ tools](/guides/create-tools/tool-basics/build-mcp-server).
+
+
+---
+
+## Record tools
+
+### Attio.ListObjects
+
+List all objects (tables) in the Attio workspace.
+
+Call this first to discover what objects exist. Standard objects include `people`, `companies`, `deals`, `users`. Custom objects will also appear.
+
+**Parameters**
+
+This tool takes no parameters.
+
+---
+
+### Attio.GetObjectSchema
+
+Get the schema/attributes for an Attio object.
+
+Call `ListObjects` first to see available objects, then call this to see their attributes for filtering. Returns attribute names, types, filter syntax hints, and for select/status fields, the available option values to use in filters.
+
+**Parameters**
+
+- **object_type** (`string`, required) Object slug from `ListObjects` (e.g., `people`, `companies`, `deals`)
+
+---
+
+### Attio.QueryRecords
+
+Query Attio records with filtering, sorting, and pagination.
+
+Recommended workflow: 1) `ListObjects`, 2) `GetObjectSchema`, 3) `QueryRecords` with fields.
+
+**Parameters**
+
+- **object_type** (`string`, required) Object slug (e.g., `people`, `companies`, `deals`)
+- **fields** (`array[string]`, required) Fields to return (call `GetObjectSchema` to see available fields)
+- **filter_json** (`string`, _optional_) JSON filter with operators: `$eq`, `$contains`, `$gt`, `$lt`
+- **sort_by** (`string`, _optional_) Attribute to sort by
+- **sort_direction** (`string`, _optional_) Sort direction: `asc` or `desc` (default `desc`)
+- **limit** (`integer`, _optional_) Max records to return (default 25, max 100)
+- **offset** (`integer`, _optional_) Number of records to skip (default 0)
+
+---
+
+### Attio.GetRecord
+
+Get a single Attio record by ID.
+
+Returns the record with flattened values and a direct web URL.
+
+**Parameters**
+
+- **object_type** (`string`, required) Object slug (e.g., `people`, `companies`, `deals`)
+- **record_id** (`string`, required) Record UUID
+
+---
+
+### Attio.AssertRecord
+
+Create or update (upsert) a record using Attio's assert endpoint.
+
+This is idempotent — safe to retry. If a record matching the attribute exists, it will be updated. Otherwise, a new record is created. The `matching_attribute` must be a unique attribute on the object (e.g., `email_addresses` for people, `domains` for companies).
+
+**Parameters**
+
+- **object_type** (`string`, required) Object slug (e.g., `people`, `companies`, `deals`)
+- **matching_attribute** (`string`, required) Unique attribute for upsert match (e.g., `email_addresses`, `domains`)
+- **values** (`object`, required) Attribute values to set on the record
+
+---
+
+### Attio.UpdateRecord
+
+Update a record directly by ID.
+
+Unlike `AssertRecord`, this doesn't require a unique matching attribute. For status fields like `stage`, pass the status title as a string (e.g., `{"stage": "Closed Won"}`).
+
+**Parameters**
+
+- **object_type** (`string`, required) Object slug (e.g., `people`, `companies`, `deals`)
+- **record_id** (`string`, required) Record UUID to update
+- **values** (`object`, required) Attribute values to update on the record
+
+---
+
+## List tools
+
+### Attio.ListLists
+
+Get all lists in the Attio workspace with pagination.
+
+Returns list metadata including ID, name, and parent object type.
+
+**Parameters**
+
+- **limit** (`integer`, _optional_) Max lists to return (default 25)
+- **offset** (`integer`, _optional_) Number of lists to skip (default 0)
+
+---
+
+### Attio.GetListEntries
+
+Get entries from an Attio list with pagination.
+
+Returns entries with their record IDs and flattened list-specific values.
+
+**Parameters**
+
+- **list_id** (`string`, required) List UUID
+- **limit** (`integer`, _optional_) Max entries to return (default 25)
+- **offset** (`integer`, _optional_) Number of entries to skip (default 0)
+
+---
+
+### Attio.AddToList
+
+Add a record to an Attio list.
+
+Optionally set list-specific attribute values via the `entry_values` parameter.
+
+**Parameters**
+
+- **list_id** (`string`, required) List UUID
+- **record_id** (`string`, required) Record UUID to add to the list
+- **entry_values** (`object`, _optional_) List-specific attribute values
+
+---
+
+### Attio.RemoveFromList
+
+Remove a record from an Attio list.
+
+Note: Use the `entry_id`, not the `record_id`. Get entry IDs from `GetListEntries`.
+
+**Parameters**
+
+- **list_id** (`string`, required) List UUID
+- **entry_id** (`string`, required) Entry UUID (not record ID)
+
+---
+
+## Activity tools
+
+### Attio.CreateNote
+
+Add a note to an Attio record.
+
+Notes are useful for logging activities, meeting notes, and outreach history.
+
+**Parameters**
+
+- **parent_object** (`string`, required) Object type to attach note to (`people`, `companies`, or `deals`)
+- **parent_record_id** (`string`, required) Record UUID to attach note to
+- **title** (`string`, required) Note title
+- **content** (`string`, required) Note body text
+- **format_type** (`string`, _optional_) Note format: `plaintext` (default) or `markdown`
+
+---
+
+### Attio.CreateTask
+
+Create a task in Attio.
+
+Tasks are useful for follow-ups, reminders, and action items. Optionally link to a record by providing both `linked_record_id` and `linked_record_object`.
+
+**Parameters**
+
+- **content** (`string`, required) Task description
+- **assignee_id** (`string`, required) Workspace member UUID
+- **deadline** (`string`, required) Due date in ISO 8601 format
+- **linked_record_id** (`string`, _optional_) Record UUID to link to the task
+- **linked_record_object** (`string`, _optional_) Object type of linked record
+
+---
+
+### Attio.ListTasks
+
+Get tasks from Attio with optional filtering and pagination.
+
+**Parameters**
+
+- **assignee_id** (`string`, _optional_) Filter by assignee UUID
+- **is_completed** (`boolean`, _optional_) Filter by completion status
+- **limit** (`integer`, _optional_) Max tasks to return (default 25)
+- **offset** (`integer`, _optional_) Number of tasks to skip (default 0)
+
+---
+
+## Meeting tools
+
+### Attio.ListRecordMeetings
+
+List meetings associated with an Attio record.
+
+Returns meetings linked to a deal, company, or person including meeting ID, title, type, start/end times, and whether the meeting has a call recording.
+
+**Parameters**
+
+- **object_type** (`string`, required) Object type (`people`, `companies`, or `deals`)
+- **record_id** (`string`, required) Record UUID
+- **limit** (`integer`, _optional_) Max meetings to return (default 20)
+- **offset** (`integer`, _optional_) Number of meetings to skip (default 0)
+
+---
+
+### Attio.GetMeeting
+
+Get details of a specific meeting.
+
+Returns meeting metadata, participants, and call recording info if available. Use `call_recording_id` with `GetCallTranscript` to fetch the transcript.
+
+**Parameters**
+
+- **meeting_id** (`string`, required) Meeting UUID
+
+---
+
+### Attio.GetCallTranscript
+
+Get the full transcript from a call recording.
+
+Returns the transcript with speaker labels. Use this after finding a meeting with a call recording via `ListRecordMeetings` or `GetMeeting`.
+
+**Parameters**
+
+- **meeting_id** (`string`, required) Meeting UUID
+- **call_recording_id** (`string`, required) Call recording UUID
+- **include_timestamps** (`boolean`, _optional_) Include start/end times for each segment (default `false`)
+
+---
+
+### Attio.GetDealTranscript
+
+Convenience tool to get a call transcript for a deal in one step.
+
+Finds meetings for the deal, gets the specified meeting's call recording, and returns the full transcript. Combines `ListRecordMeetings` + `GetCallTranscript` into one call.
+
+**Parameters**
+
+- **deal_record_id** (`string`, required) Deal record UUID
+- **meeting_index** (`integer`, _optional_) Which meeting: 0 = most recent, 1 = second most recent (default 0)
+
+---
+
+## Workspace tools
+
+### Attio.WhoAmI
+
+Get the authenticated user's profile and workspace context.
+
+Call this first to understand your identity and permissions. Returns the current user's name, email, and workspace membership info.
+
+**Parameters**
+
+This tool takes no parameters.
+
+---
+
+### Attio.ListWorkspaceMembers
+
+Get all members in the Attio workspace.
+
+Useful for task assignment and understanding who owns records.
+
+**Parameters**
+
+This tool takes no parameters.
+
+---
+
+## Reporting tools
+
+### Attio.CreateReport
+
+Generate a report from Attio records for export to Google Sheets.
+
+Returns data formatted for easy insertion into a spreadsheet: headers (column names), rows (values aligned with headers), and a dict format for the Google Sheets API. Use this output with Google Sheets tools to create a spreadsheet.
+
+**Parameters**
+
+- **object_type** (`string`, required) Object slug (e.g., `people`, `companies`, `deals`, or custom)
+- **attributes** (`array[string]`, _optional_) Attributes to include in the report (defaults to all available)
+- **filter_json** (`array[string]`, _optional_) Filter strings: `{"attribute": "x", "operator": "equals", "value": "y"}`
+- **sort_by** (`string`, _optional_) Attribute to sort by
+- **sort_direction** (`string`, _optional_) Sort direction: `asc` or `desc`
+- **limit** (`integer`, _optional_) Max records to include (1–500)
+
+---
+
+## Auth
+
+The Arcade Cloud Platform offers a default [Attio auth provider](/references/auth-providers/attio). If you use it, there's nothing to configure. Your users will see `Arcade` as the name of the application requesting permission.
+
+
diff --git a/public/images/icons/attio.svg b/public/images/icons/attio.svg
new file mode 100644
index 000000000..353ea2a8f
--- /dev/null
+++ b/public/images/icons/attio.svg
@@ -0,0 +1,14 @@
+
diff --git a/public/llms.txt b/public/llms.txt
index 63cc3b774..e40cd5726 100644
--- a/public/llms.txt
+++ b/public/llms.txt
@@ -1,4 +1,4 @@
-
+
# Arcade
@@ -20,6 +20,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w
- [Arcade MCP (MCP Server SDK) - Python Overview](https://docs.arcade.dev/en/references/mcp/python.md): This documentation page provides an overview of the Arcade MCP (MCP Server SDK) for Python, detailing its purpose as a framework for building secure MCP servers with a minimal API. Users will learn how to utilize the `MCPApp` class for server
- [Asana](https://docs.arcade.dev/en/references/auth-providers/asana.md): This documentation page provides guidance on using the Asana authentication provider within the Arcade platform, enabling users to call Asana APIs on behalf of their applications. It outlines how to quickly set up the default Asana auth provider or configure custom app credentials for production
- [Atlassian](https://docs.arcade.dev/en/references/auth-providers/atlassian.md): This documentation page provides guidance on configuring a custom Atlassian Auth Provider within the Arcade platform, enabling users to authenticate and interact with the Atlassian API. It outlines the steps for creating an Atlassian app, setting up OAuth 2.
+- [Attio](https://docs.arcade.dev/en/references/auth-providers/attio.md): This documentation page provides guidance on using and configuring the Attio authentication provider within the Arcade platform, enabling users to call Attio APIs through their applications or custom tools. It outlines the steps for utilizing Arcade's default Attio auth provider or setting up personal
- [Auth Providers](https://docs.arcade.dev/en/references/auth-providers.md): The "Auth Providers" documentation page serves as a comprehensive registry of authentication providers available within the Arcade ecosystem, enabling users to securely grant Arcade tools access to their data. It outlines the benefits of using Arcade's built-in auth providers versus configuring custom ones,
- [Calendly](https://docs.arcade.dev/en/references/auth-providers/calendly.md): This documentation page provides guidance on configuring the Calendly authentication provider for use with Arcade, enabling users to access Calendly APIs through OAuth 2.0. It outlines the steps for creating a Calendly developer account, registering an OAuth application, and integrating
- [Changelog](https://docs.arcade.dev/en/references/changelog.md): The Changelog documentation page provides users with a comprehensive overview of the latest updates, features, bug fixes, and maintenance changes for Arcade.dev. It details enhancements across various components, including Arcade MCP servers, the Arcade CLI, and toolkits, helping users
@@ -80,6 +81,7 @@ Arcade delivers three core capabilities: Deploy agents even your security team w
- [Asana Reference](https://docs.arcade.dev/en/resources/integrations/productivity/asana/reference.md): The Asana Reference documentation provides a comprehensive list of enumerations related to tag colors, task sorting options, and sort orders used in the Asana MCP Server. Users can utilize this reference to understand and implement the various color codes and sorting parameters effectively in
- [AsanaApi](https://docs.arcade.dev/en/resources/integrations/productivity/asana-api.md): The AsanaApi documentation provides users with tools and resources to effectively interact with the Asana API, enabling various actions such as managing access requests, allocations, custom fields, and goal relationships. It outlines a comprehensive set of functionalities that facilitate project management tasks
- [AshbyApi](https://docs.arcade.dev/en/resources/integrations/productivity/ashby-api.md): The AshbyApi documentation provides a comprehensive guide for users to effectively manage recruitment processes within the Ashby platform using various API tools. It enables users to create and update job applications, retrieve candidate information, manage interview schedules, and streamline hiring workflows through a
+- [Attio](https://docs.arcade.dev/en/resources/integrations/sales/attio.md): This documentation page provides a comprehensive guide for users to interact with the Attio CRM through the Attio MCP Server toolkit. It outlines various tools available for managing records, lists, activities, meetings, and workspace information, enabling users to perform actions such as
- [Authorized Tool Calling](https://docs.arcade.dev/en/guides/tool-calling/custom-apps/auth-tool-calling.md): The "Authorized Tool Calling" documentation provides a comprehensive guide for developers on how to securely authorize AI agents to access external services using OAuth 2.0, API keys, and user tokens. It outlines the steps for initializing the Arcade client, obtaining user
- [BoxApi](https://docs.arcade.dev/en/resources/integrations/productivity/box-api.md): The BoxApi documentation provides users with tools to manage and automate various aspects of Box content, including file management, metadata handling, collaboration, document generation, and enterprise operations. It outlines capabilities for interacting with Box's API, enabling users to build applications or
- [Brightdata](https://docs.arcade.dev/en/resources/integrations/development/brightdata.md): The Brightdata documentation page provides users with tools and guidance for scraping, searching, and extracting structured data from various websites at scale without being blocked. It outlines specific functionalities such as scraping web pages in Markdown format, performing advanced searches across major search engines,