diff --git a/pages/toolkits/productivity/hubspot.mdx b/pages/toolkits/productivity/hubspot.mdx
new file mode 100644
index 00000000..a4265c13
--- /dev/null
+++ b/pages/toolkits/productivity/hubspot.mdx
@@ -0,0 +1,946 @@
+# Hubspot
+
+import ToolInfo from "@/components/ToolInfo";
+import Badges from "@/components/Badges";
+import TabbedCodeBlock from "@/components/TabbedCodeBlock";
+import TableOfContents from "@/components/TableOfContents";
+import ToolFooter from "@/components/ToolFooter";
+
+
+
+
+
+The Hubspot toolkit provides a focused set of tools for interacting with HubSpot objects, activities, and users.
+
+Use this toolkit to manage HubSpot users, create and log engagement activities, create and associate contacts/companies/deals, and query related records and pipeline metadata.
+
+## 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](/home/build-tools/create-a-toolkit).
+
+
+## Hubspot.GetAllUsers
+
+
+
+
+Get all users/owners in the HubSpot portal.
+
+**Parameters**
+
+This tool does not take any parameters.
+
+## Hubspot.GetUserById
+
+
+
+
+Get detailed information about a specific user/owner by their ID.
+
+**Parameters**
+
+- **owner_id** (`integer`, required) The HubSpot owner/user ID to retrieve
+
+
+## Hubspot.WhoAmI
+
+
+
+
+Get current user information from HubSpot.
+
+**Parameters**
+
+This tool does not take any parameters.
+
+## Hubspot.ToolkitEnviromentGuidance
+
+
+
+
+Get guidance and considerations for using the HubSpot toolkit effectively.
+
+**Parameters**
+
+This tool does not take any parameters.
+
+## Hubspot.CreateNoteActivity
+
+
+
+
+Create a note engagement activity with required owner and associations.
+
+**Parameters**
+
+- **body** (`string`, required) The note content/body.
+- **when_occurred** (`string`, required) When the note was created (ISO date format: YYYY-MM-DDTHH:MM:SS).
+- **associate_to_contact_id** (`integer`, optional) Contact ID to associate this note with.
+- **associate_to_company_id** (`integer`, optional) Company ID to associate this note with.
+- **associate_to_deal_id** (`integer`, optional) Deal ID to associate this note with.
+
+
+## Hubspot.CreateCallActivity
+
+
+
+
+Create a call engagement activity with required owner and associations.
+
+**Parameters**
+
+- **title** (`string`, required) Short title for the call.
+- **when_occurred** (`string`, required) When the call occurred (ISO date format: YYYY-MM-DDTHH:MM:SS).
+- **direction** (`Enum` [HubspotCallDirection](/toolkits/productivity/hubspot/reference#HubspotCallDirection), optional) Call direction (INBOUND or OUTBOUND).
+- **summary** (`string`, optional) Short summary/notes of the call.
+- **duration** (`integer`, optional) Call duration in seconds.
+- **to_number** (`string`, optional) Phone number called to.
+- **from_number** (`string`, optional) Phone number called from.
+- **associate_to_contact_id** (`integer`, optional) Contact ID to associate this call with.
+- **associate_to_company_id** (`integer`, optional) Company ID to associate this call with.
+- **associate_to_deal_id** (`integer`, optional) Deal ID to associate this call with.
+
+
+## Hubspot.CreateEmailActivity
+
+
+
+
+Create a logged email engagement activity with essential fields including email headers.
+
+**Parameters**
+
+- **subject** (`string`, required) Email subject.
+- **when_occurred** (`string`, required) When the email occurred (ISO date format: YYYY-MM-DDTHH:MM:SS).
+- **from_email** (`string`, required) Sender email address.
+- **to_email** (`string`, required) Primary recipient email address.
+- **body_text** (`string`, optional) Email body in plain text.
+- **body_html** (`string`, optional) Email body in HTML format.
+- **from_first_name** (`string`, optional) Sender first name.
+- **from_last_name** (`string`, optional) Sender last name.
+- **to_first_name** (`string`, optional) Primary recipient first name.
+- **to_last_name** (`string`, optional) Primary recipient last name.
+- **cc_emails** (`array[string]`, optional) CC recipient email addresses.
+- **bcc_emails** (`array[string]`, optional) BCC recipient email addresses.
+- **direction** (`Enum` [HubspotEmailDirection](/toolkits/productivity/hubspot/reference#HubspotEmailDirection), optional) Direction the email was sent (EMAIL, INCOMING_EMAIL, FORWARDED_EMAIL).
+- **status** (`Enum` [HubspotEmailStatus](/toolkits/productivity/hubspot/reference#HubspotEmailStatus), optional) Email status indicating the state of the email.
+- **associate_to_contact_id** (`integer`, optional) Contact ID to associate this email with.
+- **associate_to_company_id** (`integer`, optional) Company ID to associate this email with.
+- **associate_to_deal_id** (`integer`, optional) Deal ID to associate this email with.
+
+
+## Hubspot.CreateMeetingActivity
+
+
+
+
+Create a meeting with essential fields including separate date and time.
+
+**Parameters**
+
+- **title** (`string`, required) Meeting title.
+- **start_date** (`string`, required) Start date (YYYY-MM-DD format).
+- **start_time** (`string`, required) Start time (HH:MM or HH:MM:SS format).
+- **duration** (`string`, optional) Meeting duration in HH:MM format (e.g., 1:30 for 1 hour 30 minutes).
+- **location** (`string`, optional) Meeting location.
+- **outcome** (`Enum` [HubspotMeetingOutcome](/toolkits/productivity/hubspot/reference#HubspotMeetingOutcome), optional) Meeting outcome.
+- **associate_to_contact_id** (`integer`, optional) Contact ID to associate this meeting with.
+- **associate_to_company_id** (`integer`, optional) Company ID to associate this meeting with.
+- **associate_to_deal_id** (`integer`, optional) Deal ID to associate this meeting with.
+
+
+## Hubspot.CreateCommunicationActivity
+
+
+
+
+Create a communication activity for logging communications that are not done via
+
+**Parameters**
+
+- **channel** (`Enum` [HubspotCommunicationChannel](/toolkits/productivity/hubspot/reference#HubspotCommunicationChannel), required) Communication channel type.
+- **when_occurred** (`string`, required) When the communication occurred (ISO date format: YYYY-MM-DDTHH:MM:SS).
+- **body_text** (`string`, optional) Full message content.
+- **associate_to_contact_id** (`integer`, optional) Contact ID to associate this communication with.
+- **associate_to_company_id** (`integer`, optional) Company ID to associate this communication with.
+- **associate_to_deal_id** (`integer`, optional) Deal ID to associate this communication with.
+
+
+## Hubspot.AssociateActivityToDeal
+
+
+
+
+Associate a single activity object to a deal using HubSpot standard association type.
+
+**Parameters**
+
+- **activity_type** (`Enum` [HubspotActivityType](/toolkits/productivity/hubspot/reference#HubspotActivityType), required) Engagement activity type.
+- **activity_id** (`integer`, required) The activity object ID
+- **deal_id** (`integer`, required) The deal ID to associate to
+
+
+## Hubspot.GetContactDataByKeywords
+
+
+
+
+Retrieve contact data with associated companies, deals, calls, emails,
+
+**Parameters**
+
+- **keywords** (`string`, required) The keywords to search for contacts. It will match against the contact's first and last name, email addresses, phone numbers, and company name.
+- **limit** (`integer`, optional) The maximum number of contacts to return. Defaults to 10. Max is 100.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.CreateContact
+
+
+
+
+Create a contact associated with a company.
+
+**Parameters**
+
+- **company_id** (`integer`, required) The ID of the company to create the contact for.
+- **first_name** (`string`, required) The first name of the contact.
+- **last_name** (`string`, optional) The last name of the contact.
+- **email** (`string`, optional) The email address of the contact.
+- **phone** (`string`, optional) The phone number of the contact.
+- **mobile_phone** (`string`, optional) The mobile phone number of the contact.
+- **job_title** (`string`, optional) The job title of the contact.
+
+
+## Hubspot.ListContacts
+
+
+
+
+List contacts with optional filtering by company ID or deal ID, with pagination support.
+
+**Parameters**
+
+- **limit** (`integer`, optional) The maximum number of contacts to return. Defaults to 10. Max is 50.
+- **company_id** (`integer`, optional) Filter contacts by company ID. Defaults to None (no filtering).
+- **deal_id** (`integer`, optional) Filter contacts by deal ID. Defaults to None (no filtering).
+- **sort_order** (`Enum` [HubspotSortOrder](/toolkits/productivity/hubspot/reference#HubspotSortOrder), optional) Sort order for results. Defaults to LATEST_MODIFIED.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.GetDealDataByKeywords
+
+
+
+
+Retrieve deal data with associated contacts, companies, calls, emails,
+
+**Parameters**
+
+- **keywords** (`string`, required) The keywords to search for deals. It will match against the deal name and description.
+- **limit** (`integer`, optional) The maximum number of deals to return. Defaults to 10. Max is 10.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.CreateDeal
+
+
+
+
+Create a new deal in HubSpot.
+
+**Parameters**
+
+- **deal_name** (`string`, required) The deal name (required)
+- **deal_amount** (`number`, optional) The deal amount/value
+- **deal_stage** (`string`, optional) The deal stage
+- **deal_type** (`Enum` [HubspotDealType](/toolkits/productivity/hubspot/reference#HubspotDealType), optional) The deal type.
+- **expected_close_date** (`string`, optional) Expected close date in YYYY-MM-DD format
+- **pipeline_id** (`string`, optional) Pipeline id. Use 'default' for default pipeline or pass a pipeline id (integer)
+- **deal_owner** (`string`, optional) The deal owner user ID
+- **priority_level** (`Enum` [HubspotDealPriority](/toolkits/productivity/hubspot/reference#HubspotDealPriority), optional) Priority level.
+- **deal_description** (`string`, optional) The deal description
+
+
+## Hubspot.UpdateDealCloseDate
+
+
+
+
+Update the expected close date of an existing deal in HubSpot.
+
+**Parameters**
+
+- **deal_id** (`integer`, required) The ID of the deal to update
+- **expected_close_date** (`string`, required) New expected close date in YYYY-MM-DD format
+
+
+## Hubspot.UpdateDealStage
+
+
+
+
+Updates a deal's stage, validating against the current pipeline if provided
+
+**Parameters**
+
+- **deal_id** (`integer`, required) The ID of the deal to update
+- **deal_stage** (`string`, required) New deal stage ID
+- **current_pipeline_id** (`string`, optional) Current pipeline id for this deal, if already known (skips fetching the deal)
+- **allow_pipeline_change** (`boolean`, optional) If true, allows changing the deal's pipeline when the stage belongs to another pipeline
+
+
+## Hubspot.GetDealById
+
+
+
+
+Retrieve a specific deal by its ID from HubSpot.
+
+**Parameters**
+
+- **deal_id** (`integer`, required) The ID of the deal to retrieve
+
+
+## Hubspot.AssociateContactToDeal
+
+
+
+
+Associate a contact with an existing deal in HubSpot.
+
+**Parameters**
+
+- **deal_id** (`integer`, required) The ID of the deal to associate the contact with
+- **contact_id** (`integer`, required) The ID of the contact to associate with the deal
+
+
+## Hubspot.ListDeals
+
+
+
+
+List deals with optional filtering by contact ID or company ID, with pagination support.
+
+**Parameters**
+
+- **limit** (`integer`, optional) The maximum number of deals to return. Defaults to 10. Max is 50.
+- **contact_id** (`integer`, optional) Filter deals by contact ID. Defaults to None (no filtering).
+- **company_id** (`integer`, optional) Filter deals by company ID. Defaults to None (no filtering).
+- **sort_order** (`Enum` [HubspotSortOrder](/toolkits/productivity/hubspot/reference#HubspotSortOrder), optional) Sort order for results. Defaults to LATEST_MODIFIED.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.GetNoteDataByKeywords
+
+
+
+
+Search for note activities by search terms in NOTE object properties.
+
+**Parameters**
+
+- **search_terms** (`string`, required) Search phrase or terms to find in NOTE properties.
+- **limit** (`integer`, optional) The maximum number of notes to return. Defaults to 10. Max is 50.
+- **truncate_big_strings** (`boolean`, optional) Whether to truncate string properties longer than 100 characters. Defaults to False.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.GetCallDataByKeywords
+
+
+
+
+Search for call activities by search terms in CALL object properties.
+
+**Parameters**
+
+- **search_terms** (`string`, required) Search phrase or terms to find in CALL properties.
+- **limit** (`integer`, optional) The maximum number of calls to return. Defaults to 10. Max is 50.
+- **truncate_big_strings** (`boolean`, optional) Whether to truncate string properties longer than 100 characters. Defaults to False.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.GetEmailDataByKeywords
+
+
+
+
+Search for email activities by search terms in EMAIL object properties.
+
+**Parameters**
+
+- **search_terms** (`string`, required) Search phrase or terms to find in EMAIL properties.
+- **limit** (`integer`, optional) The maximum number of emails to return. Defaults to 10. Max is 50.
+- **truncate_big_strings** (`boolean`, optional) Whether to truncate string properties longer than 100 characters. Defaults to False.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.GetMeetingDataByKeywords
+
+
+
+
+Search for meeting activities by search terms in MEETING object properties.
+
+**Parameters**
+
+- **search_terms** (`string`, required) Search phrase or terms to find in MEETING properties.
+- **limit** (`integer`, optional) The maximum number of meetings to return. Defaults to 10. Max is 50.
+- **truncate_big_strings** (`boolean`, optional) Whether to truncate string properties longer than 100 characters. Defaults to False.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.GetTaskDataByKeywords
+
+
+
+
+Search for task activities by search terms in TASK object properties.
+
+**Parameters**
+
+- **search_terms** (`string`, required) Search phrase or terms to find in TASK properties.
+- **limit** (`integer`, optional) The maximum number of tasks to return. Defaults to 10. Max is 50.
+- **truncate_big_strings** (`boolean`, optional) Whether to truncate string properties longer than 100 characters. Defaults to False.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.GetCommunicationDataByKeywords
+
+
+
+
+Search for communication activities by search terms in COMMUNICATION object properties.
+
+**Parameters**
+
+- **search_terms** (`string`, required) Search phrase or terms to find in COMMUNICATION properties.
+- **limit** (`integer`, optional) The maximum number of communications to return. Defaults to 10. Max is 50.
+- **truncate_big_strings** (`boolean`, optional) Whether to truncate string properties longer than 100 characters. Defaults to False.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.GetCompanyDataByKeywords
+
+
+
+
+Retrieve company data with associated contacts, deals, calls, emails,
+
+**Parameters**
+
+- **keywords** (`string`, required) The keywords to search for companies. It will match against the company name, phone, and website.
+- **limit** (`integer`, optional) The maximum number of companies to return. Defaults to 10. Max is 10.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.CreateCompany
+
+
+
+
+Create a new company in HubSpot.
+
+**Parameters**
+
+- **company_name** (`string`, required) The company name (required)
+- **web_domain** (`string`, optional) The company web domain (e.g., example.com)
+- **industry_type** (`string`, optional) The company industry type (case-insensitive).
+- **company_city** (`string`, optional) The company city location
+- **company_state** (`string`, optional) The company state or province
+- **company_country** (`string`, optional) The company country
+- **phone_number** (`string`, optional) The company main phone number
+- **website_url** (`string`, optional) The company website URL
+
+
+## Hubspot.ListCompanies
+
+
+
+
+List companies with pagination support.
+
+**Parameters**
+
+- **limit** (`integer`, optional) The maximum number of companies to return. Defaults to 10. Max is 50.
+- **sort_order** (`Enum` [HubspotSortOrder](/toolkits/productivity/hubspot/reference#HubspotSortOrder), optional) Sort order for results. Defaults to LATEST_MODIFIED.
+- **next_page_token** (`string`, optional) The token to get the next page of results. Defaults to None (returns first page of results)
+
+
+## Hubspot.GetAvailableIndustryTypes
+
+
+
+
+Get all available industry types for HubSpot companies.
+
+**Parameters**
+
+This tool does not take any parameters.
+
+## Hubspot.GetDealPipelines
+
+
+
+
+List HubSpot deal pipelines with their stages, optionally filtered by a search string.
+
+**Parameters**
+
+- **search** (`string`, optional) Optional case-insensitive search string to filter pipelines by id or label
+
+
+## Hubspot.GetDealPipelineStages
+
+
+
+
+List stages for a specific HubSpot deal pipeline.
+
+**Parameters**
+
+- **pipeline_id** (`string`, required) The pipeline id (e.g., 'default' or a pipeline GUID)
+
+
+
+## Reference
+
+Below is a reference of enumerations used by some of the tools in the Hubspot toolkit:
+
+## HubspotCallDirection
+
+- **INBOUND**: `INBOUND`
+- **OUTBOUND**: `OUTBOUND`
+
+## HubspotEmailDirection
+
+- **EMAIL**: `EMAIL`
+- **INCOMING_EMAIL**: `INCOMING_EMAIL`
+- **FORWARDED_EMAIL**: `FORWARDED_EMAIL`
+
+## HubspotEmailStatus
+
+- **BOUNCED**: `BOUNCED`
+- **FAILED**: `FAILED`
+- **SCHEDULED**: `SCHEDULED`
+- **SENDING**: `SENDING`
+- **SENT**: `SENT`
+
+## HubspotMeetingOutcome
+
+- **SCHEDULED**: `SCHEDULED`
+- **COMPLETED**: `COMPLETED`
+- **RESCHEDULED**: `RESCHEDULED`
+- **NO_SHOW**: `NO_SHOW`
+- **CANCELED**: `CANCELED`
+
+## HubspotCommunicationChannel
+
+- **SMS**: `SMS`
+- **WHATS_APP**: `WHATS_APP`
+- **LINKEDIN_MESSAGE**: `LINKEDIN_MESSAGE`
+- **PHYSICAL_MAIL**: `PHYSICAL_MAIL`
+- **CUSTOM_CHANNEL_CONVERSATION**: `CUSTOM_CHANNEL_CONVERSATION`
+
+## HubspotActivityType
+
+- **NOTE**: `note`
+- **CALL**: `call`
+- **EMAIL**: `email`
+- **MEETING**: `meeting`
+- **TASK**: `task`
+- **COMMUNICATION**: `communication`
+
+## HubspotSortOrder
+
+- **LATEST_MODIFIED**: `LATEST_MODIFIED`
+- **OLDEST_MODIFIED**: `OLDEST_MODIFIED`
+- **ALPHABETICAL**: `ALPHABETICAL`
+
+## HubspotDealType
+
+- **NEW_BUSINESS**: `newbusiness`
+- **EXISTING_BUSINESS**: `existingbusiness`
+
+## HubspotDealPriority
+
+- **LOW**: `low`
+- **MEDIUM**: `medium`
+- **HIGH**: `high`
+
+
+
+## Auth
+
+The Arcade Hubspot toolkit uses the [Hubspot auth provider](/home/auth-providers/hubspot) to connect to users' Hubspot accounts. Please refer to the [Hubspot auth provider](/home/auth-providers/hubspot) documentation to learn how to configure auth.
+
+
diff --git a/pages/toolkits/productivity/hubspot/reference.mdx b/pages/toolkits/productivity/hubspot/reference.mdx
new file mode 100644
index 00000000..3a02811c
--- /dev/null
+++ b/pages/toolkits/productivity/hubspot/reference.mdx
@@ -0,0 +1,64 @@
+# Hubspot Reference
+
+Below is a reference of enumerations used by some of the tools in the Hubspot toolkit:
+
+## HubspotCallDirection
+
+- **INBOUND**: `INBOUND`
+- **OUTBOUND**: `OUTBOUND`
+
+## HubspotEmailDirection
+
+- **EMAIL**: `EMAIL`
+- **INCOMING_EMAIL**: `INCOMING_EMAIL`
+- **FORWARDED_EMAIL**: `FORWARDED_EMAIL`
+
+## HubspotEmailStatus
+
+- **BOUNCED**: `BOUNCED`
+- **FAILED**: `FAILED`
+- **SCHEDULED**: `SCHEDULED`
+- **SENDING**: `SENDING`
+- **SENT**: `SENT`
+
+## HubspotMeetingOutcome
+
+- **SCHEDULED**: `SCHEDULED`
+- **COMPLETED**: `COMPLETED`
+- **RESCHEDULED**: `RESCHEDULED`
+- **NO_SHOW**: `NO_SHOW`
+- **CANCELED**: `CANCELED`
+
+## HubspotCommunicationChannel
+
+- **SMS**: `SMS`
+- **WHATS_APP**: `WHATS_APP`
+- **LINKEDIN_MESSAGE**: `LINKEDIN_MESSAGE`
+- **PHYSICAL_MAIL**: `PHYSICAL_MAIL`
+- **CUSTOM_CHANNEL_CONVERSATION**: `CUSTOM_CHANNEL_CONVERSATION`
+
+## HubspotActivityType
+
+- **NOTE**: `note`
+- **CALL**: `call`
+- **EMAIL**: `email`
+- **MEETING**: `meeting`
+- **TASK**: `task`
+- **COMMUNICATION**: `communication`
+
+## HubspotSortOrder
+
+- **LATEST_MODIFIED**: `LATEST_MODIFIED`
+- **OLDEST_MODIFIED**: `OLDEST_MODIFIED`
+- **ALPHABETICAL**: `ALPHABETICAL`
+
+## HubspotDealType
+
+- **NEW_BUSINESS**: `newbusiness`
+- **EXISTING_BUSINESS**: `existingbusiness`
+
+## HubspotDealPriority
+
+- **LOW**: `low`
+- **MEDIUM**: `medium`
+- **HIGH**: `high`
diff --git a/public/examples/integrations/toolkits/hubspot/associate_activity_to_deal_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/associate_activity_to_deal_example_call_tool.js
new file mode 100644
index 00000000..36283a98
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/associate_activity_to_deal_example_call_tool.js
@@ -0,0 +1,33 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.AssociateActivityToDeal";
+
+// 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 = {
+ "activity_type": "call",
+ "activity_id": 123456,
+ "deal_id": 98765
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/associate_activity_to_deal_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/associate_activity_to_deal_example_call_tool.py
new file mode 100644
index 00000000..393d8806
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/associate_activity_to_deal_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.AssociateActivityToDeal"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'activity_type': 'call', 'activity_id': 123456, 'deal_id': 98765
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/associate_contact_to_deal_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/associate_contact_to_deal_example_call_tool.js
new file mode 100644
index 00000000..072011dd
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/associate_contact_to_deal_example_call_tool.js
@@ -0,0 +1,32 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.AssociateContactToDeal";
+
+// 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 = {
+ "deal_id": 12345,
+ "contact_id": 67890
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/associate_contact_to_deal_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/associate_contact_to_deal_example_call_tool.py
new file mode 100644
index 00000000..de99d6e7
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/associate_contact_to_deal_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.AssociateContactToDeal"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'deal_id': 12345, 'contact_id': 67890
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/create_call_activity_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/create_call_activity_example_call_tool.js
new file mode 100644
index 00000000..eab27331
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_call_activity_example_call_tool.js
@@ -0,0 +1,39 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.CreateCallActivity";
+
+// 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 = {
+ "title": "Intro demo call",
+ "when_occurred": "2025-09-11T14:30:00",
+ "direction": "OUTBOUND",
+ "summary": "Discussed project kickoff and next steps",
+ "duration": 900,
+ "to_number": "+15551234567",
+ "from_number": "+15557654321",
+ "associate_to_contact_id": 1023,
+ "associate_to_company_id": 58
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/create_call_activity_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/create_call_activity_example_call_tool.py
new file mode 100644
index 00000000..55c4ba8e
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_call_activity_example_call_tool.py
@@ -0,0 +1,37 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.CreateCallActivity"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'title': 'Intro demo call',
+ 'when_occurred': '2025-09-11T14:30:00',
+ 'direction': 'OUTBOUND',
+ 'summary': 'Discussed project kickoff and next steps',
+ 'duration': 900,
+ 'to_number': '+15551234567',
+ 'from_number': '+15557654321',
+ 'associate_to_contact_id': 1023,
+ 'associate_to_company_id': 58
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/create_communication_activity_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/create_communication_activity_example_call_tool.js
new file mode 100644
index 00000000..e1676d3b
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_communication_activity_example_call_tool.js
@@ -0,0 +1,35 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.CreateCommunicationActivity";
+
+// 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 = {
+ "channel": "WHATS_APP",
+ "when_occurred": "2025-09-10T14:30:00",
+ "body_text": "Sent follow-up about proposal and asked if they needed any changes.",
+ "associate_to_contact_id": 78431,
+ "associate_to_company_id": 1209
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/create_communication_activity_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/create_communication_activity_example_call_tool.py
new file mode 100644
index 00000000..7a666be9
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_communication_activity_example_call_tool.py
@@ -0,0 +1,33 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.CreateCommunicationActivity"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'channel': 'WHATS_APP',
+ 'when_occurred': '2025-09-10T14:30:00',
+ 'body_text': 'Sent follow-up about proposal and asked if they needed any changes.',
+ 'associate_to_contact_id': 78431,
+ 'associate_to_company_id': 1209
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/create_company_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/create_company_example_call_tool.js
new file mode 100644
index 00000000..82f1af5b
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_company_example_call_tool.js
@@ -0,0 +1,38 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.CreateCompany";
+
+// 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_name": "Acme Analytics",
+ "web_domain": "acme-analytics.com",
+ "industry_type": "technology",
+ "company_city": "San Francisco",
+ "company_state": "CA",
+ "company_country": "USA",
+ "phone_number": "+1-415-555-0123",
+ "website_url": "https://www.acme-analytics.com"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/create_company_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/create_company_example_call_tool.py
new file mode 100644
index 00000000..c05289f0
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_company_example_call_tool.py
@@ -0,0 +1,36 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.CreateCompany"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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_name': 'Acme Analytics',
+ 'web_domain': 'acme-analytics.com',
+ 'industry_type': 'technology',
+ 'company_city': 'San Francisco',
+ 'company_state': 'CA',
+ 'company_country': 'USA',
+ 'phone_number': '+1-415-555-0123',
+ 'website_url': 'https://www.acme-analytics.com'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/create_contact_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/create_contact_example_call_tool.js
index ab1c0e36..ada7b13c 100644
--- a/public/examples/integrations/toolkits/hubspot/create_contact_example_call_tool.js
+++ b/public/examples/integrations/toolkits/hubspot/create_contact_example_call_tool.js
@@ -7,8 +7,8 @@ const TOOL_NAME = "Hubspot.CreateContact";
// Start the authorization process
const authResponse = await client.tools.authorize({
- tool_name: TOOL_NAME,
- user_id: USER_ID,
+ tool_name: TOOL_NAME,
+ user_id: USER_ID
});
if (authResponse.status !== "completed") {
@@ -19,13 +19,13 @@ if (authResponse.status !== "completed") {
await client.auth.waitForCompletion(authResponse);
const toolInput = {
- company_id: "1234567890",
- first_name: "John",
- last_name: "Doe",
- email: "john.doe@example.com",
- phone: "+1234567890",
- mobile_phone: "+1234567890",
- job_title: "Software Engineer",
+ "company_id": 12345,
+ "first_name": "Aisha",
+ "last_name": "Khan",
+ "email": "aisha.khan@example.com",
+ "phone": "+1-415-555-0123",
+ "mobile_phone": "+1-415-555-0456",
+ "job_title": "Product Manager"
};
const response = await client.tools.execute({
@@ -34,4 +34,4 @@ const response = await client.tools.execute({
user_id: USER_ID,
});
-console.log(response.output.value);
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/create_contact_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/create_contact_example_call_tool.py
index 6ef28136..ae195695 100644
--- a/public/examples/integrations/toolkits/hubspot/create_contact_example_call_tool.py
+++ b/public/examples/integrations/toolkits/hubspot/create_contact_example_call_tool.py
@@ -1,3 +1,4 @@
+import json
from arcadepy import Arcade
client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
@@ -5,7 +6,10 @@
USER_ID = "{arcade_user_id}"
TOOL_NAME = "Hubspot.CreateContact"
-auth_response = client.tools.authorize(tool_name=TOOL_NAME, user_id=USER_ID)
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
if auth_response.status != "completed":
print(f"Click this link to authorize: {auth_response.url}")
@@ -14,13 +18,13 @@
client.auth.wait_for_completion(auth_response)
tool_input = {
- "company_id": "1234567890",
- "first_name": "John",
- "last_name": "Doe",
- "email": "john.doe@example.com",
- "phone": "+1234567890",
- "mobile_phone": "+1234567890",
- "job_title": "Software Engineer",
+ 'company_id': 12345,
+ 'first_name': 'Aisha',
+ 'last_name': 'Khan',
+ 'email': 'aisha.khan@example.com',
+ 'phone': '+1-415-555-0123',
+ 'mobile_phone': '+1-415-555-0456',
+ 'job_title': 'Product Manager'
}
response = client.tools.execute(
@@ -28,4 +32,4 @@
input=tool_input,
user_id=USER_ID,
)
-print(response.output.value)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/create_deal_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/create_deal_example_call_tool.js
new file mode 100644
index 00000000..8c441b2c
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_deal_example_call_tool.js
@@ -0,0 +1,39 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.CreateDeal";
+
+// 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 = {
+ "deal_name": "Q3 Enterprise Renewal",
+ "deal_amount": 125000,
+ "deal_stage": "appointmentscheduled",
+ "deal_type": "existingbusiness",
+ "expected_close_date": "2025-10-15",
+ "pipeline_id": "default",
+ "deal_owner": "78945",
+ "priority_level": "high",
+ "deal_description": "Renewal for enterprise account with added support package."
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/create_deal_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/create_deal_example_call_tool.py
new file mode 100644
index 00000000..930de176
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_deal_example_call_tool.py
@@ -0,0 +1,37 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.CreateDeal"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'deal_name': 'Q3 Enterprise Renewal',
+ 'deal_amount': 125000,
+ 'deal_stage': 'appointmentscheduled',
+ 'deal_type': 'existingbusiness',
+ 'expected_close_date': '2025-10-15',
+ 'pipeline_id': 'default',
+ 'deal_owner': '78945',
+ 'priority_level': 'high',
+ 'deal_description': 'Renewal for enterprise account with added support package.'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/create_email_activity_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/create_email_activity_example_call_tool.js
new file mode 100644
index 00000000..d8d88792
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_email_activity_example_call_tool.js
@@ -0,0 +1,50 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.CreateEmailActivity";
+
+// 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 = {
+ "subject": "Quarterly Partnership Update",
+ "when_occurred": "2025-09-10T14:30:00",
+ "from_email": "alex.sender@example.com",
+ "to_email": "jordan.partner@example.com",
+ "body_text": "Hi Jordan,\n\nPlease find the Q3 partnership summary attached.\n\nBest,\nAlex",
+ "body_html": "
Hi Jordan,
Please find the Q3 partnership summary attached.
Best,
Alex
",
+ "from_first_name": "Alex",
+ "from_last_name": "Sender",
+ "to_first_name": "Jordan",
+ "to_last_name": "Partner",
+ "cc_emails": [
+ "pm@example.com"
+ ],
+ "bcc_emails": [
+ "archive@example.com"
+ ],
+ "direction": "EMAIL",
+ "status": "SENT",
+ "associate_to_contact_id": 742,
+ "associate_to_company_id": 58
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/create_email_activity_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/create_email_activity_example_call_tool.py
new file mode 100644
index 00000000..0506e505
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_email_activity_example_call_tool.py
@@ -0,0 +1,45 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.CreateEmailActivity"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'subject': 'Quarterly Partnership Update',
+ 'when_occurred': '2025-09-10T14:30:00',
+ 'from_email': 'alex.sender@example.com',
+ 'to_email': 'jordan.partner@example.com',
+ 'body_text': 'Hi Jordan,\n\nPlease find the Q3 partnership summary attached.\n\nBest,\nAlex',
+ 'body_html': 'Hi Jordan,
Please find the Q3 partnership summary '
+ 'attached.
Best,
Alex
',
+ 'from_first_name': 'Alex',
+ 'from_last_name': 'Sender',
+ 'to_first_name': 'Jordan',
+ 'to_last_name': 'Partner',
+ 'cc_emails': ['pm@example.com'],
+ 'bcc_emails': ['archive@example.com'],
+ 'direction': 'EMAIL',
+ 'status': 'SENT',
+ 'associate_to_contact_id': 742,
+ 'associate_to_company_id': 58
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/create_meeting_activity_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/create_meeting_activity_example_call_tool.js
new file mode 100644
index 00000000..7d610a45
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_meeting_activity_example_call_tool.js
@@ -0,0 +1,38 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.CreateMeetingActivity";
+
+// 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 = {
+ "title": "Product Demo",
+ "start_date": "2025-09-18",
+ "start_time": "14:30",
+ "duration": "0:45",
+ "location": "Zoom",
+ "outcome": "SCHEDULED",
+ "associate_to_contact_id": 78945,
+ "associate_to_company_id": 1023
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/create_meeting_activity_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/create_meeting_activity_example_call_tool.py
new file mode 100644
index 00000000..ffe1b6a8
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_meeting_activity_example_call_tool.py
@@ -0,0 +1,36 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.CreateMeetingActivity"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'title': 'Product Demo',
+ 'start_date': '2025-09-18',
+ 'start_time': '14:30',
+ 'duration': '0:45',
+ 'location': 'Zoom',
+ 'outcome': 'SCHEDULED',
+ 'associate_to_contact_id': 78945,
+ 'associate_to_company_id': 1023
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/create_note_activity_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/create_note_activity_example_call_tool.js
new file mode 100644
index 00000000..f4cffffb
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_note_activity_example_call_tool.js
@@ -0,0 +1,33 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.CreateNoteActivity";
+
+// 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 = {
+ "body": "Met with client to review Q3 roadmap and next steps.",
+ "when_occurred": "2025-09-10T14:30:00",
+ "associate_to_contact_id": 4821
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/create_note_activity_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/create_note_activity_example_call_tool.py
new file mode 100644
index 00000000..e54f0831
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/create_note_activity_example_call_tool.py
@@ -0,0 +1,31 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.CreateNoteActivity"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'body': 'Met with client to review Q3 roadmap and next steps.',
+ 'when_occurred': '2025-09-10T14:30:00',
+ 'associate_to_contact_id': 4821
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_all_users_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_all_users_example_call_tool.js
new file mode 100644
index 00000000..1773325d
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_all_users_example_call_tool.js
@@ -0,0 +1,29 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetAllUsers";
+
+// 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 = {};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_all_users_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_all_users_example_call_tool.py
new file mode 100644
index 00000000..d988cb5c
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_all_users_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetAllUsers"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_available_industry_types_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_available_industry_types_example_call_tool.js
new file mode 100644
index 00000000..271ffe8d
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_available_industry_types_example_call_tool.js
@@ -0,0 +1,29 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetAvailableIndustryTypes";
+
+// 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 = {};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_available_industry_types_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_available_industry_types_example_call_tool.py
new file mode 100644
index 00000000..39f0329b
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_available_industry_types_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetAvailableIndustryTypes"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_call_data_by_keywords_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_call_data_by_keywords_example_call_tool.js
new file mode 100644
index 00000000..b1e59f49
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_call_data_by_keywords_example_call_tool.js
@@ -0,0 +1,34 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetCallDataByKeywords";
+
+// 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 = {
+ "search_terms": "error timeout database",
+ "limit": 25,
+ "truncate_big_strings": true,
+ "next_page_token": "abc123"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_call_data_by_keywords_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_call_data_by_keywords_example_call_tool.py
new file mode 100644
index 00000000..6337f216
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_call_data_by_keywords_example_call_tool.py
@@ -0,0 +1,32 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetCallDataByKeywords"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'search_terms': 'error timeout database',
+ 'limit': 25,
+ 'truncate_big_strings': True,
+ 'next_page_token': 'abc123'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_communication_data_by_keywords_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_communication_data_by_keywords_example_call_tool.js
new file mode 100644
index 00000000..e0f0400b
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_communication_data_by_keywords_example_call_tool.js
@@ -0,0 +1,33 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetCommunicationDataByKeywords";
+
+// 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 = {
+ "search_terms": "invoice overdue payment",
+ "limit": 20,
+ "truncate_big_strings": true
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_communication_data_by_keywords_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_communication_data_by_keywords_example_call_tool.py
new file mode 100644
index 00000000..8026dc6a
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_communication_data_by_keywords_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetCommunicationDataByKeywords"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'search_terms': 'invoice overdue payment', 'limit': 20, 'truncate_big_strings': True
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_deal_by_id_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_deal_by_id_example_call_tool.js
new file mode 100644
index 00000000..80fb2dcf
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_deal_by_id_example_call_tool.js
@@ -0,0 +1,31 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetDealById";
+
+// 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 = {
+ "deal_id": 123456
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_deal_by_id_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_deal_by_id_example_call_tool.py
new file mode 100644
index 00000000..7e68013d
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_deal_by_id_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetDealById"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'deal_id': 123456
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_deal_data_by_keywords_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_deal_data_by_keywords_example_call_tool.js
new file mode 100644
index 00000000..dd43b33d
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_deal_data_by_keywords_example_call_tool.js
@@ -0,0 +1,33 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetDealDataByKeywords";
+
+// 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 = {
+ "keywords": "enterprise crm integration",
+ "limit": 5,
+ "next_page_token": "token_abc123"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_deal_data_by_keywords_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_deal_data_by_keywords_example_call_tool.py
new file mode 100644
index 00000000..46467724
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_deal_data_by_keywords_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetDealDataByKeywords"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'keywords': 'enterprise crm integration', 'limit': 5, 'next_page_token': 'token_abc123'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_deal_pipeline_stages_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_deal_pipeline_stages_example_call_tool.js
new file mode 100644
index 00000000..5d69d966
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_deal_pipeline_stages_example_call_tool.js
@@ -0,0 +1,31 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetDealPipelineStages";
+
+// 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 = {
+ "pipeline_id": "default"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_deal_pipeline_stages_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_deal_pipeline_stages_example_call_tool.py
new file mode 100644
index 00000000..a8ec509e
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_deal_pipeline_stages_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetDealPipelineStages"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'pipeline_id': 'default'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_deal_pipelines_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_deal_pipelines_example_call_tool.js
new file mode 100644
index 00000000..9ebe30a5
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_deal_pipelines_example_call_tool.js
@@ -0,0 +1,31 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetDealPipelines";
+
+// 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 = {
+ "search": "sales pipeline"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_deal_pipelines_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_deal_pipelines_example_call_tool.py
new file mode 100644
index 00000000..43315e07
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_deal_pipelines_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetDealPipelines"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'search': 'sales pipeline'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_email_data_by_keywords_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_email_data_by_keywords_example_call_tool.js
new file mode 100644
index 00000000..2bf99a0a
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_email_data_by_keywords_example_call_tool.js
@@ -0,0 +1,34 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetEmailDataByKeywords";
+
+// 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 = {
+ "search_terms": "invoice overdue payment",
+ "limit": 25,
+ "truncate_big_strings": false,
+ "next_page_token": "eyJwYWdlIjoyfQ=="
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_email_data_by_keywords_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_email_data_by_keywords_example_call_tool.py
new file mode 100644
index 00000000..0fbea58a
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_email_data_by_keywords_example_call_tool.py
@@ -0,0 +1,32 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetEmailDataByKeywords"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'search_terms': 'invoice overdue payment',
+ 'limit': 25,
+ 'truncate_big_strings': False,
+ 'next_page_token': 'eyJwYWdlIjoyfQ=='
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_meeting_data_by_keywords_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_meeting_data_by_keywords_example_call_tool.js
new file mode 100644
index 00000000..765ee86f
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_meeting_data_by_keywords_example_call_tool.js
@@ -0,0 +1,34 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetMeetingDataByKeywords";
+
+// 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 = {
+ "search_terms": "project roadmap budget",
+ "limit": 15,
+ "truncate_big_strings": true,
+ "next_page_token": "abc123"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_meeting_data_by_keywords_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_meeting_data_by_keywords_example_call_tool.py
new file mode 100644
index 00000000..8c6be2ac
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_meeting_data_by_keywords_example_call_tool.py
@@ -0,0 +1,32 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetMeetingDataByKeywords"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'search_terms': 'project roadmap budget',
+ 'limit': 15,
+ 'truncate_big_strings': True,
+ 'next_page_token': 'abc123'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_note_data_by_keywords_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_note_data_by_keywords_example_call_tool.js
new file mode 100644
index 00000000..8c41516a
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_note_data_by_keywords_example_call_tool.js
@@ -0,0 +1,34 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetNoteDataByKeywords";
+
+// 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 = {
+ "search_terms": "meeting action items Q3 roadmap",
+ "limit": 20,
+ "truncate_big_strings": true,
+ "next_page_token": "abc123token"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_note_data_by_keywords_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_note_data_by_keywords_example_call_tool.py
new file mode 100644
index 00000000..4654f5b1
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_note_data_by_keywords_example_call_tool.py
@@ -0,0 +1,32 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetNoteDataByKeywords"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'search_terms': 'meeting action items Q3 roadmap',
+ 'limit': 20,
+ 'truncate_big_strings': True,
+ 'next_page_token': 'abc123token'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_task_data_by_keywords_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_task_data_by_keywords_example_call_tool.js
new file mode 100644
index 00000000..4b2d05cb
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_task_data_by_keywords_example_call_tool.js
@@ -0,0 +1,33 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetTaskDataByKeywords";
+
+// 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 = {
+ "search_terms": "user onboarding email template",
+ "limit": 20,
+ "truncate_big_strings": true
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_task_data_by_keywords_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_task_data_by_keywords_example_call_tool.py
new file mode 100644
index 00000000..9b4dd449
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_task_data_by_keywords_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetTaskDataByKeywords"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'search_terms': 'user onboarding email template', 'limit': 20, 'truncate_big_strings': True
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/get_user_by_id_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/get_user_by_id_example_call_tool.js
new file mode 100644
index 00000000..b3a2c430
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_user_by_id_example_call_tool.js
@@ -0,0 +1,31 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.GetUserById";
+
+// 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 = {
+ "owner_id": 12345
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/get_user_by_id_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/get_user_by_id_example_call_tool.py
new file mode 100644
index 00000000..34ac3de5
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/get_user_by_id_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.GetUserById"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'owner_id': 12345
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/list_companies_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/list_companies_example_call_tool.js
new file mode 100644
index 00000000..8371a046
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/list_companies_example_call_tool.js
@@ -0,0 +1,33 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.ListCompanies";
+
+// 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 = {
+ "limit": 20,
+ "sort_order": "LATEST_MODIFIED",
+ "next_page_token": "eyJwYWdlIjoxfQ=="
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/list_companies_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/list_companies_example_call_tool.py
new file mode 100644
index 00000000..c75ba1b4
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/list_companies_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.ListCompanies"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'limit': 20, 'sort_order': 'LATEST_MODIFIED', 'next_page_token': 'eyJwYWdlIjoxfQ=='
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/list_contacts_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/list_contacts_example_call_tool.js
new file mode 100644
index 00000000..408ba70f
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/list_contacts_example_call_tool.js
@@ -0,0 +1,34 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.ListContacts";
+
+// 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 = {
+ "limit": 25,
+ "company_id": 1024,
+ "sort_order": "LATEST_MODIFIED",
+ "next_page_token": "eyJwaWQiOiIxMjM0NSJ9"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/list_contacts_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/list_contacts_example_call_tool.py
new file mode 100644
index 00000000..77f22843
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/list_contacts_example_call_tool.py
@@ -0,0 +1,32 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.ListContacts"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'limit': 25,
+ 'company_id': 1024,
+ 'sort_order': 'LATEST_MODIFIED',
+ 'next_page_token': 'eyJwaWQiOiIxMjM0NSJ9'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/list_deals_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/list_deals_example_call_tool.js
new file mode 100644
index 00000000..4149d5d8
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/list_deals_example_call_tool.js
@@ -0,0 +1,35 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.ListDeals";
+
+// 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 = {
+ "limit": 20,
+ "contact_id": 12345,
+ "company_id": 67890,
+ "sort_order": "LATEST_MODIFIED",
+ "next_page_token": "token_abc123"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/list_deals_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/list_deals_example_call_tool.py
new file mode 100644
index 00000000..0740a475
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/list_deals_example_call_tool.py
@@ -0,0 +1,33 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.ListDeals"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'limit': 20,
+ 'contact_id': 12345,
+ 'company_id': 67890,
+ 'sort_order': 'LATEST_MODIFIED',
+ 'next_page_token': 'token_abc123'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/toolkit_enviroment_guidance_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/toolkit_enviroment_guidance_example_call_tool.js
new file mode 100644
index 00000000..a31bbdca
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/toolkit_enviroment_guidance_example_call_tool.js
@@ -0,0 +1,29 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.ToolkitEnviromentGuidance";
+
+// 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 = {};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/toolkit_enviroment_guidance_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/toolkit_enviroment_guidance_example_call_tool.py
new file mode 100644
index 00000000..eb7a5f29
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/toolkit_enviroment_guidance_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.ToolkitEnviromentGuidance"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/update_deal_close_date_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/update_deal_close_date_example_call_tool.js
new file mode 100644
index 00000000..bb00c79e
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/update_deal_close_date_example_call_tool.js
@@ -0,0 +1,32 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.UpdateDealCloseDate";
+
+// 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 = {
+ "deal_id": 123456,
+ "expected_close_date": "2025-10-15"
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/update_deal_close_date_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/update_deal_close_date_example_call_tool.py
new file mode 100644
index 00000000..2d85c6e8
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/update_deal_close_date_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.UpdateDealCloseDate"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'deal_id': 123456, 'expected_close_date': '2025-10-15'
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/update_deal_stage_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/update_deal_stage_example_call_tool.js
new file mode 100644
index 00000000..852af6f3
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/update_deal_stage_example_call_tool.js
@@ -0,0 +1,34 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.UpdateDealStage";
+
+// 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 = {
+ "deal_id": 987654,
+ "deal_stage": "closedwon",
+ "current_pipeline_id": "default-pipeline-1",
+ "allow_pipeline_change": true
+};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/update_deal_stage_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/update_deal_stage_example_call_tool.py
new file mode 100644
index 00000000..6b2224a0
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/update_deal_stage_example_call_tool.py
@@ -0,0 +1,32 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.UpdateDealStage"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+ 'deal_id': 987654,
+ 'deal_stage': 'closedwon',
+ 'current_pipeline_id': 'default-pipeline-1',
+ 'allow_pipeline_change': True
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))
diff --git a/public/examples/integrations/toolkits/hubspot/who_am_i_example_call_tool.js b/public/examples/integrations/toolkits/hubspot/who_am_i_example_call_tool.js
new file mode 100644
index 00000000..3a9448d7
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/who_am_i_example_call_tool.js
@@ -0,0 +1,29 @@
+import { Arcade } from "@arcadeai/arcadejs";
+
+const client = new Arcade(); // Automatically finds the `ARCADE_API_KEY` env variable
+
+const USER_ID = "{arcade_user_id}";
+const TOOL_NAME = "Hubspot.WhoAmI";
+
+// 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 = {};
+
+const response = await client.tools.execute({
+ tool_name: TOOL_NAME,
+ input: toolInput,
+ user_id: USER_ID,
+});
+
+console.log(JSON.stringify(response.output.value, null, 2));
diff --git a/public/examples/integrations/toolkits/hubspot/who_am_i_example_call_tool.py b/public/examples/integrations/toolkits/hubspot/who_am_i_example_call_tool.py
new file mode 100644
index 00000000..d9ad5bc4
--- /dev/null
+++ b/public/examples/integrations/toolkits/hubspot/who_am_i_example_call_tool.py
@@ -0,0 +1,29 @@
+import json
+from arcadepy import Arcade
+
+client = Arcade() # Automatically finds the `ARCADE_API_KEY` env variable
+
+USER_ID = "{arcade_user_id}"
+TOOL_NAME = "Hubspot.WhoAmI"
+
+auth_response = client.tools.authorize(
+ tool_name=TOOL_NAME,
+ user_id=TOOL_NAME
+)
+
+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 = {
+
+}
+
+response = client.tools.execute(
+ tool_name=TOOL_NAME,
+ input=tool_input,
+ user_id=USER_ID,
+)
+print(json.dumps(response.output.value, indent=2))