# Airtable Source: https://docs.langdock.com/administration/integrations/airtable Database solution combining spreadsheet simplicity with powerful database capabilities ## Overview Airtable is a cloud-based database platform that combines the simplicity of a spreadsheet with the power of a database. Through Langdock's integration, you can manage records, schemas, and bases directly from your conversations. **Authentication:** OAuth\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### List Bases ##### `airtable.listBases` Lists all available bases in your Airtable workspace. **Requires Confirmation:** No\ **Parameters:** None **Example Response:** ``` // JSON example removed for MDX compatibility ``` *** ### Get Base Schema ##### `airtable.getBaseSchema` Returns the complete schema of tables in the specified base, including field types and relationships. **Requires Confirmation:** No **Parameters:** * `baseId` (string, required): The unique identifier of the base **Example Usage:** > "Get the schema for base appXXXXXXXXXXXXXX" **Example Response:** ``` // JSON example removed for MDX compatibility ``` *** ### Find Records ##### `airtable.findRecords` Searches for records in a table with optional filtering. **Requires Confirmation:** No **Parameters:** * `baseId` (string, required): The unique identifier of the base * `tableIdOrName` (string, required): The table ID or name * `filterByFormula` (string, optional): Airtable formula to filter records * `maxRecords` (number, optional): Maximum number of records to return **Filter Formula Examples:** * Status equals 'Active': `"Status = 'Active'"` * Age greater than 25: `"Age > 25"` * Date after specific date: `"IS_AFTER(CreatedDate, '2023-01-01')"` * Text search: `"FIND('urgent', Description)"` * Multiple conditions: `"AND(Status = 'Active', Priority = 'High')"` * Check non-empty field: `"NOT({Email} = '')"` **Example Usage:** > "Find all active products in the Products table where price is greater than 100" *** ### Create Records ##### `airtable.createRecords` Creates new records in a specified table. **Requires Confirmation:** Yes **Parameters:** * `baseId` (string, required): The unique identifier of the base * `tableIdOrName` (string, required): The table ID or name * `records` (object, required): The records to create **Example Request:** ``` // JSON example removed for MDX compatibility ``` **Example Usage:** > "Create a new product called 'Premium Widget' with price \$199.99 in the Products table" *** ### Update Records ##### `airtable.updateRecords` Updates existing records in a table. **Requires Confirmation:** Yes **Parameters:** * `baseId` (string, required): The unique identifier of the base * `tableIdOrName` (string, required): The table ID or name * `recordId` (string, required): The unique identifier of the record to update * `records` (object, required): The fields to update **Example Request:** ``` // JSON example removed for MDX compatibility ``` **Example Usage:** > "Update the price of product recXXXXXXXXXXXXXX to \$149.99 and set status to Sale" *** ### Delete Record ##### `airtable.deleteRecord` Deletes a specified record from a table. **Requires Confirmation:** Yes **Parameters:** * `baseId` (string, required): The unique identifier of the base * `tableIdOrName` (string, required): The table ID or name * `recordId` (string, required): The unique identifier of the record to delete **Example Usage:** > "Delete record recXXXXXXXXXXXXXX from the Products table" *** ## Common Use Cases * Create and update product catalogs * Manage inventory records * Track project tasks and milestones * Add new customer records * Update contact information * Search for customer data * Organize content calendars * Track publication status * Manage editorial workflows * Filter records by criteria * Export specific data sets * Generate reports from bases ## Best Practices **Performance Tips:** * Use `maxRecords` parameter to limit large result sets * Prefer table IDs over names for better reliability * Use filter formulas to reduce data transfer * Batch create/update operations when possible **Important Considerations:** * Record IDs are permanent and cannot be reused after deletion * Base and table IDs are more reliable than names * Filter formulas are case-sensitive * API rate limits apply (5 requests per second per base) ## Workflow Examples ### Example 1: Product Inventory Update ``` 1. List all bases to find your inventory base 2. Get the base schema to understand table structure 3. Find products with low stock using filterByFormula 4. Update stock levels for specific products 5. Create records for new incoming products ``` ### Example 2: Customer Data Search ``` 1. Connect to customer database base 2. Search for customers by email or name 3. Update customer status or information 4. Add notes or tags to customer records ``` ## Troubleshooting | Issue | Solution | | --------------------- | -------------------------------------------- | | "Base not found" | Verify the base ID using List Bases action | | "Invalid formula" | Check formula syntax and field names | | "Permission denied" | Ensure OAuth token has necessary permissions | | "Rate limit exceeded" | Implement delays between requests | ## Related Integrations * [Google Sheets](/administration/integrations/google-sheets) - For simpler spreadsheet operations * [Notion](/administration/integrations/notion) - For wiki-style databases * [Excel](/administration/integrations/excel) - For advanced spreadsheet analysis ## Support For additional help with the Airtable integration, contact [support@langdock.com](mailto:support@langdock.com) # Asana Source: https://docs.langdock.com/administration/integrations/asana Work management platform that helps teams plan, track, and deliver projects ## Overview Asana is a comprehensive work management platform that helps teams organize, track, and manage their work. Through Langdock's integration, you can manage workspaces, projects, tasks, and teams directly from your conversations. **Authentication:** OAuth\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Workspaces & Teams #### List Workspaces ##### `asana.list_workspaces` Get all accessible workspaces in your Asana account. **Requires Confirmation:** Yes **Parameters:** * `limit` (number, optional): Limit number of results (1-100) * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "List all my Asana workspaces" *** #### Get Teams for Workspace ##### `asana.get_teams_for_workspace` List all teams in a specific workspace. **Requires Confirmation:** Yes **Parameters:** * `workspaceGid` (string, required): Workspace GID * `optFields` (string, optional): Comma-separated fields to include * `limit` (number, optional): Maximum number of teams to return **Example Usage:** > "Show me all teams in workspace 12345" *** #### Get Teams for User ##### `asana.get_teams_for_user` Get teams a user belongs to. **Requires Confirmation:** Yes **Parameters:** * `userGid` (string, required): User identifier ('me', email, or user GID) * `organization` (string, required): Workspace or organization GID * `optFields` (string, optional): Comma-separated fields to include * `limit` (number, optional): Maximum number of teams to return **Example Usage:** > "Show me all teams that I'm part of in organization 12345" *** ### Users #### Get Users ##### `asana.get_users` List users across accessible workspaces; optionally filter by workspace or team. **Requires Confirmation:** Yes **Parameters:** * `workspace` (string, optional): Workspace GID to filter users * `team` (string, optional): Team GID to filter users * `limit` (number, optional): Maximum number of users to return * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Show me all users in the Marketing team" *** #### Get User ##### `asana.get_user` Get user details by ID, email, or "me". **Requires Confirmation:** Yes **Parameters:** * `userId` (string, optional): User identifier ('me', email, or user GID) * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Get information about the current user" or "Get information about user [john@company.com](mailto:john@company.com)" *** ### Goals #### Get Goals ##### `asana.get_goals` List goals filtered by context (portfolio, project, task, workspace, or team). **Requires Confirmation:** Yes **Parameters:** * `workspace` (string, optional): Workspace GID to filter goals * `team` (string, optional): Team GID to filter goals * `project` (string, optional): Project GID to filter goals * `portfolio` (string, optional): Portfolio GID to filter goals * `task` (string, optional): Task GID to filter goals * `timePeriod` (string, optional): Time period IDs to filter goals * `isWorkspaceLevel` (boolean, optional): Filter to workspace-level goals * `limit` (number, optional): Maximum number of goals to return * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Show me all goals for the Marketing team" *** #### Get Goal ##### `asana.get_goal` Get detailed goal data. **Requires Confirmation:** Yes **Parameters:** * `goalGid` (string, required): Goal GID * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Get details for goal 12345" *** #### Get Parent Goals for Goal ##### `asana.get_parent_goals_for_goal` List all parent goals for a specific goal. **Requires Confirmation:** Yes **Parameters:** * `goalGid` (string, required): Goal GID * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Show me all parent goals for goal 12345" *** ### Projects #### Get Projects ##### `asana.get_projects` List projects filtered by workspace. **Requires Confirmation:** Yes **Parameters:** * `workspace` (string, required): Workspace GID * `team` (string, optional): Filter projects on team id * `archived` (boolean, optional): Include archived projects * `limit` (number, optional): Maximum number of projects to return * `optFields` (string, optional): Comma-separated fields to include. Example: `name,owner.name,workspace.name,team.name,archived,current_status.color` **Example Usage:** > "Show me all active projects in workspace 12345" *** #### Get Projects for Workspace ##### `asana.get_projects_for_workspace` Get ALL projects in a workspace across all teams. **Requires Confirmation:** Yes **Parameters:** * `workspaceGid` (string, required): Workspace GID * `archived` (boolean, optional): Filter projects by archived status * `optFields` (string, optional): Comma-separated fields to include * `limit` (number, optional): Maximum number of projects to return **Example Usage:** > "Get all projects in my marketing workspace" *** #### Get Projects for Team ##### `asana.get_projects_for_team` List all projects for a team. **Requires Confirmation:** Yes **Parameters:** * `teamGid` (string, required): Team GID * `archived` (boolean, optional): Filter projects by archived status * `optFields` (string, optional): Comma-separated fields to include * `limit` (number, optional): Maximum number of projects to return **Example Usage:** > "Show me all projects for the Engineering team" *** #### Get Project ##### `asana.get_project` Get detailed project data. **Requires Confirmation:** Yes **Parameters:** * `projectId` (string, required): Project GID * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Get full details for project 12345" *** #### Get Project Task Counts ##### `asana.get_project_task_counts` Get task statistics for a project. **Requires Confirmation:** Yes **Parameters:** * `projectId` (string, required): Project GID * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Get task counts for project 12345" *** #### Create Project ##### `asana.create_project` Create new project in Asana. **Requires Confirmation:** Yes **Parameters:** * `name` (string, required): Name of the project * `workspace` (string, optional): Workspace GID * `team` (string, optional): Team GID * `notes` (string, optional): Project description * `htmlNotes` (string, optional): HTML-formatted description * `owner` (string, optional): User identifier ('me', email, or user GID) * `followers` (string, optional): Comma-separated list of user GIDs * `color` (string, optional): Project color * `dueDate` (string, optional): Due date (YYYY-MM-DD) * `startDate` (string, optional): Start date (YYYY-MM-DD) * `defaultView` (string, optional): Default view * `public` (boolean, optional): Public to workspace * `archived` (boolean, optional): Archived status * `isTemplate` (boolean, optional): Is template * `privacySetting` (string, optional): Privacy level * `defaultAccessLevel` (string, optional): Default access level * `minimumAccessLevelForSharing` (string, optional): Minimum access level for sharing * `minimumAccessLevelForCustomization` (string, optional): Minimum access level for customization * `customFields` (string, optional): JSON string of custom fields * `icon` (string, optional): Project icon type * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Create a new project called 'Q1 Marketing Campaign' in the Marketing team" *** ### Tasks #### Get Tasks ##### `asana.get_tasks` List tasks filtered by context (workspace/project/tag/section/user list). **Requires Confirmation:** Yes **Parameters:** * `workspace` (string, optional): Workspace GID * `project` (string, optional): Project GID * `tag` (string, optional): Tag GID * `section` (string, optional): Section GID * `assignee` (string, optional): User identifier ('me', email, or user GID) * `completedSince` (string, optional): Filter tasks completed since date * `modifiedSince` (string, optional): Filter tasks modified since date * `userTaskList` (string, optional): User task list GID * `limit` (number, optional): Number of tasks to return (1-100) * `offset` (string, optional): Pagination offset token * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Show me all tasks assigned to me in the Q4 Planning project" *** #### Search Tasks ##### `asana.search_tasks` Advanced task search with multiple filters. **Requires Confirmation:** Yes **Parameters:** * `workspace` (string, required): Workspace GID * `text` (string, optional): Text to search for in task name or description * `completed` (boolean, optional): Filter for completed or incomplete tasks * `assigneeAny` (string, optional): Comma-separated list of user identifiers * `assigneeNot` (string, optional): Comma-separated list of user identifiers to exclude * `projectsAny` (string, optional): Comma-separated list of project IDs * `projectsAll` (string, optional): Comma-separated list of project IDs (tasks must be in all) * `projectsNot` (string, optional): Comma-separated list of project IDs to exclude * `tagsAny` (string, optional): Comma-separated list of tag IDs * `tagsAll` (string, optional): Comma-separated list of tag IDs (tasks must have all) * `tagsNot` (string, optional): Comma-separated list of tag IDs to exclude * `sectionsAny` (string, optional): Comma-separated list of section or column IDs * `sectionsAll` (string, optional): Comma-separated list of section IDs (tasks must be in all) * `sectionsNot` (string, optional): Comma-separated list of section IDs to exclude * `portfoliosAny` (string, optional): Comma-separated list of portfolio IDs * `teamsAny` (string, optional): Comma-separated list of team IDs * `followersAny` (string, optional): Comma-separated list of user identifiers * `followersNot` (string, optional): Comma-separated list of user identifiers to exclude * `createdByAny` (string, optional): Comma-separated list of user identifiers * `createdByNot` (string, optional): Comma-separated list of user identifiers to exclude * `assignedByAny` (string, optional): Comma-separated list of user identifiers * `assignedByNot` (string, optional): Comma-separated list of user identifiers to exclude * `commentedOnByNot` (string, optional): Comma-separated list of user identifiers to exclude * `likedByNot` (string, optional): Comma-separated list of user identifiers to exclude * `hasAttachment` (boolean, optional): Filter to tasks with attachments * `isBlocked` (boolean, optional): Filter to tasks with incomplete dependencies * `isBlocking` (boolean, optional): Filter to incomplete tasks with dependents * `isSubtask` (boolean, optional): Filter to subtasks * `resourceSubtype` (string, optional): Filters results by task's resource\_subtype (e.g., milestone) * `customFields` (string, optional): JSON string of custom field filters * `dueOn` (string, optional): ISO 8601 date string or null for due date * `dueOnAfter` (string, optional): ISO 8601 date string for due date after filter * `dueOnBefore` (string, optional): ISO 8601 date string for due date before filter * `dueAtAfter` (string, optional): ISO 8601 datetime string for due datetime after filter * `dueAtBefore` (string, optional): ISO 8601 datetime string for due datetime before filter * `startOn` (string, optional): ISO 8601 date string or null for start date * `startOnAfter` (string, optional): ISO 8601 date string for start date after filter * `startOnBefore` (string, optional): ISO 8601 date string for start date before filter * `createdOn` (string, optional): ISO 8601 date string or null for creation date * `createdOnAfter` (string, optional): ISO 8601 date string for creation date after filter * `createdOnBefore` (string, optional): ISO 8601 date string for creation date before filter * `createdAtAfter` (string, optional): ISO 8601 datetime string for creation datetime after filter * `createdAtBefore` (string, optional): ISO 8601 datetime string for creation datetime before filter * `modifiedOn` (string, optional): ISO 8601 date string or null for modified date * `modifiedOnAfter` (string, optional): ISO 8601 date string for modified date after filter * `modifiedOnBefore` (string, optional): ISO 8601 date string for modified date before filter * `modifiedAtAfter` (string, optional): ISO 8601 datetime string for modified datetime after filter * `modifiedAtBefore` (string, optional): ISO 8601 datetime string for modified datetime before filter * `completedOn` (string, optional): ISO 8601 date string or null for completion date * `completedOnAfter` (string, optional): ISO 8601 date string for completion date after filter * `completedOnBefore` (string, optional): ISO 8601 date string for completion date before filter * `completedAtAfter` (string, optional): ISO 8601 datetime string for completion datetime after filter * `completedAtBefore` (string, optional): ISO 8601 datetime string for completion datetime before filter * `sortBy` (string, optional): Field to sort by (e.g., 'due\_date', 'created\_at', 'completed\_at', 'likes', 'modified\_at'). Defaults to modified\_at * `sortAscending` (boolean, optional): Sort in ascending order. Defaults to false * `limit` (number, optional): Number of results to return (1-100) * `optFields` (string, optional): Comma-separated fields to include * `optPretty` (boolean, optional): Provides "pretty" output with line breaking and indentation **Example Usage:** > "Search for all tasks mentioning 'budget review' in the Finance workspace" or "Find all incomplete tasks assigned to me that are due this week" *** #### Get Task ##### `asana.get_task` Get full task details by ID. **Requires Confirmation:** Yes **Parameters:** * `taskId` (string, required): Task GID * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Get full details for task 12345" *** #### Create Task ##### `asana.create_task` Create task in Asana with context. **Requires Confirmation:** Yes **Parameters:** * `name` (string, required): Name of the task * `workspace` (string, optional): Workspace GID * `projectId` (string, optional): Project GID * `parent` (string, optional): Parent task GID * `assignee` (string, optional): User identifier ('me', email, or user GID) * `followers` (string, optional): Comma-separated list of user identifiers * `notes` (string, optional): Task description * `htmlNotes` (string, optional): HTML-formatted description * `completed` (boolean, optional): Mark as completed * `dueOn` (string, optional): Due date (YYYY-MM-DD) * `dueAt` (string, optional): Due date and time * `startOn` (string, optional): Start date (YYYY-MM-DD) * `startAt` (string, optional): Start date and time * `assigneeSection` (string, optional): Section GID * `resourceSubtype` (string, optional): Task type * `approvalStatus` (string, optional): Approval status * `customType` (string, optional): Custom type GID * `customTypeStatusOption` (string, optional): Custom type status option GID * `customFields` (string, optional): JSON string of custom fields **Example Usage:** > "Create a task 'Review Q4 budget' due on 2024-03-15 and assign it to [john@company.com](mailto:john@company.com)" *** #### Update Task ##### `asana.update_task` Update existing task properties. **Requires Confirmation:** Yes **Parameters:** * `taskId` (string, required): Task GID * `name` (string, optional): Task name * `notes` (string, optional): Task description * `assignee` (string, optional): User identifier ('me', email, or user GID) * `dueOn` (string, optional): Due date (YYYY-MM-DD) * `dueAt` (string, optional): Due date and time * `completed` (boolean, optional): Mark as completed * `customFields` (string, optional): JSON string of custom fields **Example Usage:** > "Mark task 123456 as completed and update the notes" *** #### Set Parent for Task ##### `asana.set_parent_for_task` Change task parent (convert to/from subtask). **Requires Confirmation:** Yes **Parameters:** * `taskId` (string, required): Task GID * `parent` (string, required): Parent task GID * `insertBefore` (string, optional): Insert before task GID * `insertAfter` (string, optional): Insert after task GID * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Make task 12345 a subtask of task 67890" *** #### Set Task Dependencies ##### `asana.set_task_dependencies` Set tasks this task depends on (prerequisites). **Requires Confirmation:** Yes **Parameters:** * `taskId` (string, required): Task GID * `dependencies` (object, required): Array of task GIDs **Example Usage:** > "Set task 12345 to depend on tasks 67890 and 11111" *** #### Set Task Dependents ##### `asana.set_task_dependents` Set tasks blocked by this task (tasks waiting on this one). **Requires Confirmation:** Yes **Parameters:** * `taskId` (string, required): Task GID * `dependents` (object, required): Array of task GIDs **Example Usage:** > "Set tasks 67890 and 11111 to wait on task 12345" *** #### Add Task Followers ##### `asana.add_task_followers` Add followers to task (team members to notify of updates). **Requires Confirmation:** Yes **Parameters:** * `taskId` (string, required): Task GID * `followers` (string, required): Comma-separated list of user identifiers **Example Usage:** > "Add [john@company.com](mailto:john@company.com) and [jane@company.com](mailto:jane@company.com) as followers to task 12345" *** #### Remove Task Followers ##### `asana.remove_task_followers` Remove followers from task (stop notification subscriptions). **Requires Confirmation:** Yes **Parameters:** * `taskId` (string, required): Task GID * `followers` (string, required): Comma-separated list of user identifiers * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Remove [john@company.com](mailto:john@company.com) from following task 12345" *** ### Stories & Comments #### Get Stories for Task ##### `asana.get_stories_for_task` Get task activity history (comments, status changes, system events). **Requires Confirmation:** Yes **Parameters:** * `taskId` (string, required): Task GID * `limit` (number, optional): Number of stories to return (1-100) * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Show me all comments and activity for task 12345" *** #### Get Story ##### `asana.get_story` Get a single story by GID. **Requires Confirmation:** Yes **Parameters:** * `storyGid` (string, required): Story GID * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Get details for story 12345" *** #### Create Task Story ##### `asana.create_task_story` Add explicit comment to task. **Requires Confirmation:** Yes **Parameters:** * `taskId` (string, required): Task GID * `text` (string, required): Comment text * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Add a comment to task 12345 saying 'This looks good to me'" *** ### Tags #### Get Tags in Workspace ##### `asana.get_tags_in_workspace` Returns compact tag records filtered by workspace. **Requires Confirmation:** Yes **Parameters:** * `workspaceGid` (string, required): Workspace GID * `optFields` (string, optional): Comma-separated fields to include * `limit` (number, optional): Maximum number of tags to return **Example Usage:** > "Show all tags in the Marketing workspace" *** ### Attachments #### Get Attachments for Object ##### `asana.get_attachments_for_object` List attachment ids and metadata for a project, task, or project brief (no download). **Requires Confirmation:** Yes **Parameters:** * `parent` (string, required): Project or task GID * `optFields` (string, optional): Comma-separated fields to include * `limit` (number, optional): Maximum number of attachments to return **Example Usage:** > "List all attachments for task 12345" *** #### Download Attachment ##### `asana.download_attachment` Get detailed attachment data including name, resource type, download\_url, view\_url, and parent. **Requires Confirmation:** Yes **Parameters:** * `attachmentGid` (string, required): Attachment GID * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Get download URL for attachment 12345" *** #### Download Attachments for Object ##### `asana.download_attachments_for_object` Download all attachments for a project, task, or project brief. **Requires Confirmation:** Yes **Parameters:** * `parent` (string, required): Project or task GID * `optFields` (string, optional): Comma-separated fields to include * `limit` (number, optional): Maximum number of attachments to return **Example Usage:** > "Download all attachments for project 12345" *** ### Portfolios #### Get Portfolios ##### `asana.get_portfolios` List portfolios filtered by workspace, owner, or team. **Requires Confirmation:** Yes **Parameters:** * `owner` (string, required): User identifier ('me' or user GID) * `workspace` (string, optional): Workspace GID * `team` (string, optional): Team GID * `optFields` (string, optional): Comma-separated fields to include * `limit` (number, optional): Maximum number of portfolios to return **Example Usage:** > "Show me all portfolios I own in workspace 12345" *** #### Get Portfolio ##### `asana.get_portfolio` Get detailed portfolio data by ID. **Requires Confirmation:** Yes **Parameters:** * `portfolioGid` (string, required): Portfolio GID * `optFields` (string, optional): Comma-separated fields to include **Example Usage:** > "Get full details for portfolio 12345" *** #### Get Portfolio Items ##### `asana.get_portfolio_items` Get the items in a portfolio in compact form. **Requires Confirmation:** Yes **Parameters:** * `portfolioGid` (string, required): Portfolio GID * `optFields` (string, optional): Comma-separated fields to include * `limit` (number, optional): Maximum number of items to return **Example Usage:** > "Show me all items in portfolio 12345" *** ### Search #### Typeahead Search ##### `asana.typeahead_search` Quick search across Asana objects. **Requires Confirmation:** Yes **Parameters:** * `workspaceGid` (string, required): Workspace GID * `resourceType` (string, required): Resource type to search * `query` (string, optional): Search query * `count` (number, optional): Number of results to return (1-100) **Example Usage:** > "Quick search for projects matching 'marketing' in workspace 12345" *** ## Common Use Cases * Create and organize projects * Track project progress * Manage project timelines * Create and assign tasks * Update task status * Set due dates and priorities * Organize teams and workspaces * Assign work to team members * Track team productivity * Search and filter tasks * Bulk update task properties * Generate status reports ## Best Practices **Performance Tips:** * Use `limit` parameter to control result size * Utilize `optFields` to reduce data transfer * Cache workspace and project GIDs for repeated use * Use search for complex filtering needs **Important Considerations:** * GIDs are permanent unique identifiers * Due dates must be in YYYY-MM-DD format * Completed tasks remain in the system * Rate limits apply per OAuth token ## Workflow Examples ### Example 1: Daily Task Management ``` 1. List workspaces to identify your main workspace 2. Get tasks assigned to you 3. Update task status as you work 4. Mark tasks as completed 5. Create new tasks for tomorrow ``` ### Example 2: Project Setup ``` 1. Create a new project in the appropriate team 2. Add initial tasks to the project 3. Assign tasks to team members 4. Set due dates for milestones 5. Add relevant tags for organization ``` ## Troubleshooting | Issue | Solution | | --------------------- | ------------------------------------------ | | "Workspace not found" | Verify workspace GID using List Workspaces | | "Invalid date format" | Use YYYY-MM-DD format for dates | | "Permission denied" | Check OAuth token permissions | | "Task not found" | Ensure task GID is correct and accessible | ## Related Integrations * [Jira](/administration/integrations/jira) - For software development tracking * [Linear](/administration/integrations/linear) - For modern issue tracking * [Monday.com](/administration/integrations/monday) - For visual work management ## Support For additional help with the Asana integration, contact [support@langdock.com](mailto:support@langdock.com) # AWS Kendra Source: https://docs.langdock.com/administration/integrations/aws-kendra Intelligent enterprise search service powered by machine learning ## Overview Intelligent enterprise search service powered by machine learning. Through Langdock's integration, you can access and manage AWS Kendra directly from your conversations. **Authentication:** API Key (AWS Credentials)\ **Category:** AI & Search\ **Availability:** All workspace plans ## Available Actions ### Search ##### `awskendra.search` Searches your Kendra index using natural language queries **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Required): Natural language query to search for in your Kendra index. For example: 'How do I reset my password?' or 'sales report Q3 2024' * `pageSize` (NUMBER, Optional): Number of results to return per page. Maximum is 100. If not specified, defaults to 10 * `attributeFilter(see example below){"EqualsTo": {"Key": "field", "Value": "text"}}` * `queryResultType` (SELECT, Optional): Filter results by type. Options: All results, Documents only, Answers only, Questions and answers only * `pageNumber` (NUMBER, Optional): Page number to retrieve (1-10 for page size 10, 1-2 for page size 50). Note: AWS Kendra limits total retrievable results to 100 * `facets` (MULTI\_LINE\_TEXT, Optional): JSON array of document attribute names to get facet counts. Simple format: ``. Advanced format with max results: (see example below) * `sortingConfiguration` (MULTI\_LINE\_TEXT, Optional): JSON object to sort results. Format: (see example below). IMPORTANT: Use 'Get Index Configuration' first to verify which fields are sortable. Only fields marked as sortable in your index will work * `spellCorrection` (SELECT, Optional): Enable automatic spell correction for queries to improve search accuracy. Options: Enabled, Disabled * `userContext` (MULTI\_LINE\_TEXT, Optional): JSON object for user-specific filtering. GenAI format: `JSON: email_id = user@example.com`. Standard format: (JSON format) * `visitorId` (TEXT, Optional): Unique identifier for tracking user sessions (e.g., a GUID). Do not use personally identifiable information like email * `requestedDocumentAttributes` (MULTI\_LINE\_TEXT, Optional): JSON array of document attribute names to include in response (max 100). Common fields: ``. Reduces response size by limiting fields * `collapseConfiguration` (MULTI\_LINE\_TEXT, Optional): JSON object to group/collapse similar results. Basic: (see example below). With expansion: (see example below) * `documentRelevanceOverrides` (MULTI\_LINE\_TEXT, Optional): JSON array to boost specific fields/values. Format: (see example below) **Output:** Returns search results with the following structure: * `totalResults`: Total number of results found * `results`: Array of result objects containing: * `id`: Document ID * `title`: Document title * `excerpt`: Document excerpt * `uri`: Document URI * `score`: Relevance score * `attributes`: Document attributes (if available) * `facets`: Facet results if requested * `spellSuggestions`: Spell correction suggestions if available * `featuredResults`: Featured results if available *** ### Get Index Configuration ##### `awskendra.getIndexConfiguration` Returns field configuration for your Kendra index. Shows field names, types (STRING, DATE, LONG), and properties (searchable, sortable, facetable). Run this BEFORE searching to know which fields you can use for filtering and sorting. **Requires Confirmation:** No **Parameters:** None **Output:** Returns index configuration with the following structure: * `indexName`: Name of the index * `status`: Index status * `edition`: Index edition * `fields`: Array of field objects containing: * `name`: Field name * `type`: Field type (STRING, DATE, LONG, etc.) * `searchable`: Whether field is searchable * `sortable`: Whether field is sortable * `facetable`: Whether field is facetable * `displayable`: Whether field is displayable * `importance`: Field importance score * `summary`: Summary statistics including: * `totalFields`: Total number of fields * `sortableFields`: List of sortable field names * `searchableFields`: List of searchable field names * `dateFields`: List of date field names * `sortableDateFields`: List of sortable date field names *** ## Common Use Cases Manage and organize your AWS Kendra data Automate workflows with AWS Kendra Generate insights and reports Connect AWS Kendra with other tools ## Best Practices **Getting Started:** 1. Enable the AWS Kendra integration in your workspace settings 2. Authenticate using API Key (AWS Credentials) 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | ------------------------------------------------- | | Authentication failed | Verify your API Key (AWS Credentials) credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the AWS Kendra integration, contact [support@langdock.com](mailto:support@langdock.com) # Azure AI Search Source: https://docs.langdock.com/administration/integrations/azure-search AI-powered information retrieval platform by Microsoft Azure ## Overview Azure AI Search is Microsoft's AI-powered information retrieval platform. Through Langdock's integration, you can perform semantic vector searches across your indexed documents directly from conversations. **Authentication:** API Key\ **Category:** AI & Search\ **Availability:** All workspace plans *** ## Prerequisites Before setting up the integration, make sure you have: * An Azure subscription with access to Azure AI Search * An Azure AI Search service instance with at least one index * An admin API key for your Azure AI Search service * Documents uploaded to your index with vector embeddings (1536 dimensions for OpenAI's text-embedding-ada-002) **Pro tip:** If you're new to Azure AI Search, check out Microsoft's [Vector Search documentation](https://learn.microsoft.com/en-us/azure/search/vector-search-overview) to set up your first index with vector search support. *** ## Setup In Langdock, go to [Integrations](https://app.langdock.com/integrations) and find [**Azure AI Search**](https://app.langdock.com/integrations/81088af0-d6e2-4ed0-a76b-633670df7840) in the integrations list. Fill in the required configuration fields (see [table](#configuration-parameters) below). Save the integration - Langdock will validate that your index exists and is accessible. Tag the integration with `@` in any chat or add the `Search documents` action to your assistant to search your indexed documents. ### Configuration Parameters #### Required Fields | Field | Description | Example | | ---------------- | -------------------------------------------- | --------------------------------------- | | **Name** | A name for this connection | `Company Knowledge Base` | | **API Key** | Admin key from Azure Portal -> `Keys` | Your admin key | | **Index Name** | The exact name of your Azure AI Search index | `langdock-prod-company` | | **URL** | Your Azure AI Search service endpoint | `https://my-service.search.windows.net` | | **Search Field** | The vector field name in your index schema | `contentVector` | | **Top K** | Number of search results to retrieve | `5` | #### Optional Fields | Field | Description | Default | | ----------------------- | ----------------------------------------- | ---------- | | **Embedding Dimension** | Dimension of your vector embeddings | `1536` | | **Embedding Model** | Model used for embeddings (display only) | Ada v2 | | **Select** | Comma-separated fields to return | All fields | | **Filter** | OData filter expression to narrow results | None | **Where to find your credentials:** * **Service URL:** Azure Portal -> Your Search service -> Overview -> copy the `Url` field * **API Key:** Azure Portal -> Your Search service -> Keys -> copy an admin key *** ## Available Actions ### Search Documents ##### `azureaisearch.searchDocuments` Performs semantic vector search across your indexed documents. **Requires Confirmation:** No **Parameters:** * `query` (VECTOR, Required): Vector query for semantic search **Output:** Returns search results with the following structure: * `value`: Array of search result objects containing: * `@search.score`: Relevance score * `@search.highlights`: Highlighted text snippets * Field values from the indexed documents * `@odata.count`: Total number of results * `@odata.nextLink`: Link to next page of results (if available) **Generating embeddings:** You can use the [Langdock Embedding API](/api-endpoints/embedding/openai-embedding) to generate the vector embeddings needed for your Azure AI Search index. *** ## Common Use Cases Search across internal documentation, policies, and knowledge bases using natural language Find relevant research papers, reports, and data from large document collections Quickly retrieve product information, FAQs, and support articles to answer customer queries Surface relevant content from archives, wikis, or document repositories *** ## Troubleshooting | Issue | Cause | Solution | | ------------------------- | ------------------------------------ | ---------------------------------------------------------------------------------------- | | **Index not found** | Index name mismatch or doesn't exist | Verify the exact index name in Azure Portal matches your configuration (case-sensitive) | | **No search results** | No documents or invalid embeddings | Confirm documents are uploaded with valid 1536-dimension embeddings in your vector field | | **Low search scores** | Embedding model mismatch | Ensure all documents use the same embedding model (e.g., text-embedding-ada-002) | | **Authentication failed** | Invalid or expired API key | Copy a fresh Admin Key from Azure Portal -> Keys | **Validation checklist** * Service URL format: `https://[service-name].search.windows.net` * Index name matches exactly (case-sensitive) * Search field matches your vector field name (e.g., `contentVector`) * Documents contain valid vector embeddings *** ## Support For additional help with the Azure AI Search integration, contact [support@langdock.com](mailto:support@langdock.com). # Big Query Source: https://docs.langdock.com/administration/integrations/bigquery Google Cloud BigQuery data warehouse for analytics and machine learning ## Overview Google Cloud BigQuery data warehouse for analytics and machine learning. Through Langdock's integration, you can access and manage Big Query directly from your conversations. **Authentication:** OAuth\ **Category:** Data & Analytics\ **Availability:** All workspace plans ## Available Actions ### List Datasets ##### `bigquery.listDatasets` Lists all datasets in a BigQuery project **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The Google Cloud project ID containing the datasets **Output:** Returns an array of datasets with their IDs, names, and metadata *** ### List Tables ##### `bigquery.listTables` Lists all tables in a BigQuery dataset **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The Google Cloud project ID * `datasetId` (TEXT, Required): The dataset ID containing the tables **Output:** Returns an array of tables with their IDs, names, and metadata *** ### Get Table Schema ##### `bigquery.getTableSchema` Gets the schema information for a specific BigQuery table **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The Google Cloud project ID * `datasetId` (TEXT, Required): The dataset ID containing the table * `tableId` (TEXT, Required): The table ID to get schema information for **Output:** Returns the table schema including field names, types, and constraints *** ### Execute Query ##### `bigquery.executeQuery` Executes a SQL query in BigQuery and returns the results **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The Google Cloud project ID to execute the query in * `query` (MULTI\_LINE\_TEXT, Required): The SQL query to execute in BigQuery * `useLegacySql` (BOOLEAN, Optional): Whether to use legacy SQL syntax (default: false for Standard SQL) **Output:** Returns query results with the following structure: * `jobReference`: Job reference information * `totalRows`: Total number of rows in the result * `rows`: Array of result rows containing field values * `schema`: Schema of the result fields * `jobComplete`: Whether the job completed successfully *** ### Get Table Data ##### `bigquery.getTableData` Retrieves actual data rows from a BigQuery table **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The Google Cloud project ID * `datasetId` (TEXT, Required): The dataset ID containing the table * `tableId` (TEXT, Required): The table ID to retrieve data from * `maxResults` (NUMBER, Optional): Maximum number of rows to return (optional) **Output:** Returns table data with rows and schema information *** ### Create Dataset ##### `bigquery.createDataset` Creates a new dataset in BigQuery **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The Google Cloud project ID * `datasetId` (TEXT, Required): The ID for the new dataset * `description` (TEXT, Optional): Optional description for the dataset * `location` (TEXT, Optional): Geographic location for the dataset (e.g., US, EU) **Output:** Returns the created dataset with its ID and metadata *** ### Create Table ##### `bigquery.createTable` Creates a new table in a BigQuery dataset **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The Google Cloud project ID * `datasetId` (TEXT, Required): The dataset ID to create the table in * `tableId` (TEXT, Required): The ID for the new table * `description` (TEXT, Optional): Optional description for the table * `schema` (MULTI\_LINE\_TEXT, Optional): Table schema as JSON array of field objects (optional) **Output:** Returns the created table with its ID and schema information *** ### Insert Table Data ##### `bigquery.insertTableData` Inserts data rows into a BigQuery table **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The Google Cloud project ID * `datasetId` (TEXT, Required): The dataset ID containing the table * `tableId` (TEXT, Required): The table ID to insert data into * `rows` (MULTI\_LINE\_TEXT, Required): JSON array of row objects to insert * `ignoreUnknownValues` (BOOLEAN, Optional): Whether to ignore unknown values in the data * `skipInvalidRows` (BOOLEAN, Optional): Whether to skip rows that contain invalid data **Output:** Returns insertion results with success/failure information *** ### Get Dataset Info ##### `bigquery.getDatasetInfo` Gets detailed information about a BigQuery dataset **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The Google Cloud project ID * `datasetId` (TEXT, Required): The dataset ID to get information for **Output:** Returns dataset information including creation time, location, and access controls *** ## Common Use Cases Manage and organize your Big Query data Automate workflows with Big Query Generate insights and reports Connect Big Query with other tools ## Best Practices **Getting Started:** 1. Enable the Big Query integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Big Query integration, contact [support@langdock.com](mailto:support@langdock.com) # Confluence Source: https://docs.langdock.com/administration/integrations/confluence Collaborative workspace that connects teams with the content they need ## Overview Collaborative workspace that connects teams with the content they need. Through Langdock's integration, you can access and manage Confluence directly from your conversations. **Authentication:** OAuth\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Search ##### `confluence.search` Searches for pages by content and title matching using text queries. Use this for partial title matches, keyword searches, or content searches. **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): Text to search for in page titles and content. Searches both titles (with wildcard matching for partial matches) and full page content. Use for any user search request including keywords, phrases, or partial titles. Leave empty to get recent pages. **Output:** Returns an array of search results with page information including: * `id`: Page ID * `title`: Page title * `excerpt`: Page excerpt with highlights * `url`: Page URL * `space`: Space information * `version`: Page version details * `lastModified`: Last modified date *** ### Search (Native) ##### `confluence.searchNative` Searches for pages and content within your Confluence workspace **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): A query string for filtering the file results. If no query string is passed, it returns the most recent pages. This searches through the full text and the titles of the pages **Output:** Returns search results optimized for file search functionality *** ### Download File ##### `confluence.downloadFile` Downloads a specific file from your Confluence workspace **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): The unique identifier of the file you want to download from Confluence **Output:** Returns the file content as binary data *** ### Get Pages ##### `confluence.getPages` Gets pages using structured filters like space, status, or sorting. Use this when users want to list/browse pages from specific spaces, get recent pages, or filter by criteria (e.g., 'get all pages from Marketing space', 'show me recent pages', 'list draft pages'). **Requires Confirmation:** No **Parameters:** * `spaceId` (TEXT, Optional): Filter pages by specific space ID. If the user requests pages from a space and only provides the space name, first call the get\_spaces action to look up the space and retrieve its ID by name or key, then use that ID here. * `status` (TEXT, Optional): Filter by page status. Use 'current' for published pages, 'draft' for draft pages. Default is 'current' if not specified. * `sort` (TEXT, Optional): Sort order for results. Use 'created-date' for newest first, 'modified-date' for recently updated, 'title' for alphabetical. Use when user asks for recent, latest, or sorted results. * `limit` (NUMBER, Optional): Number of results to return (1-250). Use when user specifies how many pages they want or for pagination. Default is 25. * `cursor` (TEXT, Optional): Pagination cursor for getting next set of results. Use when user wants to continue browsing or get more results after initial query. * `title` (TEXT, Optional): Filter by exact page title only (no partial matching). Use when user provides the complete, exact page title. * `pageIds` (TEXT, Optional): Get specific pages by their IDs. Use when user provides specific page IDs or when you have IDs from previous queries. **Output:** Returns an array of pages with their details including title, content, space, and metadata *** ### Get Folder ##### `confluence.getFolder` Retrieves a specific Confluence folder by its ID. Use this action when users ask for pages of a folder. **Requires Confirmation:** No **Parameters:** * `folderId` (TEXT, Required): The unique id of the folder you want to retrieve the contents of, can be found by using the search confluence action **Output:** Returns folder contents and metadata *** ### Get Spaces ##### `confluence.getSpaces` Lists all spaces in the Confluence workspace. Use this action when the user asks for available spaces, or when you need to look up a space ID by name or key before calling other actions (e.g., when a user requests pages from a space but only provides the space name). **Requires Confirmation:** No **Parameters:** * `ids` (TEXT, Optional): Filter results to spaces with these IDs. Use when user provides specific space IDs. * `keys` (TEXT, Optional): Filter results to spaces with these keys. Use when user provides specific space keys or short names. * `type` (TEXT, Optional): Filter by space type (global, collaboration, knowledge\_base, personal). Use when user specifies a type of space. * `status` (TEXT, Optional): Filter by space status (current, archived). Use when user specifies only active or archived spaces. * `labels` (TEXT, Optional): Filter by space labels. Use when user specifies labels or tags for spaces. * `favoritedBy` (TEXT, Optional): Filter to spaces favorited by a specific user (by account ID). Use when user asks for their favorite spaces. * `notFavoritedBy` (TEXT, Optional): Filter to spaces NOT favorited by a specific user (by account ID). * `sort` (TEXT, Optional): Sort the result by a particular field (id, key, name, etc). * `descriptionFormat` (TEXT, Optional): Format for the space description field (plain, view). * `includeIcon` (BOOLEAN, Optional): Set to true to include the space icon in the response. * `cursor` (TEXT, Optional): Pagination cursor for getting next set of results. * `limit` (NUMBER, Optional): Maximum number of spaces to return (1-250). **Output:** Returns an array of spaces with their details including name, key, description, and metadata *** ### Create Page ##### `confluence.createPage` Creates a new page in a Confluence space. Use this when users want to create new content, add a page, or publish information to Confluence. **Requires Confirmation:** Yes **Parameters:** * `spaceId` (TEXT, Required): ID of the space where the page will be created. Required. Use get\_spaces action to find space ID if only space name is provided. * `title` (TEXT, Optional): Title of the page. Required for published pages, optional for drafts. Use when user provides a page title or heading. * `bodyContent` (MULTI\_LINE\_TEXT, Optional): Content of the page in Confluence storage format or HTML. Use when user provides page content, text, or wants to add information to the page. * `status` (TEXT, Optional): Page status: 'current' for published pages, 'draft' for draft pages. Use 'draft' when user wants to save without publishing. Default is 'current'. * `parentId` (TEXT, Optional): ID of parent page to create this page under. Use when user wants to create a sub-page or organize content hierarchically. Leave empty for space homepage. * `subtype` (TEXT, Optional): Page subtype. Use 'live' to create a live document that supports real-time collaboration. Leave empty for regular pages. * `private` (BOOLEAN, Optional): Set to true to create a private page that only the creator can view and edit. Use when user wants to create personal or private content. * `rootLevel` (BOOLEAN, Optional): Set to true to create the page at space root level (outside space homepage tree). Use when user wants a top-level page not under the homepage. * `embedded` (BOOLEAN, Optional): Set to true to create embedded content. Use for special content types that will be embedded elsewhere. **Output:** Returns the created page with its ID and metadata *** ### Update Page ##### `confluence.updatePage` Updates an existing Confluence page by ID. Can update title only (efficient) or full content. Use titleChangeOnly=true when users only want to change the page title/heading for token efficiency. Use titleChangeOnly=false for content changes. **Requires Confirmation:** Yes **Parameters:** * `pageId` (TEXT, Required): ID of the page to update. Required. Can be found using search or get\_pages actions. * `title` (TEXT, Required): New title for the page. Required. Use when user wants to change the page title or heading. * `titleChangeOnly` (BOOLEAN, Optional): Set to true when only changing the page title (efficient, no version number needed). Set to false when updating content. Use true for rename operations to save tokens. * `bodyContent` (MULTI\_LINE\_TEXT, Optional): New content for the page in Confluence storage format or HTML. Required when titleChangeOnly=false. Not needed when titleChangeOnly=true. * `versionNumber` (NUMBER, Required): Current version number of the page. REQUIRED by Confluence API when titleChangeOnly=false (for optimistic locking to prevent edit conflicts). The version will be automatically incremented for the update. If not provided, it will be fetched automatically. Not needed when titleChangeOnly=true. * `status` (TEXT, Optional): Page status: 'current' for published, 'draft' for draft. Use when user wants to publish/unpublish or change page status. Default is 'current'. * `versionMessage` (TEXT, Optional): Optional message describing the changes made in this update. Use when user provides context about their changes. Only used when titleChangeOnly=false. * `parentId` (TEXT, Optional): ID of new parent page to move this page under within the same space. Use when user wants to reorganize page hierarchy. Only used when titleChangeOnly=false. * `ownerId` (TEXT, Optional): Account ID of new page owner to transfer ownership. Use when user wants to change who owns the page. Only used when titleChangeOnly=false. * `spaceId` (TEXT, Optional): ID of containing space. Note: Moving pages to different spaces is not currently supported by the API. Only used when titleChangeOnly=false. **Output:** Returns the updated page with its ID and metadata *** ### Get Page ##### `confluence.getPage` Retrieves a specific Confluence page by its ID including its content and metadata **Requires Confirmation:** No **Parameters:** * `pageId` (TEXT, Required): The unique id of the page you want to retrieve the content of, can be found by using the search confluence action **Output:** Returns the page content and metadata #### Triggers *** ### New Page ##### `confluence.newPage` Triggers when new pages are published in Confluence **Requires Confirmation:** No **Parameters:** None **Output:** Returns information about newly published pages *** ### Updated Page ##### `confluence.updatedPage` Triggers when a published Confluence page is updated **Requires Confirmation:** No **Parameters:** * `pageId` (TEXT, Required): The id of the page that should be monitored for updates **Output:** Returns information about updated pages *** ## Common Use Cases Manage and organize your Confluence data Automate workflows with Confluence Generate insights and reports Connect Confluence with other tools ## Best Practices **Getting Started:** 1. Enable the Confluence integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Confluence integration, contact [support@langdock.com](mailto:support@langdock.com) # DeepL Source: https://docs.langdock.com/administration/integrations/deepl Advanced AI translation service delivering accurate, natural-sounding translations ## Overview Advanced AI translation service delivering accurate, natural-sounding translations. Through Langdock's integration, you can access and manage DeepL directly from your conversations. **Authentication:** API Key\ **Category:** Translation & Content\ **Availability:** All workspace plans ## Available Actions ### Translate Text ##### `deepl.translateText` Translates text from one language to another using DeepL's translation service **Requires Confirmation:** No **Parameters:** * `inputText` (MULTI\_LINE\_TEXT, Required): The text to translate * `targetLanguage` (SELECT, Required): The Target Language. Options include: English (US), French, German, Italian, Spanish, Japanese, Dutch, Polish, Turkish, Russian, Chinese, Danish, Portuguese (Brazil), Korean, Indonesian, Hungarian, Czech, Greek, Bulgarian, Estonian, Lithuanian, Norwegian Bokmal, Latvian, Romanian, Slovak, Slovenian, Swedish, Ukrainian, Chinese (Simplified), Chinese (Traditional), Portuguese (Portugal) * `sourceLanguage` (SELECT, Optional): The source language of the text. If not specified, DeepL will auto-detect the language. Required when using glossary id. Options include: Arabic, Bulgarian, Czech, Danish, German, Greek, English, Spanish, Estonian, Finnish, French, Hungarian, Indonesian, Italian, Japanese, Korean, Lithuanian, Latvian, Norwegian Bokmal, Dutch, Polish, Portuguese, Romanian, Russian, Slovak, Slovenian, Swedish, Turkish, Ukrainian, Chinese * `glossaryId` (TEXT, Optional): The unique identifier of the glossary to use for translation. Requires source language to be set. The glossary language pair must match the translation language pair * `formality` (SELECT, Optional): Sets the formality level of the translation. Available for target languages DE, FR, IT, ES, NL, PL, PT-BR, PT-PT, JA, and RU. Use prefer\_ options to fallback gracefully for unsupported languages. Options: default, more, less, prefer\_more, prefer\_less **Output:** Returns translation results with the following structure: * `translations`: Array of translation objects containing: * `detected_source_language`: Detected source language code * `text`: Translated text * `usage`: Usage information including character count *** ### Improve Text ##### `deepl.improveText` Improves and rephrases text in the specified target language with optional writing style or tone but not both **Requires Confirmation:** No **Parameters:** * `inputText` (MULTI\_LINE\_TEXT, Required): The text to translate * `targetLanguage` (SELECT, Optional): The Target Language. Options: French, German, Italian, Spanish, Portuguese (Brazil), Portuguese (Portugal), English, English (UK), English (US) * `writingStyle` (SELECT, Optional): Specify a style to rephrase your text in a way that fits your audience and goals. The prefer\_ prefix allows falling back to the default tone if the language does not yet support tones. Options: academic, business, casual, default, simple, prefer\_academic, prefer\_business, prefer\_casual, prefer\_simple * `tone` (SELECT, Optional): Specify the desired tone for your text. The prefer\_ prefix allows falling back to the default tone if the language does not yet support tones. Options: confident, default, diplomatic, enthusiastic, friendly, prefer\_confident, prefer\_diplomatic, prefer\_enthusiastic **Output:** Returns improved text with the same structure as translation results *** ### Create Glossary ##### `deepl.createGlossary` Creates a glossary **Requires Confirmation:** Yes **Parameters:** * `name` (TEXT, Required): The name of the glossary you want to create * `sourceLanguage` (TEXT, Required): The language in which the source texts in the glossary are specified. Example: en. Available options: da de en es fr it ja ko nb nl pl pt ro ru sv zh * `targetLanguage` (TEXT, Required): The language in which the target texts in the glossary are specified. Example: en. Available options: da de en es fr it ja ko nb nl pl pt ro ru sv zh * `entries` (TEXT, Required): The entries of the glossary. The entries have to be specified in the format provided by the entries\_format parameter. Example: 'Hello Guten Tag' * `entriesFormat` (TEXT, Required): The format in which the glossary entries are provided. Formats currently available: 1. tsv (default) - tab-separated values, 2. csv - comma-separated values **Output:** Returns the created glossary with its ID and metadata *** ### List All Glossaries ##### `deepl.listAllGlossaries` Lists all available glossaries **Requires Confirmation:** No **Parameters:** None **Output:** Returns an array of glossaries with their IDs, names, and language pairs *** ### Delete Glossary ##### `deepl.deleteGlossary` Deletes a by id specified glossary **Requires Confirmation:** Yes **Parameters:** * `glossaryId` (TEXT, Required): The unique identifier of the glossary you want to retrieve information about **Output:** Returns confirmation of deletion *** ### Get Glossary ##### `deepl.getGlossary` Retrieves meta information or entries of an single glossary specified by its id **Requires Confirmation:** No **Parameters:** * `glossaryId` (TEXT, Required): The unique identifier of the glossary you want to retrieve information about * `entries` (BOOLEAN, Optional): if checked it will retrieve the glossarys entries / content **Output:** Returns glossary information including name, language pair, and optionally entries *** ### Get Usage ##### `deepl.getUsage` Retrieves current usage information for your DeepL API account including character counts and limits **Requires Confirmation:** No **Parameters:** None **Output:** Returns usage information including character count and limits *** ## Common Use Cases Manage and organize your DeepL data Automate workflows with DeepL Generate insights and reports Connect DeepL with other tools ## Best Practices **Getting Started:** 1. Enable the DeepL integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the DeepL integration, contact [support@langdock.com](mailto:support@langdock.com) # ElevenLabs Source: https://docs.langdock.com/administration/integrations/elevenlabs AI-powered text-to-speech and speech-to-text platform with natural voice synthesis and accurate transcription capabilities ## Overview AI-powered text-to-speech and speech-to-text platform with natural voice synthesis and accurate transcription capabilities. Through Langdock's integration, you can access and manage ElevenLabs directly from your conversations. **Authentication:** API Key\ **Category:** Translation & Content\ **Availability:** All workspace plans ## Available Actions ### Text to Speech ##### `elevenlabs.texttoSpeech` Convert text into natural-sounding speech using AI voices **Requires Confirmation:** Yes **Parameters:** * `text` (MULTI\_LINE\_TEXT, Required): The text to convert to speech * `voice_id` (TEXT, Optional): The ID of the voice to use. Default is 'Rachel' (21m00Tcm4TlvDq8ikWAM) * `model_id` (SELECT, Optional): The model to use for text-to-speech. Options: Multilingual v2 (Default), Turbo v2.5 (Fast), Flash v2.5 (Very Fast) * `output_format` (SELECT, Optional): The audio format for the output. Options: MP3 (44.1kHz), MP3 (22kHz), PCM (16kHz), PCM (22kHz), PCM (24kHz), PCM (44.1kHz) **Output:** Returns audio file with the following structure: * `fileName`: Generated audio file name * `mimeType`: MIME type of the audio file * `base64`: Base64 encoded audio data *** ### Get Recent Conversations ##### `elevenlabs.getRecentConversations` List recent Conversational AI agent conversations with filtering options **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Maximum number of conversations to retrieve (default: 10, max: 100) * `agent_id` (TEXT, Optional): Filter by specific agent ID (optional) * `from_date` (TEXT, Optional): Filter conversations after this date (YYYY-MM-DD format) * `to_date` (TEXT, Optional): Filter conversations before this date (YYYY-MM-DD format) **Output:** Returns an array of conversations with their IDs, timestamps, and metadata *** ### Get Conversation Transcript ##### `elevenlabs.getConversationTranscript` Retrieve transcript and details from Conversational AI agent conversations **Requires Confirmation:** No **Parameters:** * `conversation_id` (TEXT, Required): The conversation ID from your Conversational AI history (e.g., qcRqzgdfTDNaCznQIlSJ) **Output:** Returns conversation transcript and details including messages, timestamps, and participant information *** ### Get Item by Name ##### `elevenlabs.getItembyName` Retrieves OneDrive items by name, providing their ID, name, URL, and other metadata **Requires Confirmation:** No **Parameters:** * `filter` (TEXT, Required): Filter drive items by if their names contain the filter **Output:** Returns an array of items with the following structure: * `id`: Item ID * `name`: Item name * `webUrl`: Web URL for the item * `createdDate`: Creation date * `creator`: Creator information (name, email) * `lastModifiedDateTime`: Last modified date * `lastModifier`: Last modifier information (name, email) *** ### Get Sheet by Item ID ##### `elevenlabs.getSheetbyItemID` Retrieves all worksheets of an Excel workbook **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): Id of the item of which you want to retrieve the worksheets of **Output:** Returns an array of worksheets with their IDs and names *** ### Add Sheet to Workbook ##### `elevenlabs.addSheettoWorkbook` Adds a worksheet to an existing Excel workbook **Requires Confirmation:** Yes **Parameters:** * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `sheetName` (TEXT, Required): The name of the sheet you want to add to the workbook **Output:** Returns the created sheet with its ID and name *** ### Get Tables ##### `elevenlabs.getTables` Retrieves all tables from a worksheet, specified by item id and sheet id **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): Id of the item of which you want to retrieve the tables of * `sheetId` (TEXT, Required): The id of the sheet where the table is located **Output:** Returns an array of tables with their IDs and metadata *** ### Get All Table Columns ##### `elevenlabs.getAllTableColumns` Retrieves all columns from a table **Requires Confirmation:** No **Parameters:** * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet **Output:** Returns an array of columns with their names and types *** ### Get Single Table Row ##### `elevenlabs.getSingleTableRow` Retrieves a specific row from a table given its row index **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of * `rowIndex` (TEXT, Required): Index (number) of the row you want to retrieve **Output:** Returns the row data with values for each column *** ### Update Table Row ##### `elevenlabs.updateTableRow` Updates a specific row in a table, requiring values for each column **Requires Confirmation:** Yes **Parameters:** * `rowIndex` (TEXT, Required): The id of the row you want to update * `rowValues` (TEXT, Required): The values of the row you want to insert. Enter them separated by a comma like: hello,world,4 this will insert hello into the first column and world in the second column and 4 into the third column of the table same for numbers or dates separate every new value with a comma * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of **Output:** Returns confirmation of the update *** ### Add Table Row ##### `elevenlabs.addTableRow` Adds a new row to the end of a table **Requires Confirmation:** Yes **Parameters:** * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of * `rowValues` (TEXT, Required): The values of the row you want to insert. Enter them separated by a comma like: hello,world,4 this will insert hello into the first column and world in the second column and 4 into the third column of the table same for numbers or dates separate every new value with a comma **Output:** Returns confirmation of the row addition *** ### Delete Table Row ##### `elevenlabs.deleteTableRow` Deletes a specific row from a table given its row index **Requires Confirmation:** Yes **Parameters:** * `rowIndex` (NUMBER, Required): Index of the row you want to delete * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of **Output:** Returns confirmation of the row deletion *** ## Common Use Cases Manage and organize your ElevenLabs data Automate workflows with ElevenLabs Generate insights and reports Connect ElevenLabs with other tools ## Best Practices **Getting Started:** 1. Enable the ElevenLabs integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the ElevenLabs integration, contact [support@langdock.com](mailto:support@langdock.com) # Excel Source: https://docs.langdock.com/administration/integrations/excel Spreadsheet software for data organization, analysis, and visualization ## Overview Spreadsheet software for data organization, analysis, and visualization. Through Langdock's integration, you can access and manage Excel directly from your conversations. **Authentication:** OAuth\ **Category:** Microsoft 365\ **Availability:** All workspace plans ## Available Actions ### Get Item by Name ##### `excel.getItembyName` Retrieves OneDrive items by name, providing their ID, name, URL, and other metadata **Requires Confirmation:** No **Parameters:** * `filter` (TEXT, Required): Filter drive items by if their names contain the filter **Output:** Returns an array of items with the following structure: * `id`: Item ID * `name`: Item name * `webUrl`: Web URL for the item * `createdDate`: Creation date * `creator`: Creator information (name, email) * `lastModifiedDateTime`: Last modified date * `lastModifier`: Last modifier information (name, email) *** ### Get Sheet by Item ID ##### `excel.getSheetbyItemID` Retrieves all worksheets of an Excel workbook **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): Id of the item of which you want to retrieve the worksheets of **Output:** Returns an array of worksheets with their IDs and names *** ### Add Sheet to Workbook ##### `excel.addSheettoWorkbook` Adds a worksheet to an existing Excel workbook **Requires Confirmation:** Yes **Parameters:** * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `sheetName` (TEXT, Required): The name of the sheet you want to add to the workbook **Output:** Returns the created sheet with its ID and name *** ### Get Tables ##### `excel.getTables` Retrieves all tables from a worksheet, specified by item id and sheet id **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): Id of the item of which you want to retrieve the tables of * `sheetId` (TEXT, Required): The id of the sheet where the table is located **Output:** Returns an array of tables with their IDs and metadata *** ### Get All Table Columns ##### `excel.getAllTableColumns` Retrieves all columns from a table **Requires Confirmation:** No **Parameters:** * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet **Output:** Returns an array of columns with their names and types *** ### Get Single Table Row ##### `excel.getSingleTableRow` Retrieves a specific row from a table given its row index **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of * `rowIndex` (TEXT, Required): Index (number) of the row you want to retrieve **Output:** Returns the row data with values for each column *** ### Update Table Row ##### `excel.updateTableRow` Updates a specific row in a table, requiring values for each column **Requires Confirmation:** Yes **Parameters:** * `rowIndex` (TEXT, Required): The id of the row you want to update * `rowValues` (TEXT, Required): The values of the row you want to insert. Enter them separated by a comma like: hello,world,4 this will insert hello into the first column and world in the second column and 4 into the third column of the table same for numbers or dates separate every new value with a comma * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of **Output:** Returns confirmation of the update *** ### Add Table Row ##### `excel.addTableRow` Adds a new row to the end of a table **Requires Confirmation:** Yes **Parameters:** * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of * `rowValues` (TEXT, Required): The values of the row you want to insert. Enter them separated by a comma like: hello,world,4 this will insert hello into the first column and world in the second column and 4 into the third column of the table same for numbers or dates separate every new value with a comma **Output:** Returns confirmation of the row addition *** ### Delete Table Row ##### `excel.deleteTableRow` Deletes a specific row from a table given its row index **Requires Confirmation:** Yes **Parameters:** * `rowIndex` (NUMBER, Required): Index of the row you want to delete * `itemId` (TEXT, Required): The id of the item which contains the Excel sheet * `tableId` (TEXT, Required): The id of the table you want to fetch the rows of **Output:** Returns confirmation of the row deletion *** ## Common Use Cases Manage and organize your Excel data Automate workflows with Excel Generate insights and reports Connect Excel with other tools ## Best Practices **Getting Started:** 1. **Prerequisite:** A Microsoft Admin must [approve the Langdock application](/administration/microsoft-admin-approval) in your Microsoft workspace once. 2. Enable the Excel integration in your workspace settings 3. Authenticate using OAuth 4. Test the connection with a simple read operation 5. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Excel integration, contact [support@langdock.com](mailto:support@langdock.com) # GitHub Source: https://docs.langdock.com/administration/integrations/github Github allows developers to create, store, manage, and share their code ## Overview Github allows developers to create, store, manage, and share their code. Through Langdock's integration, you can access and manage GitHub directly from your conversations. **Authentication:** OAuth\ **Category:** Development & Issue Tracking\ **Availability:** All workspace plans ## Available Actions ### List Pull Requests ##### `github.listPullRequests` Lists all pull requests in a repository **Requires Confirmation:** No **Parameters:** * `owner` (TEXT, Required): Owner of the repository * `repository` (TEXT, Required): Repository name **Output:** Returns an array of pull requests with the following structure: * `id`: Pull request ID * `number`: Pull request number * `title`: Pull request title * `body`: Pull request description * `state`: Pull request state (open, closed, merged) * `created_at`: Creation date * `updated_at`: Last update date * `user`: Author information * `head`: Source branch information * `base`: Target branch information *** ### Get Pull Request ##### `github.getPullRequest` Retrieves detailed information about the specified pull request **Requires Confirmation:** No **Parameters:** * `owner` (TEXT, Required): Owner of the repository you want to get the pull requests details from * `repository` (TEXT, Required): The repository to look into * `pullRequestNumber` (TEXT, Required): The number of the pull request you are interested in **Output:** Returns detailed pull request information including commits, files changed, and review status *** ### Get Pull Request Commits ##### `github.getPullRequestCommits` Gets the commits of a given pull request **Requires Confirmation:** No **Parameters:** * `owner` (TEXT, Required): Owner of the repository you want to get the pull requests commits from * `repository` (TEXT, Required): The repository you want to retrieve the pull requests commits from * `pullRequestNumber` (TEXT, Required): The number of the pull request **Output:** Returns an array of commits with their details including SHA, message, author, and date *** ### Create Pull Request ##### `github.createPullRequest` Creates a pull request **Requires Confirmation:** Yes **Parameters:** * `owner` (TEXT, Required): The owner of the Github repository you want to create a pull request for * `repository` (TEXT, Required): The name of the Github repository you want to create a pull request for * `title` (TEXT, Required): The title of the pull request * `body` (MULTI\_LINE\_TEXT, Required): The body / description of the pull request * `targetBranch` (TEXT, Required): The name of the branch you want to merge the changes into * `githubUsername` (TEXT, Required): GitHub username * `sourceBranch` (TEXT, Required): Source Branch name **Output:** Returns the created pull request with its number and details *** ### List Issues ##### `github.listIssues` Lists all issues in a given repository **Requires Confirmation:** No **Parameters:** * `owner` (TEXT, Required): Owner of the repository * `repository` (TEXT, Required): Repository name **Output:** Returns an array of issues with their details including number, title, body, state, and labels *** ### Create Issue ##### `github.createIssue` Creates an issue for a specified repository **Requires Confirmation:** Yes **Parameters:** * `owner` (TEXT, Required): The owner of the Github repository you want to create a pull request for * `repository` (TEXT, Required): The name of the Github repository you want to create a pull request for * `title` (TEXT, Required): The title of the pull request * `body` (MULTI\_LINE\_TEXT, Required): The body / description of the pull request * `assignees` (TEXT, Optional): GitHub usernames of people who should be assigned to this issue. You can provide multiple assignees as a comma-separated list (e.g., username1, username2) or a single username * `labels` (TEXT, Optional): Labels to associate with this issue. You can provide multiple labels as a comma-separated list (e.g., bug, enhancement) or a single label name **Output:** Returns the created issue with its number and details *** ### Update Issue ##### `github.updateIssue` Updates a specified issue **Requires Confirmation:** Yes **Parameters:** * `owner` (TEXT, Required): The owner of the Github repository you want to create a pull request for * `repository` (TEXT, Required): The name of the Github repository you want to create a pull request for * `title` (TEXT, Optional): The title of the pull request * `body` (MULTI\_LINE\_TEXT, Optional): The body / description of the pull request * `assignees` (TEXT, Optional): GitHub usernames of people who should be assigned to this issue. You can provide multiple assignees as a comma-separated list (e.g., username1, username2) or a single username * `labels` (TEXT, Optional): Labels to associate with this issue. You can provide multiple labels as a comma-separated list (e.g., bug, enhancement) or a single label name * `issueNumber` (TEXT, Required): The number of the issue you want to edit **Output:** Returns the updated issue with its details *** ### Create Issue Comment ##### `github.createIssueComment` Creates a comment on a specified issue **Requires Confirmation:** Yes **Parameters:** * `owner` (TEXT, Required): The owner of the Github repository you want to create a pull request for * `repository` (TEXT, Required): The name of the Github repository you want to create a pull request for * `issueNumber` (TEXT, Required): The number of the issue you want to create a comment for * `comment` (TEXT, Required): The comment you want to create **Output:** Returns the created comment with its ID and details *** ## Common Use Cases Manage and organize your GitHub data Automate workflows with GitHub Generate insights and reports Connect GitHub with other tools ## Best Practices **Getting Started:** 1. Enable the GitHub integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the GitHub integration, contact [support@langdock.com](mailto:support@langdock.com) # Gmail Source: https://docs.langdock.com/administration/integrations/gmail Google's email service for sending, receiving, and managing emails ## Overview Google's email service for sending, receiving, and managing emails. Through Langdock's integration, you can access and manage Gmail directly from your conversations. **Authentication:** OAuth\ **Category:** Google Workspace\ **Availability:** All workspace plans ## Available Actions ### Create Email Draft ##### `gmail.createEmailDraft` Creates a draft email in your Gmail account without sending it **Requires Confirmation:** Yes **Parameters:** * `mailRecipient` (TEXT, Required): Email address of the person you want to send the email to * `mailSubject` (TEXT, Optional): Subject line for the email draft * `mailBody` (MULTI\_LINE\_TEXT, Optional): Main content of the email draft. Provide HTML-formatted content with proper tags: use `` for bold text, `` for italic text, `
  • ` for bullet lists, `
    1. ` for numbered lists, and `
      ` for line breaks. `Example: Important: This is a test email.

      Features:
      • First item
      • Second item
      ` * `cc` (TEXT, Optional): Email addresses to carbon copy on this reply. Multiple addresses should be separated by commas, for example: [mats@acme.com](mailto:mats@acme.com), [jonas@acme.com](mailto:jonas@acme.com) * `bcc` (TEXT, Optional): Email addresses to blind carbon copy on this reply. Recipients won't see who was BCC'd. Multiple addresses should be separated by commas, for example: [mats@acme.com](mailto:mats@acme.com), [jonas@acme.com](mailto:jonas@acme.com) * `attachments` (FILE, Optional): Files to attach to the draft **Output:** Returns the created draft with its ID and details *** ### Reply to Email ##### `gmail.replytoEmail` Creates and immediately sends an email from your Gmail account **Requires Confirmation:** Yes **Parameters:** * `mailSubject` (TEXT, Required): Subject line for the email * `mailRecipient` (TEXT, Required): Email address of the person you want to send the email to * `mailBody` (MULTI\_LINE\_TEXT, Required): Main content of the email. Provide HTML-formatted content with proper tags: use `` for bold text, `` for italic text, `
      • ` for bullet lists, `
        1. ` for numbered lists, and `
          ` for line breaks. `Example: Important: This is a test email.

          Features:
          • First item
          • Second item
          ` * `threadId` (TEXT, Required): The unique identifier of the email thread you want to send a reply to * `cc` (TEXT, Optional): Email addresses to carbon copy on this reply. Multiple addresses should be separated by commas, for example: [mats@acme.com](mailto:mats@acme.com), [jonas@acme.com](mailto:jonas@acme.com) * `bcc` (TEXT, Optional): Email addresses to blind carbon copy on this reply. Recipients won't see who was BCC'd. Multiple addresses should be separated by commas, for example: [mats@acme.com](mailto:mats@acme.com), [jonas@acme.com](mailto:jonas@acme.com) * `attachments` (FILE, Optional): Files to attach to the reply **Output:** Returns the sent email with its ID and details *** ### Send Email ##### `gmail.sendEmail` Creates and immediately sends an email from your Gmail account **Requires Confirmation:** Yes **Parameters:** * `mailSubject` (TEXT, Required): Subject line for the email * `mailRecipient` (TEXT, Required): Email address of the person you want to send the email to * `mailBody` (MULTI\_LINE\_TEXT, Required): Main content of the email. Provide HTML-formatted content with proper tags: use `` for bold text, `` for italic text, `
          • ` for bullet lists, `
            1. ` for numbered lists, and `
              ` for line breaks. `Example: Important: This is a test email.

              Features:
              • First item
              • Second item
              ` * `cc` (TEXT, Optional): Email addresses to carbon copy on this reply. Multiple addresses should be separated by commas, for example: [mats@acme.com](mailto:mats@acme.com), [jonas@acme.com](mailto:jonas@acme.com) * `bcc` (TEXT, Optional): Email addresses to blind carbon copy on this reply. Recipients won't see who was BCC'd. Multiple addresses should be separated by commas, for example: [mats@acme.com](mailto:mats@acme.com), [jonas@acme.com](mailto:jonas@acme.com) * `attachments` (FILE, Optional): Files to attach to the email **Output:** Returns the sent email with its ID and details *** ### Search Emails ##### `gmail.searchEmails` Searches through your Gmail inbox and returns emails matching your search criteria **Requires Confirmation:** No **Parameters:** * `filter` (TEXT, Optional): Search term to find specific emails. You can search by sender, recipient, subject, or content within the email body. Only return messages matching the specified query. Supports the same query format as the Gmail search box. For example, `'from:someuser@example.com rfc822msgid:` is:unread'. Please only set this field, if you really need to filter the emails. If you just want the latest, leave it empty. **Output:** Returns search results with the following structure: * `message`: Summary message about the search results * `emails`: Array of email objects containing: * `messageId`: Email message ID * `threadId`: Email thread ID * `subject`: Email subject * `date`: Email date * `from`: Sender information * `to`: Recipient information * `snippet`: Email snippet * `body`: Email body content * `hasAttachments`: Whether the email has attachments * `attachmentCount`: Number of attachments *** ### Get Email with Attachments ##### `gmail.getEmailwithAttachments` Retrieves a single email thread or message with full content including attachments. Returns all messages in the thread and their attachment files. **Requires Confirmation:** No **Parameters:** * `threadId` (TEXT, Optional): The unique identifier of the email thread to retrieve. Either threadId or messageId is required. * `messageId` (TEXT, Optional): The unique identifier of a specific email message to retrieve. Either threadId or messageId is required. **Output:** Returns the email thread or message with full content and attachments *** ### Create Draft Reply ##### `gmail.createDraftReply` Creates a draft reply for an email. **Requires Confirmation:** Yes **Parameters:** * `threadId` (TEXT, Required): The id of the thread where the message is in that should be answered. * `replyContent` (MULTI\_LINE\_TEXT, Required): The email content that should be the content of the draft. Provide HTML-formatted content with proper tags: use `` for bold text, `` for italic text, `
              • ` for bullet lists, `
                1. ` for numbered lists, and `
                  ` for line breaks. `Example: Important: This is a test email.

                  Features:
                  • First item
                  • Second item
                  ` * `to` (TEXT, Optional): Email address of the recipient. If left empty, the reply will be sent to the sender of the last message in the thread. Multiple addresses should be separated by commas, for example: [mats@acme.com](mailto:mats@acme.com), [karl@acme.com](mailto:karl@acme.com) * `cc` (TEXT, Optional): Email addresses to carbon copy on this reply. Multiple addresses should be separated by commas, for example: [mats@acme.com](mailto:mats@acme.com), [jonas@acme.com](mailto:jonas@acme.com) * `bcc` (TEXT, Optional): Email addresses to blind carbon copy on this reply. Recipients won't see who was BCC'd. Multiple addresses should be separated by commas, for example: [mats@acme.com](mailto:mats@acme.com), [jonas@acme.com](mailto:jonas@acme.com) * `attachments` (FILE, Optional): Files to attach to the draft reply **Output:** Returns the created draft reply with its ID and details #### Triggers *** ### New Email ##### `gmail.newEmail` Triggers when a new email is received in your inbox (sent emails are excluded) **Requires Confirmation:** No **Parameters:** None **Output:** Returns information about newly received emails *** ### New Email Matching Search ##### `gmail.newEmailMatchingSearch` Triggers when new emails matching your search query are received (sent emails excluded unless you add 'in:sent') **Requires Confirmation:** No **Parameters:** * `searchQuery` (TEXT, Required): Google search query to filter emails. Examples: 'from:[johndoe@example.com](mailto:johndoe@example.com)', 'subject:Important', 'has:attachment'. Sent emails are automatically excluded unless you include 'in:sent' in your query **Output:** Returns information about emails matching the search criteria *** ## Common Use Cases Manage and organize your Gmail data Automate workflows with Gmail Generate insights and reports Connect Gmail with other tools ## Best Practices **Getting Started:** 1. Enable the Gmail integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Gmail integration, contact [support@langdock.com](mailto:support@langdock.com) # Google Analytics Source: https://docs.langdock.com/administration/integrations/google-analytics Access Google Analytics data and generate comprehensive reports for website performance analysis ## Overview Access Google Analytics data and generate comprehensive reports for website performance analysis. Through Langdock's integration, you can access and manage Google Analytics directly from your conversations. **Authentication:** OAuth\ **Category:** Google Workspace\ **Availability:** All workspace plans ## Available Actions ### Get Realtime Users by Device ##### `googleanalytics.getRealtimeUsersbyDevice` Retrieves active users in the last 30 minutes broken down by device category (desktop, mobile, tablet) **Requires Confirmation:** No **Parameters:** * `propertyId` (TEXT, Required): The Google Analytics 4 property ID. This is the numeric identifier for your GA4 property (e.g., 123456789) **Output:** Returns realtime user data broken down by device category *** ### Run Report ##### `googleanalytics.runReport` Generate custom analytics reports with flexible date ranges, metrics, and dimensions **Requires Confirmation:** No **Parameters:** * `propertyId` (TEXT, Required): The Google Analytics 4 property ID. This is the numeric identifier for your GA4 property (e.g., 123456789) * `startDate` (TEXT, Required): Start date for the report in YYYY-MM-DD format or relative date (e.g., '7daysAgo', 'yesterday') * `endDate` (TEXT, Required): End date for the report in YYYY-MM-DD format or relative date (e.g., 'yesterday', 'today') * `metrics` (TEXT, Required): The metric to include in the report (e.g., 'sessions', 'activeUsers', 'screenPageViews', 'bounceRate') * `dimensions` (TEXT, Optional): Optional dimension to group the data by (e.g., 'country', 'deviceCategory', 'pagePath', 'sessionSource') * `pageFilter` (TEXT, Optional): Optional filter to include only pages containing this text (e.g., '/de/pricing', '/features', '/blog') **Output:** Returns analytics report data with the following structure: * `dimensionHeaders`: Information about the dimensions in the report * `metricHeaders`: Information about the metrics in the report * `rows`: Array of data rows containing dimension and metric values * `totals`: Summary totals for the report * `rowCount`: Number of rows in the report *** ### Run Pivot Report ##### `googleanalytics.runPivotReport` Generate advanced pivot table reports for data analysis, correlation discovery, and comparing high/low performers across multiple dimensions **Requires Confirmation:** No **Parameters:** * `propertyId` (TEXT, Required): The Google Analytics 4 property ID. This is the numeric identifier for your GA4 property (e.g., 123456789) * `startDate` (TEXT, Required): Start date for the report in YYYY-MM-DD format or relative date (e.g., '30daysAgo', '7daysAgo') * `endDate` (TEXT, Required): End date for the report in YYYY-MM-DD format or relative date (e.g., 'yesterday', 'today') * `metrics` (TEXT, Required): Comma-separated list of metrics to analyze (e.g., 'sessions,activeUsers,screenPageViews,bounceRate') * `dimensions` (TEXT, Required): Comma-separated list of ALL dimensions you want to analyze. Note: In pivot reports, only dimensions that are also specified in 'Pivot dimensions' will be used to avoid API errors. * `pivotDimensions` (TEXT, Required): Comma-separated list of specific dimensions to use as pivot columns/rows. These should be a subset of the dimensions above (e.g., 'deviceCategory' or 'deviceCategory,country') **Output:** Returns pivot table report data with cross-tabulated results *** ### Get Metadata ##### `googleanalytics.getMetadata` Retrieve all available dimensions and metrics for the property, including custom dimensions and metrics **Requires Confirmation:** No **Parameters:** * `propertyId` (TEXT, Required): The Google Analytics 4 property ID. This is the numeric identifier for your GA4 property (e.g., 123456789) **Output:** Returns metadata including all available dimensions and metrics for the property *** ### Analyze Content Performance ##### `googleanalytics.analyzeContentPerformance` Specialized report for analyzing page/content performance to identify high and low performers, detect anomalies, and understand topic effectiveness **Requires Confirmation:** No **Parameters:** * `propertyId` (TEXT, Required): The Google Analytics 4 property ID. This is the numeric identifier for your GA4 property (e.g., 123456789) * `startDate` (TEXT, Required): Start date for the analysis in YYYY-MM-DD format or relative date (e.g., '30daysAgo', '7daysAgo') * `endDate` (TEXT, Required): End date for the analysis in YYYY-MM-DD format or relative date (e.g., 'yesterday', 'today') * `sortBy` (TEXT, Optional): Metric to sort results by to identify top/bottom performers (e.g., 'sessions', 'activeUsers', 'engagementRate', 'bounceRate') * `limit` (NUMBER, Optional): Maximum number of pages/content to return (default: 50, max: 100) * `pageFilter` (TEXT, Optional): Filter to include only pages containing this text (e.g., 'pricing', 'blog', 'features'). Leave empty for all pages. * `metrics` (TEXT, Optional): Optional comma-separated list of metrics to include (e.g., 'sessions,activeUsers,screenPageViews') * `dimensions` (TEXT, Optional): Optional comma-separated list of dimensions to group by (e.g., 'pagePath,pageTitle') **Output:** Returns content performance analysis with page rankings and performance metrics *** ### Analyze Traffic Sources ##### `googleanalytics.analyzeTrafficSources` Analyze traffic sources, acquisition channels, and marketing performance to detect anomalies and identify effective channels **Requires Confirmation:** No **Parameters:** * `propertyId` (TEXT, Required): The Google Analytics 4 property ID. This is the numeric identifier for your GA4 property (e.g., 123456789) * `startDate` (TEXT, Required): Start date for the analysis in YYYY-MM-DD format or relative date (e.g., '30daysAgo', '7daysAgo') * `endDate` (TEXT, Required): End date for the analysis in YYYY-MM-DD format or relative date (e.g., 'yesterday', 'today') * `groupBy` (SELECT, Optional): Dimension to group traffic sources by (source, medium, campaign, channelGroup) * `metrics` (TEXT, Optional): Optional comma-separated list of metrics to include (e.g., 'sessions,activeUsers,newUsers,engagementRate') * `sortBy` (TEXT, Optional): Optional metric name to sort results by (e.g., 'sessions') **Output:** Returns traffic source analysis with channel performance metrics *** ### Batch Run Reports ##### `googleanalytics.batchRunReports` Generate multiple custom reports in a single API call for efficient data analysis and comparison **Requires Confirmation:** No **Parameters:** * `propertyId` (TEXT, Required): The Google Analytics 4 property ID. This is the numeric identifier for your GA4 property (e.g., 123456789) * `reportRequests` (MULTI\_LINE\_TEXT, Required): JSON array of report configurations. Each report should include startDate, endDate, metrics, and dimensions. Example: \[startDate': '7daysAgo', 'endDate': 'yesterday', 'metrics': 'sessions', 'dimensions': 'country, startDate': '30daysAgo', 'endDate': 'yesterday', 'metrics': 'activeUsers', 'dimensions': 'sessionSource] **Output:** Returns multiple reports in a single response for efficient data analysis *** ### Add Event ##### `googleanalytics.addEvent` Creates a new event in a specific calendar **Requires Confirmation:** Yes **Parameters:** * `sendUpdates` (TEXT, Optional): Whether to send notifications ('all', 'externalOnly', 'none') * `startTime` (TEXT, Required): Start time in RFC3339 format (e.g. '2025-03-15T09:00:00+01:00') * `description` (TEXT, Optional): Description of the event (optional) * `attendees` (TEXT, Optional): List of attendees email adresses (optional) * `recurrence` (TEXT, Optional): List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed. The separator between rules is an empty space. * `endTime` (TEXT, Required): End time in RFC3339 format (e.g. '2025-03-15T10:00:00+01:00') * `calendarId` (TEXT, Required): The id of the calendar (e.g. 'primary' for the main calendar) * `location` (TEXT, Optional): Location of the event (optional) * `timeZone` (TEXT, Required): IMPORTANT: If you don't know the time zone of the user, ask him. DO NOT GUESS THE TIME ZONE (Example fromat:. 'America/New\_York') * `title` (TEXT, Required): Title of the event * `eventType` (TEXT, Optional): The type of event. Allowed values: default, focusTime, outOfOffice, workingLocation, etc. See Google Calendar API docs for full list. Provide one event type only **Output:** Returns the created event with the following structure: * `id`: Event ID * `summary`: Event title * `description`: Event description * `start`: Start time information with dateTime and timeZone * `end`: End time information with dateTime and timeZone * `location`: Event location * `attendees`: Array of attendee objects with email addresses * `recurrence`: Recurrence rules if applicable * `htmlLink`: Link to view the event in Google Calendar * `created`: Creation timestamp * `updated`: Last update timestamp *** ### Update Event ##### `googleanalytics.updateEvent` Updates an event **Requires Confirmation:** Yes **Parameters:** * `eventId` (TEXT, Required): id of the event * `endTime` (TEXT, Optional): End time in RFC3339 format (e.g. '2025-03-15T10:00:00+01:00') * `startTime` (TEXT, Optional): New start time in RFC3339 format (e.g. '2025-03-15T09:00:00+01:00') * `calendarId` (TEXT, Required): The id of the calendar (e.g. 'primary' for the main calendar) * `timeZone` (TEXT, Optional): New time zone (e.g. 'America/New\_York') * `eventTitle` (TEXT, Optional): New title of the event (optional) * `attendees` (TEXT, Optional): New list of attendees email adresses (optional) * `description` (TEXT, Optional): New description of the event (optional) * `location` (TEXT, Optional): New location of the event (optional) * `sendUpdates` (TEXT, Optional): New policy on whether to send notifications ('all', 'externalOnly', 'none') (optional) * `recurrence` (TEXT, Optional): New list of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed. The separator between rules is an empty space. * `eventType` (TEXT, Optional): The type of event to update. Allowed values: default, focusTime, outOfOffice, workingLocation, etc. See Google Calendar API docs for full list. Provide as comma separated list. **Output:** Returns the updated event with its new details *** ### Get Event ##### `googleanalytics.getEvent` Gets an event **Requires Confirmation:** No **Parameters:** * `eventId` (TEXT, Required): The id of the specific event to retrieve * `calendarId` (TEXT, Required): The id of the calendar (can use 'primary' for the user's primary calendar) **Output:** Returns the event details including all properties and metadata *** ### Search for Events ##### `googleanalytics.searchforEvents` Gets calendar events by search query **Requires Confirmation:** No **Parameters:** * `maxResults` (TEXT, Optional): Maximum number of results to return (optional, default: 10) * `searchQuery` (TEXT, Optional): When using the search field for calendar events, input specific and relevant keywords that are likely to appear in the following fields: IMPORTANT DO NOT IGNORE: if asked to search things like an appointment, meeting, call, ... do not include this term into the search query as these are synonyms for event * Summary or Title: Include keywords that describe the event, such as "Project Meeting," "Quarterly Review," or "Team Lunch." * Description: Use terms related to the event's content or purpose, like "budget discussion" or "client presentation." * Location: Specify the name of the location or building where the event is held, such as "Conference Room A" or "Main Office." * Attendees: Include names or email addresses of specific attendees, e.g., "[john.doe@example.com](mailto:john.doe@example.com)" or "Jane Smith." * Organizer: Use the organizer's name or email to find events they are hosting, such as "[organizer@example.com](mailto:organizer@example.com)" or "Michael Johnson." * Working Location Properties: If applicable, use identifiers like office location labels or building IDs. * `endDate` (TEXT, Optional): End date of the time period searched for the search query. Upper bound (exclusive) for an event's start time to filter by. Optional. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If Start date is set, End date must be greater than Start date. * `calendarId` (TEXT, Required): The id of the calendar to search (use 'primary' for user's primary calendar) * `startDate` (TEXT, Optional): Start date of the time period searched for the search query. Lower bound (exclusive) for an event's end time to filter by. Optional. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If End date is set, Start date must be smaller than End date. * `desc` (BOOLEAN, Optional): Select if the results be ordered in descending order (start time). * `eventType` (TEXT, Optional): The type of event to filter for. Allowed values: default, focusTime, outOfOffice, workingLocation, etc. See Google Calendar API docs for full list. Provide only one single event type. **Output:** Returns an array of events matching the search criteria *** ### Delete Event ##### `googleanalytics.deleteEvent` Deletes an event **Requires Confirmation:** Yes **Parameters:** * `eventId` (TEXT, Required): id of the event that will be deleted. For event series note that if you provide an event instance id, it will delete just that instance, and if you provide a recurring event's master id, it will delete the entire series. For an event instance id of a reoccuring event like 7hagg0gtspd2b03lm8i3g4irr0\_20250318T160000Z, the part until the first \_ is the events's master id. * `calendarId` (TEXT, Required): The id of the calendar (e.g. 'primary' for the main calendar) **Output:** Returns confirmation of the deletion *** ### List Calendars ##### `googleanalytics.listCalendars` Lists all calendars accessible to the authenticated user using the Google Calendar API /users/me/calendarList endpoint. **Requires Confirmation:** No **Parameters:** * `maxResults` (TEXT, Optional): Maximum number of entries to return in one result page (default: 100, max: 250). * `minAccessRole` (SELECT, Optional): Restricts results to calendars where the user has at least this access role. Allowed values: freeBusyReader, reader, writer, owner. * `pageToken` (TEXT, Optional): Token specifying which result page to return (for pagination). * `showDeleted` (BOOLEAN, Optional): Whether to include deleted calendar list entries in the result (default: false). * `showHidden` (BOOLEAN, Optional): Whether to show hidden entries (default: false). * `syncToken` (TEXT, Optional): For incremental sync, only return entries changed since the previous request with this token. Cannot be used with minAccessRole. **Output:** Returns an array of calendars with the following structure: * `id`: Calendar ID * `summary`: Calendar name * `description`: Calendar description * `timeZone`: Calendar time zone * `accessRole`: User's access role for this calendar * `backgroundColor`: Calendar color * `foregroundColor`: Text color for this calendar * `selected`: Whether this calendar is selected * `primary`: Whether this is the user's primary calendar *** ### Get Free/Busy for Calendar ##### `googleanalytics.getFreeBusyforCalendar` Retrieves free/busy information for one or more calendars over a specified time range using the Google Calendar API /freeBusy endpoint. **Requires Confirmation:** No **Parameters:** * `timeMin` (TEXT, Required): RFC3339 timestamp for the start of the time range to check (inclusive). Example: 2025-05-15T08:00:00Z * `timeMax` (TEXT, Required): RFC3339 timestamp for the end of the time range to check (exclusive). Example: 2025-05-15T18:00:00Z * `timeZone` (TEXT, Optional): Time zone for the response (optional, defaults to UTC). Example: Europe/Berlin * `items` (TEXT, Required): List of calendar IDs to check (e.g., emails, resource IDs, or 'primary'). Enter as a comma-separated list. **Output:** Returns free/busy information with the following structure: * `kind`: API resource type * `timeMin`: Start of the queried range * `timeMax`: End of the queried range * `calendars`: Object containing free/busy information for each requested calendar * `busy`: Array of time ranges when the calendar is busy * `errors`: Any errors encountered for this calendar #### Triggers *** ### New Event ##### `googleanalytics.newEvent` Triggers when new calendar events are created in specified calendars **Requires Confirmation:** No **Parameters:** * `calendarId` (TEXT, Optional): ID of the calendar to monitor for new events. Identifies which specific calendar to check for new events * `daysToInclude` (TEXT, Optional): Number of days in the future to look for events. Default is 30 days **Output:** Returns information about newly created events *** ### Event Start ##### `googleanalytics.eventStart` Triggers when events are about to start within a specified time window **Requires Confirmation:** No **Parameters:** * `calendarId` (TEXT, Optional): ID of the calendar to monitor. Defaults to your primary calendar if not specified * `minuteBefore` (TEXT, Required): Number of minutes before an event starts to trigger the workflow. Default is 15 minutes **Output:** Returns information about upcoming events *** ### New Event Matching Search ##### `googleanalytics.newEventMatchingSearch` Triggers when new calendar events matching the specified search query are created **Requires Confirmation:** No **Parameters:** * `calendarId` (TEXT, Optional): ID of the calendar to monitor for new events. Identifies which specific calendar to check for new events * `daysToInclude` (NUMBER, Optional): Number of days in the future to look for events. Default is 30 days * `searchQuery` (TEXT, Required): Text to search for in event subjects. Examples: 'Meeting', 'Review', 'Project kickoff' **Output:** Returns information about events matching the search criteria *** ## Common Use Cases Manage and organize your Google Analytics data Automate workflows with Google Analytics Generate insights and reports Connect Google Analytics with other tools ## Best Practices **Getting Started:** 1. Enable the Google Analytics integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Google Analytics integration, contact [support@langdock.com](mailto:support@langdock.com) # Google Calendar Source: https://docs.langdock.com/administration/integrations/google-calendar Google Calendar lets you organize your schedule and share events with co-workers ## Overview Google Calendar lets you organize your schedule and share events with co-workers. Through Langdock's integration, you can access and manage Google Calendar directly from your conversations. **Authentication:** OAuth\ **Category:** Google Workspace\ **Availability:** All workspace plans ## Available Actions ### Add Event ##### `googlecalendar.addEvent` Creates a new event in a specific calendar **Requires Confirmation:** Yes **Parameters:** * `sendUpdates` (TEXT, Optional): Whether to send notifications ('all', 'externalOnly', 'none') * `startTime` (TEXT, Required): Start time in RFC3339 format (e.g. '2025-03-15T09:00:00+01:00') * `description` (TEXT, Optional): Description of the event (optional) * `attendees` (TEXT, Optional): List of attendees email adresses (optional) * `recurrence` (TEXT, Optional): List of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed. The separator between rules is an empty space. * `endTime` (TEXT, Required): End time in RFC3339 format (e.g. '2025-03-15T10:00:00+01:00') * `calendarId` (TEXT, Required): The id of the calendar (e.g. 'primary' for the main calendar) * `location` (TEXT, Optional): Location of the event (optional) * `timeZone` (TEXT, Required): IMPORTANT: If you don't know the time zone of the user, ask him. DO NOT GUESS THE TIME ZONE (Example fromat:. 'America/New\_York') * `title` (TEXT, Required): Title of the event * `eventType` (TEXT, Optional): The type of event. Allowed values: default, focusTime, outOfOffice, workingLocation, etc. See Google Calendar API docs for full list. Provide one event type only **Output:** Returns the created event with the following structure: * `id`: Event ID * `summary`: Event title * `description`: Event description * `start`: Start time information with dateTime and timeZone * `end`: End time information with dateTime and timeZone * `location`: Event location * `attendees`: Array of attendee objects with email addresses * `recurrence`: Recurrence rules if applicable * `htmlLink`: Link to view the event in Google Calendar * `created`: Creation timestamp * `updated`: Last update timestamp *** ### Update Event ##### `googlecalendar.updateEvent` Updates an event **Requires Confirmation:** Yes **Parameters:** * `eventId` (TEXT, Required): id of the event * `endTime` (TEXT, Optional): End time in RFC3339 format (e.g. '2025-03-15T10:00:00+01:00') * `startTime` (TEXT, Optional): New start time in RFC3339 format (e.g. '2025-03-15T09:00:00+01:00') * `calendarId` (TEXT, Required): The id of the calendar (e.g. 'primary' for the main calendar) * `timeZone` (TEXT, Optional): New time zone (e.g. 'America/New\_York') * `eventTitle` (TEXT, Optional): New title of the event (optional) * `attendees` (TEXT, Optional): New list of attendees email adresses (optional) * `description` (TEXT, Optional): New description of the event (optional) * `location` (TEXT, Optional): New location of the event (optional) * `sendUpdates` (TEXT, Optional): New policy on whether to send notifications ('all', 'externalOnly', 'none') (optional) * `recurrence` (TEXT, Optional): New list of RRULE, EXRULE, RDATE and EXDATE lines for a recurring event, as specified in RFC5545. Note that DTSTART and DTEND lines are not allowed. The separator between rules is an empty space. * `eventType` (TEXT, Optional): The type of event to update. Allowed values: default, focusTime, outOfOffice, workingLocation, etc. See Google Calendar API docs for full list. Provide as comma separated list. **Output:** Returns the updated event with its new details *** ### Get Event ##### `googlecalendar.getEvent` Gets an event **Requires Confirmation:** No **Parameters:** * `eventId` (TEXT, Required): The id of the specific event to retrieve * `calendarId` (TEXT, Required): The id of the calendar (can use 'primary' for the user's primary calendar) **Output:** Returns the event details including all properties and metadata *** ### Search for Events ##### `googlecalendar.searchforEvents` Gets calendar events by search query **Requires Confirmation:** No **Parameters:** * `maxResults` (TEXT, Optional): Maximum number of results to return (optional, default: 10) * `searchQuery` (TEXT, Optional): When using the search field for calendar events, input specific and relevant keywords that are likely to appear in the following fields: IMPORTANT DO NOT IGNORE: if asked to search things like an appointment, meeting, call, ... do not include this term into the search query as these are synonyms for event * Summary or Title: Include keywords that describe the event, such as "Project Meeting," "Quarterly Review," or "Team Lunch." * Description: Use terms related to the event's content or purpose, like "budget discussion" or "client presentation." * Location: Specify the name of the location or building where the event is held, such as "Conference Room A" or "Main Office." * Attendees: Include names or email addresses of specific attendees, e.g., "[john.doe@example.com](mailto:john.doe@example.com)" or "Jane Smith." * Organizer: Use the organizer's name or email to find events they are hosting, such as "[organizer@example.com](mailto:organizer@example.com)" or "Michael Johnson." * Working Location Properties: If applicable, use identifiers like office location labels or building IDs. * `endDate` (TEXT, Optional): End date of the time period searched for the search query. Upper bound (exclusive) for an event's start time to filter by. Optional. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If Start date is set, End date must be greater than Start date. * `calendarId` (TEXT, Required): The id of the calendar to search (use 'primary' for user's primary calendar) * `startDate` (TEXT, Optional): Start date of the time period searched for the search query. Lower bound (exclusive) for an event's end time to filter by. Optional. Must be an RFC3339 timestamp with mandatory time zone offset, for example, 2011-06-03T10:00:00-07:00, 2011-06-03T10:00:00Z. Milliseconds may be provided but are ignored. If End date is set, Start date must be smaller than End date. * `desc` (BOOLEAN, Optional): Select if the results be ordered in descending order (start time). * `eventType` (TEXT, Optional): The type of event to filter for. Allowed values: default, focusTime, outOfOffice, workingLocation, etc. See Google Calendar API docs for full list. Provide only one single event type. **Output:** Returns an array of events matching the search criteria *** ### Delete Event ##### `googlecalendar.deleteEvent` Deletes an event **Requires Confirmation:** Yes **Parameters:** * `eventId` (TEXT, Required): id of the event that will be deleted. For event series note that if you provide an event instance id, it will delete just that instance, and if you provide a recurring event's master id, it will delete the entire series. For an event instance id of a reoccuring event like 7hagg0gtspd2b03lm8i3g4irr0\_20250318T160000Z, the part until the first \_ is the events's master id. * `calendarId` (TEXT, Required): The id of the calendar (e.g. 'primary' for the main calendar) **Output:** Returns confirmation of the deletion *** ### List Calendars ##### `googlecalendar.listCalendars` Lists all calendars accessible to the authenticated user using the Google Calendar API /users/me/calendarList endpoint. **Requires Confirmation:** No **Parameters:** * `maxResults` (TEXT, Optional): Maximum number of entries to return in one result page (default: 100, max: 250). * `minAccessRole` (SELECT, Optional): Restricts results to calendars where the user has at least this access role. Allowed values: freeBusyReader, reader, writer, owner. * `pageToken` (TEXT, Optional): Token specifying which result page to return (for pagination). * `showDeleted` (BOOLEAN, Optional): Whether to include deleted calendar list entries in the result (default: false). * `showHidden` (BOOLEAN, Optional): Whether to show hidden entries (default: false). * `syncToken` (TEXT, Optional): For incremental sync, only return entries changed since the previous request with this token. Cannot be used with minAccessRole. **Output:** Returns an array of calendars with the following structure: * `id`: Calendar ID * `summary`: Calendar name * `description`: Calendar description * `timeZone`: Calendar time zone * `accessRole`: User's access role for this calendar * `backgroundColor`: Calendar color * `foregroundColor`: Text color for this calendar * `selected`: Whether this calendar is selected * `primary`: Whether this is the user's primary calendar *** ### Get Free/Busy for Calendar ##### `googlecalendar.getFreeBusyforCalendar` Retrieves free/busy information for one or more calendars over a specified time range using the Google Calendar API /freeBusy endpoint. **Requires Confirmation:** No **Parameters:** * `timeMin` (TEXT, Required): RFC3339 timestamp for the start of the time range to check (inclusive). Example: 2025-05-15T08:00:00Z * `timeMax` (TEXT, Required): RFC3339 timestamp for the end of the time range to check (exclusive). Example: 2025-05-15T18:00:00Z * `timeZone` (TEXT, Optional): Time zone for the response (optional, defaults to UTC). Example: Europe/Berlin * `items` (TEXT, Required): List of calendar IDs to check (e.g., emails, resource IDs, or 'primary'). Enter as a comma-separated list. **Output:** Returns free/busy information with the following structure: * `kind`: API resource type * `timeMin`: Start of the queried range * `timeMax`: End of the queried range * `calendars`: Object containing free/busy information for each requested calendar * `busy`: Array of time ranges when the calendar is busy * `errors`: Any errors encountered for this calendar #### Triggers *** ### New Event ##### `googlecalendar.newEvent` Triggers when new calendar events are created in specified calendars **Requires Confirmation:** No **Parameters:** * `calendarId` (TEXT, Optional): ID of the calendar to monitor for new events. Identifies which specific calendar to check for new events * `daysToInclude` (TEXT, Optional): Number of days in the future to look for events. Default is 30 days **Output:** Returns information about newly created events *** ### Event Start ##### `googlecalendar.eventStart` Triggers when events are about to start within a specified time window **Requires Confirmation:** No **Parameters:** * `calendarId` (TEXT, Optional): ID of the calendar to monitor. Defaults to your primary calendar if not specified * `minuteBefore` (TEXT, Required): Number of minutes before an event starts to trigger the workflow. Default is 15 minutes **Output:** Returns information about upcoming events *** ### New Event Matching Search ##### `googlecalendar.newEventMatchingSearch` Triggers when new calendar events matching the specified search query are created **Requires Confirmation:** No **Parameters:** * `calendarId` (TEXT, Optional): ID of the calendar to monitor for new events. Identifies which specific calendar to check for new events * `daysToInclude` (NUMBER, Optional): Number of days in the future to look for events. Default is 30 days * `searchQuery` (TEXT, Required): Text to search for in event subjects. Examples: 'Meeting', 'Review', 'Project kickoff' **Output:** Returns information about events matching the search criteria *** ## Common Use Cases Manage and organize your Google Calendar data Automate workflows with Google Calendar Generate insights and reports Connect Google Calendar with other tools ## Best Practices **Getting Started:** 1. Enable the Google Calendar integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Google Calendar integration, contact [support@langdock.com](mailto:support@langdock.com) # Google Docs Source: https://docs.langdock.com/administration/integrations/google-docs Integration for Google Docs ## Overview Integration for Google Docs. Through Langdock's integration, you can access and manage Google Docs directly from your conversations. **Authentication:** OAuth **Category:** Google Workspace **Availability:** All workspace plans ## Available Actions ### Get Document ##### `googledocs.getDocument` Retrieve Google Docs content with flexible options **Requires Confirmation:** No **Parameters:** * `documentId` (TEXT, Required): The ID of the Google Doc to retrieve. This is the string of characters in the URL after 'document/d/' when viewing the document * `extractPlainTextOnly` (BOOLEAN, Optional): When true, returns only the plain text content of the document without formatting * `metadataOnly` (BOOLEAN, Optional): When true, returns only the document metadata without the full content * `includeTabsContent` (BOOLEAN, Optional): When true, returns document with tabs structure populated. When false or unspecified, returns content from the first tab only **Output:** Returns document content with the following structure: * `documentId`: Document ID * `title`: Document title * `body`: Document body content (if not metadata only) * `plainText`: Plain text content (if extractPlainTextOnly is true) * `viewUrl`: URL to view the document in Google Docs * `retrievedAt`: Timestamp when the document was retrieved * `hasMultipleTabs`: Whether the document has multiple tabs (if includeTabsContent is true) * `tabs`: Array of tab objects (if includeTabsContent is true) * `metadata`: Document metadata including creation time, modification time, owners, etc. *** ### Search File ##### `googledocs.searchFile` Search for Google Docs documents in your Google Drive using flexible filters such as document name, owner, modification date, folder, and sharing status **Requires Confirmation:** No **Parameters:** * `nameContains` (TEXT, Optional): Only return documents whose name contains this text. Partial and case-insensitive matches are allowed * `owner` (TEXT, Optional): Only return documents owned by this email address. Leave blank to include documents from any owner * `modifiedAfter` (TEXT, Optional): Only return documents modified after this date (inclusive). Use ISO format (e.g., 2024-05-01) * `modifiedBefore` (TEXT, Optional): Only return documents modified before this date (exclusive). Use ISO format (e.g., 2024-06-01) * `folder` (TEXT, Optional): Only return documents located in this folder. Provide the folder ID. Leave blank for all folders * `maximumResults` (TEXT, Optional): The maximum number of documents to return. Leave blank to use the default (5000). The maximum allowed is 10,000 **Output:** Returns an array of document search results with the following structure: * `id`: Document ID * `name`: Document name * `mimeType`: Document MIME type * `createdTime`: Creation timestamp * `modifiedTime`: Last modification timestamp * `owners`: Array of owner information * `webViewLink`: Link to view the document * `size`: File size in bytes * `description`: Document description * `properties`: Custom properties * `appProperties`: Application-specific properties *** ### Update Document ##### `googledocs.updateDocument` Update a Google Docs document **Requires Confirmation:** No **Parameters:** * `documentId` (TEXT, Required): The ID of the Google Doc to update. This is the string of characters in the URL after 'document/d/' when viewing the document, you can also retrieve it via the search file tool * `markdownText` (MULTI\_LINE\_TEXT, Optional): Optional raw Markdown to append and convert to native Google Docs formatting (supports headings #..######, lists -, \*, 1., and bold **text**). * `tab_id` (TEXT, Optional): Optional: ID of the tab to target. If omitted, defaults to first tab. * `tab_title` (TEXT, Optional): Optional: Title of the tab to target (used if Tab ID is not provided). * `anchor_text` (TEXT, Optional): Optional: Insert content immediately after the paragraph that contains this text in the selected tab. If not provided, content is appended to the end of the tab. * `anchor_match_case` (BOOLEAN, Optional): Optional: When true, the anchor text match is case-sensitive. * `actions` (OBJECT, Optional): Available Actions: Text Operations Inserting Text You can insert text into a document in two ways. The first approach uses a specific index position where you know content already exists. Provide the exact character index and the text string you want to insert. For example, inserting at index 5 would place your text after the fifth character in the document. The second and safer approach is to append text at the end of the current segment using the endOfSegmentLocation parameter along with your text string. This prevents index-related errors when you're not certain about the document's structure. Replacing Text To find and replace text throughout the document, you need to specify what to find (the containsText parameter) and what to replace it with (the replaceText parameter). Within the containsText object, you must provide the text string to search for, and you can optionally set matchCase to true if you want case-sensitive replacement. This operation affects all matching occurrences throughout the document. Deleting Content To remove content from a document, you must define a range with both startIndex and endIndex parameters. The operation will delete all content starting from the character at startIndex up to (but not including) the character at endIndex. Both indices must refer to existing content in the document. Formatting Operations Styling Text Text styling requires three key components: a range (with startIndex and endIndex identifying the text to format), a textStyle object containing the style properties you want to change, and a fields parameter listing which specific style properties to update. For example, you might specify bold, fontSize, or foregroundColor. Only the properties listed in the fields parameter will be changed, allowing for targeted formatting. Styling Paragraphs Similar to text styling, paragraph formatting requires a range that encompasses the paragraphs to format, a paragraphStyle object with properties like alignment or indentation, and a fields parameter listing which paragraph style properties to update. The range must refer to entire paragraphs, not partial text within paragraphs. Document-Wide Styling For document-level formatting, you need a documentStyle object containing the properties you want to change, such as background color or page size, and a fields parameter listing which document properties to update. For background color specifically, you must use a nested structure defining the RGB color values. This operation affects the entire document's appearance. List Operations Creating Bullet or Numbered Lists To convert existing paragraphs into a list, you need a range (with startIndex and endIndex) that covers all paragraphs you want to include, and a bulletPreset parameter defining the list style. Available presets include disc/circle/square bullets, checkbox bullets, decimal/alphabetical/Roman numeral numbering, and various combinations with different nesting styles. The range must include only complete paragraphs, and text should be inserted before applying list formatting. Removing List Formatting To convert bulleted or numbered paragraphs back to regular paragraphs, specify a range (with startIndex and endIndex) covering the list items you want to modify. This operation removes all bullet or numbering formatting while preserving the paragraph text and other formatting. Structural Elements Creating Tables To insert a table, you need to specify the number of rows and columns (both must be at least 1) and the endOfSegmentLocation where the table should be placed. After creating a table, you should retrieve the document structure to get the indices for individual cells before attempting to add content or styling to those cells. Inserting Table Rows To insert a new row in a table, specify a tableCellLocation with the table's start index and the row/column indices of a reference cell. Use insertBelow to control whether the row is inserted above or below the reference cell. Inserting Table Columns To insert a new column in a table, specify a tableCellLocation with the table's start index and the row/column indices of a reference cell. Use insertRight to control whether the column is inserted to the left or right of the reference cell. Deleting Table Rows To delete rows from a table, provide the tableRowIndex (0-based index of the row to delete) and the tableStartLocation with the index of where the table begins in the document. Deleting Table Columns To delete columns from a table, provide the tableColumnIndex (0-based index of the column to delete) and the tableStartLocation with the index of where the table begins in the document. Inserting Images Image insertion requires a location index where the image should appear, a URI pointing to the image source, and an objectSize parameter with width and height dimensions. The dimensions should include both magnitude (numerical value) and unit (such as "pt" for points). Images can be inserted at any valid index within the document. Adding Page Breaks To insert a page break, simply specify a location index where the break should occur. The index must refer to a valid position within existing document content, typically at the end of a paragraph. Creating Headers To add a header to your document, specify the type as either "DEFAULT" (appearing on most pages), "FIRST\_PAGE" (only on the first page), or "EVEN\_PAGE" (only on even-numbered pages). After creating a header, you'll need to retrieve the document to get the header's ID before you can add content to it. Creating Footers Footer creation works identically to headers. Specify the type as "DEFAULT", "FIRST\_PAGE", or "EVEN\_PAGE" to determine where the footer appears. As with headers, you'll need to retrieve the document after creation to get the footer's ID for adding content. Adding Footnotes To insert a footnote, provide a location index where the footnote reference should appear in the main text. The footnote will be created with empty content, which you can populate in a subsequent operation after retrieving the document structure. Reference Operations Creating Named Ranges A named range allows you to mark a section of text for easy reference later. You need to provide a descriptive name for the range and the startIndex and endIndex parameters that define the range boundaries. After creating a named range, you'll need to retrieve the document to get the generated range ID for future operations targeting that range. Each of these operations can be combined in a batch update request to efficiently make multiple changes to a document in a single API call. However, some operations have dependencies - for example, you should insert text before formatting it, create tables before adding content to cells, and create headers or footers before populating them with text. **Output:** Returns confirmation of the document update *** ## Common Use Cases Manage and organize your Google Docs data Automate workflows with Google Docs Generate insights and reports Connect Google Docs with other tools ## Best Practices **Getting Started:** 1. Enable the Google Docs integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** - Ensure proper authentication credentials - Respect rate limits and API quotas - Review data privacy settings - Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Google Docs integration, contact [support@langdock.com](mailto:support@langdock.com) # Google Drive Source: https://docs.langdock.com/administration/integrations/google-drive Cloud storage service for file backup, sharing, and collaboration ## Overview Cloud storage service for file backup, sharing, and collaboration. Through Langdock's integration, you can access and manage Google Drive directly from your conversations. **Authentication:** OAuth\ **Category:** Google Workspace\ **Availability:** All workspace plans ## Available Actions ### Download File ##### `googledrive.downloadFile` Downloads the contents of a file from Google Drive based on its file id **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): The unique identifier of the file you want to download from Google Drive **Output:** Returns the file content as a downloadable file *** ### Get Current User ##### `googledrive.getCurrentUser` Retrieves information about the currently logged-in Google Drive user **Requires Confirmation:** No **Parameters:** None **Output:** Returns user information including: * `id`: User ID * `email`: User email address * `name`: User display name * `picture`: User profile picture URL * `verified_email`: Whether the email is verified *** ### Search Files ##### `googledrive.searchFiles` Searches through files in your Google Drive using simple text queries **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): A query string for filtering the file results. If no query string is passed, it returns the most recent files. This searches through the full text and the titles of the files **Output:** Returns an array of files matching the search criteria *** ### Get Folder ##### `googledrive.getFolder` Searches for folders in Google Drive by name **Requires Confirmation:** No **Parameters:** * `folderName` (TEXT, Required): Search term used to find folders that contain this text in their names. For example, you can search for 'Projects', 'Marketing', or 'Documents' to find folders with those terms in their names **Output:** Returns an array of folders with the following structure: * `id`: Folder ID * `name`: Folder name * `mimeType`: Folder MIME type (application/vnd.google-apps.folder) * `parents`: Array of parent folder IDs * `createdTime`: Creation timestamp * `modifiedTime`: Last modification timestamp * `webViewLink`: Link to view the folder in Google Drive *** ### Search Files (Advanced) ##### `googledrive.searchFilesAdvanced` Searches through the available files in your Google Drive with advanced filtering options **Requires Confirmation:** No **Parameters:** * `pageToken` (TEXT, Optional): The token for continuing a previous list request on the next page. This should be set to the value of 'nextPageToken' from the previous response * `query` (TEXT, Optional): A query string for filtering the file results. If user asks to get recent files without a specific search query, leave this field empty. * `orderBy` (TEXT, Optional): A comma-separated list of sort keys. Valid keys are: createdTime: When the file was created. folder: The folder ID. This field is sorted using alphabetical ordering. modifiedByMeTime: The last time the file was modified by the user. modifiedTime: The last time the file was modified by anyone. name: The name of the file. This field is sorted using alphabetical ordering, so 1, 12, 2, 22. name\_natural: The name of the file. This field is sorted using natural sort ordering, so 1, 2, 12, 22. quotaBytesUsed: The number of storage quota bytes used by the file. recency: The most recent timestamp from the file's date-time fields. sharedWithMeTime: When the file was shared with the user, if applicable. starred: Whether the user has starred the file. viewedByMeTime: The last time the file was viewed by the user. Each key sorts ascending by default, but can be reversed with the 'desc' modifier. Example usage: folder,modifiedTime desc,name * `folderId` (TEXT, Optional): Unique identifier of the folder in which you want to search. **Output:** Returns search results with the following structure: * `files`: Array of file objects containing: * `id`: File ID * `name`: File name * `mimeType`: File MIME type * `createdTime`: Creation timestamp * `modifiedTime`: Last modification timestamp * `size`: File size in bytes * `webViewLink`: Link to view the file * `owners`: Array of owner information * `parents`: Array of parent folder IDs * `nextPageToken`: Token for pagination (if more results available) *** ### Download Google Drive File ##### `googledrive.downloadGoogleDriveFile` Downloads the contents of a file from Google Drive based on its file id **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): The unique identifier of the file you want to download from Google Drive. **Output:** Returns the file content as a downloadable file *** ### List Files in Folder ##### `googledrive.listFilesinFolder` Lists all files in a Google Drive folder including subfolders, limited to the first 200 files **Requires Confirmation:** No **Parameters:** * `folderId` (TEXT, Required): The unique identifier of the Google Drive folder to list files from. This will include files from the folder and all its subfolders **Output:** Returns an array of files in the folder with their details *** ### Upload File ##### `googledrive.uploadFile` Upload a file to Google Drive with optional folder destination **Requires Confirmation:** No **Parameters:** * `file` (FILE, Required): The file to upload to Google Drive * `folderId` (TEXT, Optional): The ID of the folder where you want to upload the file. If not provided, the file will be uploaded to the root of your Google Drive * `fileName` (TEXT, Optional): Optional custom name for the file. If not provided, the original filename will be used **Output:** Returns the uploaded file information including: * `id`: File ID * `name`: File name * `mimeType`: File MIME type * `size`: File size in bytes * `webViewLink`: Link to view the file * `createdTime`: Upload timestamp #### Triggers *** ### New File ##### `googledrive.newFile` Triggers when new files are added to Google Drive **Requires Confirmation:** No **Parameters:** * `folderIds` (TEXT, Optional): Comma-separated list of folder IDs to monitor for new files **Output:** Returns information about newly added files *** ### Updated File ##### `googledrive.updatedFile` Triggers when files are updated in Google Drive **Requires Confirmation:** No **Parameters:** * `fileIds` (TEXT, Optional): Comma-separated list of file IDs to monitor for updates * `folderIds` (TEXT, Optional): Comma-separated list of folder IDs to monitor for updates **Output:** Returns information about updated files *** ### New Folder ##### `googledrive.newFolder` Triggers when new folders are added to Google Drive **Requires Confirmation:** No **Parameters:** * `parentFolderId` (TEXT, Optional): Comma-separated list of parent folder IDs to monitor for new folders **Output:** Returns information about newly created folders *** ## Common Use Cases Manage and organize your Google Drive data Automate workflows with Google Drive Generate insights and reports Connect Google Drive with other tools ## Best Practices **Getting Started:** 1. Enable the Google Drive integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Google Drive integration, contact [support@langdock.com](mailto:support@langdock.com) # Google Meet Source: https://docs.langdock.com/administration/integrations/google-meet Real-time meetings by Google ## Overview Real-time meetings by Google. Through Langdock's integration, you can access and manage Google Meet directly from your conversations. **Authentication:** OAuth\ **Category:** Google Workspace\ **Availability:** All workspace plans ## Available Actions ### Get Meeting Details ##### `googlemeet.getMeetingDetails` Gets the details of a meeting from the event ID **Requires Confirmation:** No **Parameters:** * `eventId` (TEXT, Required): The event id of the meeting **Output:** Returns meeting details with the following structure: * `conferenceRecords`: Array of conference record objects containing: * `name`: Conference record name * `startTime`: Meeting start time * `endTime`: Meeting end time * `space`: Space information including meeting code * `activeParticipantCount`: Number of active participants * `maxParticipantCount`: Maximum number of participants * `recordedDuration`: Duration of recording if available * `state`: Conference state (active, ended, etc.) *** ### Get Meeting Transcription ##### `googlemeet.getMeetingTranscription` Gets the available transcripts of a meeting **Requires Confirmation:** No **Parameters:** * `conferenceRecordId` (TEXT, Required): The conference record id of the meeting **Output:** Returns meeting transcription information including: * `transcriptDocuments`: Array of transcript documents containing: * `name`: Transcript document name * `driveFile`: Drive file information for the transcript * `exportUri`: Export URI for the transcript * `state`: Transcript state (active, completed, etc.) * `createTime`: Creation timestamp * `endTime`: End timestamp *** ### Create Rows ##### `googlemeet.createRows` Creates new rows in a specific spreadsheet **Requires Confirmation:** Yes **Parameters:** * `amount` (NUMBER, Required): Amount of rows to be inserted starting at index * `startIndex` (TEXT, Optional): Default: 0 * `sheetId` (NUMBER, Required): ID of the sheet (numeric). Default: 0 (first sheet) * `spreadsheetId` (TEXT, Required): ID of the spreadsheet **Output:** Returns batch update response with details about the inserted rows *** ### Update Spreadsheet Rows ##### `googlemeet.updateSpreadsheetRows` Updates rows in a specific spreadsheet **Requires Confirmation:** Yes **Parameters:** * `spreadsheetId` (TEXT, Required): ID of the spreadsheet * `range` (TEXT, Optional): A1 Notation to define range and sheet in which values can be inserted into rows. Default = entire Sheet1 * `valueInput` (MULTI\_LINE\_TEXT, Required): Values that should be inserted in the specific rows. Please use CSV Notation **Output:** Returns update response with details about the modified rows *** ### Append Rows to Spreadsheet ##### `googlemeet.appendRowstoSpreadsheet` Appends new rows to the end of a spreadsheet, automatically finding the last row with data **Requires Confirmation:** Yes **Parameters:** * `spreadsheetId` (TEXT, Required): ID of the spreadsheet * `range` (TEXT, Optional): A1 Notation to define the range to search for a table of data. Default: Sheet1 (entire sheet) * `valueInput` (MULTI\_LINE\_TEXT, Required): Values that should be appended to the spreadsheet. Please use CSV Notation **Output:** Returns append response with details about the added rows *** ### List Spreadsheet Row ##### `googlemeet.listSpreadsheetRow` Lists a specific spreadsheet row based on the row number **Requires Confirmation:** No **Parameters:** * `rowNumber` (NUMBER, Required): The row that should be returned. Indexing starts at 1 * `sheetName` (TEXT, Optional): Name of the sheet (tab/page) in the spreadsheet. Default: Sheet1 * `spreadsheetId` (TEXT, Required): ID of the spreadsheet **Output:** Returns the specified row data with all cell values *** ### List Spreadsheet Row Range ##### `googlemeet.listSpreadsheetRowRange` Lists multiple spreadsheet rows based on a range **Requires Confirmation:** No **Parameters:** * `sheetAndRange` (TEXT, Optional): A1 / R1C1 notation of the referenced sheet and range. Default: Sheet1, entire sheet * `spreadsheetId` (TEXT, Required): The ID of the spreadsheet that should be edited **Output:** Returns array of rows with cell values in the specified range *** ### Clear Spreadsheet Rows ##### `googlemeet.clearSpreadsheetRows` Clears the content of the selected rows while keeping the rows intact in the workspace **Requires Confirmation:** Yes **Parameters:** * `spreadsheetId` (TEXT, Required): ID of the spreadsheet * `sheetAndRange` (TEXT, Optional): A1 / R1C1 notation of the referenced sheet and range. Default: Sheet1, entire sheet **Output:** Returns clear response with details about the cleared range *** ### Get Spreadsheet Metadata ##### `googlemeet.getSpreadsheetMetadata` Retrieves essential spreadsheet metadata including title, locale, timezone, and sheet properties **Requires Confirmation:** No **Parameters:** * `spreadsheetId` (TEXT, Required): ID of the spreadsheet to get metadata for **Output:** Returns spreadsheet metadata including title, locale, timezone, and sheet properties (IDs, names, dimensions) *** ### Delete Spreadsheet Rows ##### `googlemeet.deleteSpreadsheetRows` Deletes a range of rows in a specific spreadsheet **Requires Confirmation:** Yes **Parameters:** * `rowRangeEndIndex` (NUMBER, Required): End index of row range that should be deleted. Row indexing starts at 0 * `spreadsheetId` (TEXT, Required): ID of the spreadsheet * `sheetId` (NUMBER, Required): ID of the sheet where the rows should be deleted * `rowRangeStartIndex` (NUMBER, Required): Start index of row range that should be deleted. Row indexing starts at 0 **Output:** Returns delete response with details about the removed rows *** ## Common Use Cases Manage and organize your Google Meet data Automate workflows with Google Meet Generate insights and reports Connect Google Meet with other tools ## Best Practices **Getting Started:** 1. Enable the Google Meet integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Google Meet integration, contact [support@langdock.com](mailto:support@langdock.com) # Google Sheets Source: https://docs.langdock.com/administration/integrations/google-sheets Manage and analyze data in Google's spreadsheets solution ## Overview Manage and analyze data in Google's spreadsheets solution. Through Langdock's integration, you can access and manage Google Sheets directly from your conversations. **Authentication:** OAuth\ **Category:** Google Workspace\ **Availability:** All workspace plans ## Available Actions ### Create Rows ##### `googlesheets.createRows` Creates new rows in a specific spreadsheet **Requires Confirmation:** Yes **Parameters:** * `amount` (NUMBER, Required): Amount of rows to be inserted starting at index * `startIndex` (TEXT, Optional): Default: 0 * `sheetId` (NUMBER, Required): ID of the sheet (numeric). Default: 0 (first sheet) * `spreadsheetId` (TEXT, Required): ID of the spreadsheet **Output:** Returns batch update response with details about the inserted rows *** ### Update Spreadsheet Rows ##### `googlesheets.updateSpreadsheetRows` Updates rows in a specific spreadsheet **Requires Confirmation:** Yes **Parameters:** * `spreadsheetId` (TEXT, Required): ID of the spreadsheet * `range` (TEXT, Optional): A1 Notation to define range and sheet in which values can be inserted into rows. Default = entire Sheet1 * `valueInput` (MULTI\_LINE\_TEXT, Required): Values that should be inserted in the specific rows. Please use CSV Notation **Output:** Returns update response with details about the modified rows *** ### Append Rows to Spreadsheet ##### `googlesheets.appendRowstoSpreadsheet` Appends new rows to the end of a spreadsheet, automatically finding the last row with data **Requires Confirmation:** Yes **Parameters:** * `spreadsheetId` (TEXT, Required): ID of the spreadsheet * `range` (TEXT, Optional): A1 Notation to define the range to search for a table of data. Default: Sheet1 (entire sheet) * `valueInput` (MULTI\_LINE\_TEXT, Required): Values that should be appended to the spreadsheet. Please use CSV Notation **Output:** Returns append response with details about the added rows *** ### List Spreadsheet Row ##### `googlesheets.listSpreadsheetRow` Lists a specific spreadsheet row based on the row number **Requires Confirmation:** No **Parameters:** * `rowNumber` (NUMBER, Required): The row that should be returned. Indexing starts at 1 * `sheetName` (TEXT, Optional): Name of the sheet (tab/page) in the spreadsheet. Default: Sheet1 * `spreadsheetId` (TEXT, Required): ID of the spreadsheet **Output:** Returns the specified row data with all cell values *** ### List Spreadsheet Row Range ##### `googlesheets.listSpreadsheetRowRange` Lists multiple spreadsheet rows based on a range **Requires Confirmation:** No **Parameters:** * `sheetAndRange` (TEXT, Optional): A1 / R1C1 notation of the referenced sheet and range. Default: Sheet1, entire sheet * `spreadsheetId` (TEXT, Required): The ID of the spreadsheet that should be edited **Output:** Returns array of rows with cell values in the specified range *** ### Clear Spreadsheet Rows ##### `googlesheets.clearSpreadsheetRows` Clears the content of the selected rows while keeping the rows intact in the workspace **Requires Confirmation:** Yes **Parameters:** * `spreadsheetId` (TEXT, Required): ID of the spreadsheet * `sheetAndRange` (TEXT, Optional): A1 / R1C1 notation of the referenced sheet and range. Default: Sheet1, entire sheet **Output:** Returns clear response with details about the cleared range *** ### Get Spreadsheet Metadata ##### `googlesheets.getSpreadsheetMetadata` Retrieves essential spreadsheet metadata including title, locale, timezone, and sheet properties **Requires Confirmation:** No **Parameters:** * `spreadsheetId` (TEXT, Required): ID of the spreadsheet to get metadata for **Output:** Returns spreadsheet metadata including title, locale, timezone, and sheet properties (IDs, names, dimensions) *** ### Delete Spreadsheet Rows ##### `googlesheets.deleteSpreadsheetRows` Deletes a range of rows in a specific spreadsheet **Requires Confirmation:** Yes **Parameters:** * `rowRangeEndIndex` (NUMBER, Required): End index of row range that should be deleted. Row indexing starts at 0 * `spreadsheetId` (TEXT, Required): ID of the spreadsheet * `sheetId` (NUMBER, Required): ID of the sheet where the rows should be deleted * `rowRangeStartIndex` (NUMBER, Required): Start index of row range that should be deleted. Row indexing starts at 0 **Output:** Returns delete response with details about the removed rows *** ## Common Use Cases Manage and organize your Google Sheets data Automate workflows with Google Sheets Generate insights and reports Connect Google Sheets with other tools ## Best Practices **Getting Started:** 1. Enable the Google Sheets integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Google Sheets integration, contact [support@langdock.com](mailto:support@langdock.com) # Google Tasks Source: https://docs.langdock.com/administration/integrations/google-tasks Google Tasks lets you manage your to-do lists and tasks across all your devices ## Overview Google Tasks lets you manage your to-do lists and tasks across all your devices. Through Langdock's integration, you can access and manage Google Tasks directly from your conversations. **Authentication:** OAuth\ **Category:** Google Workspace\ **Availability:** All workspace plans ## Available Actions ### List Task Lists ##### `googletasks.listTaskLists` Get all task lists for the authenticated user **Requires Confirmation:** No **Parameters:** * `maxResults` (NUMBER, Optional): Maximum number of task lists to return (optional, default 100) **Output:** Returns array of task lists with their IDs, titles, and metadata *** ### Create Task List ##### `googletasks.createTaskList` Create a new task list **Requires Confirmation:** No **Parameters:** * `title` (TEXT, Required): The title of the task list **Output:** Returns the created task list with ID and title *** ### Get Task List ##### `googletasks.getTaskList` Get details of a specific task list **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list **Output:** Returns task list details including ID, title, and metadata *** ### Update Task List ##### `googletasks.updateTaskList` Update the title of a task list **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list to update * `title` (TEXT, Required): The new title for the task list **Output:** Returns the updated task list with new title *** ### Delete Task List ##### `googletasks.deleteTaskList` Delete a task list and all its tasks **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list to delete **Output:** Returns confirmation of deletion *** ### List Tasks ##### `googletasks.listTasks` Get all tasks from a specific task list **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list * `showCompleted` (SELECT, Optional): Whether to include completed tasks (No/Yes) * `showHidden` (SELECT, Optional): Whether to include hidden tasks (No/Yes) * `maxResults` (NUMBER, Optional): Maximum number of tasks to return (optional, default 100) **Output:** Returns array of tasks with their details including ID, title, status, due date, and notes *** ### Create Task ##### `googletasks.createTask` Create a new task in a specific task list **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list * `title` (TEXT, Required): The title of the task * `notes` (TEXT, Optional): Additional details about the task * `due` (TEXT, Optional): Due date in RFC3339 format (e.g. '2025-12-31T23:59:59Z') * `parent` (TEXT, Optional): ID of the parent task to create a subtask **Output:** Returns the created task with ID, title, and all specified details *** ### Get Task ##### `googletasks.getTask` Get details of a specific task **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list * `taskId` (TEXT, Required): The unique identifier of the task **Output:** Returns task details including ID, title, status, due date, notes, and parent information *** ### Update Task ##### `googletasks.updateTask` Update an existing task **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list * `taskId` (TEXT, Required): The unique identifier of the task to update * `title` (TEXT, Optional): The new title of the task * `notes` (TEXT, Optional): Updated notes for the task * `status` (TEXT, Optional): Task status: 'needsAction' or 'completed' * `due` (TEXT, Optional): Due date in RFC3339 format **Output:** Returns the updated task with new values *** ### Delete Task ##### `googletasks.deleteTask` Delete a specific task **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list * `taskId` (TEXT, Required): The unique identifier of the task to delete **Output:** Returns confirmation of deletion *** ### Move Task ##### `googletasks.moveTask` Move a task to a different position or create subtasks by setting a parent task **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list * `taskId` (TEXT, Required): The unique identifier of the task to move * `parent` (TEXT, Optional): ID of the parent task to make this a subtask * `previous` (TEXT, Optional): ID of the task that should come before this task **Output:** Returns the moved task with updated position information *** ### Clear Completed Tasks ##### `googletasks.clearCompletedTasks` Clear all completed tasks from a task list **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list **Output:** Returns confirmation of cleared tasks *** ### Delete Completed Tasks ##### `googletasks.deleteCompletedTasks` Permanently delete all completed tasks from a task list **Requires Confirmation:** No **Parameters:** * `taskListId` (TEXT, Required): The unique identifier of the task list **Output:** Returns confirmation of deleted tasks *** ## Common Use Cases Manage and organize your Google Tasks data Automate workflows with Google Tasks Generate insights and reports Connect Google Tasks with other tools ## Best Practices **Getting Started:** 1. Enable the Google Tasks integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Google Tasks integration, contact [support@langdock.com](mailto:support@langdock.com) # HubSpot Source: https://docs.langdock.com/administration/integrations/hubspot All-in-one platform that integrates marketing, sales, and customer service software ## Overview All-in-one platform that integrates marketing, sales, and customer service software. Through Langdock's integration, you can access and manage HubSpot directly from your conversations. **Authentication:** OAuth\ **Category:** CRM & Customer Support\ **Availability:** All workspace plans ## Available Actions ### Create Contact ##### `hubspot.createContact` Creates a new contact in HubSpot **Requires Confirmation:** Yes **Parameters:** * `additionalProperties` (TEXT, Optional): Any custom properties specific to your HubSpot account * `firstName` (TEXT, Optional): The contact's first name * `company` (TEXT, Optional): The name of the company the contact works for * `zip` (TEXT, Optional): ZIP-Code of the contact * `jobtitle` (TEXT, Optional): The contact's job title * `address` (TEXT, Optional): Address of the contact * `country` (TEXT, Optional): Country of the contact * `website` (TEXT, Optional): Link to a personal profile of the contact or of the company * `leadStatus` (TEXT, Optional): The current status of a lead in the sales pipeline * `email` (TEXT, Required): The contact's email address * `lastName` (TEXT, Optional): The contact's last name * `owner` (TEXT, Optional): HubSpot owner ID of the responsible person for that contact * `phone` (TEXT, Optional): The contact's phone number * `lifecycleStage` (TEXT, Optional): The lifecycle stage of a contact or company * `state` (TEXT, Optional): State of the contact (within their country) * `leadSource` (TEXT, Optional): The source from which the lead originated in HubSpot * `associations` (TEXT, Optional): Links between this contact and other HubSpot objects **Output:** Returns the created contact with ID and all specified properties *** ### Create Company ##### `hubspot.createCompany` Creates a new company in HubSpot **Requires Confirmation:** Yes **Parameters:** * `associations` (TEXT, Optional): Associations to other objects (contacts, meeting, notes, deals etc.) * `city` (TEXT, Optional): The city where the company's primary office or headquarters is located * `industry` (TEXT, Optional): The sector or industry the company operates in * `address` (TEXT, Optional): The street address of the company's primary location * `name` (TEXT, Required): Company name * `country` (TEXT, Optional): The country where the company is based * `domain` (TEXT, Optional): The company's website domain without protocol or paths * `additionalProperties` (TEXT, Optional): Any custom properties specific to your HubSpot account * `description` (TEXT, Optional): A brief overview of the company, its mission, products, or services * `ownerId` (TEXT, Optional): The HubSpot user ID of the person responsible for managing this company record * `website` (TEXT, Optional): The full URL of the company's website * `phone` (TEXT, Optional): The main contact phone number for the company * `state` (TEXT, Optional): The state, province, or region where the company is located **Output:** Returns the created company with ID and all specified properties *** ### Create Deal ##### `hubspot.createDeal` Creates a new deal in HubSpot **Requires Confirmation:** Yes **Parameters:** * `associatedObjects` (MULTI\_LINE\_TEXT, Optional): Associations to other objects (contacts, companies, etc.) * `closeDate` (TEXT, Optional): The expected close date of the deal (Format: ISO 8601) * `additionalProperties` (TEXT, Optional): Any additional custom properties you want to set * `stage` (TEXT, Optional): The stage of the deal in the pipeline * `dealOwner` (TEXT, Optional): User ID of the HubSpot user responsible for this deal * `amount` (NUMBER, Optional): The monetary value of the deal * `dealName` (TEXT, Required): The name of the deal/opportunity * `pipeline` (TEXT, Required): The pipeline the deal belongs to * `description` (TEXT, Optional): A description of the deal **Output:** Returns the created deal with ID and all specified properties *** ### Create Note ##### `hubspot.createNote` Creates a note that an object can be associated with **Requires Confirmation:** No **Parameters:** * `ownerId` (TEXT, Required): Owner ID of the HubSpot user creating the note * `noteBody` (TEXT, Required): Text for the note * `attachmentIds` (TEXT, Optional): If you want to put a single or multiple attachments onto the note * `associations` (TEXT, Required): A comma-separated list of object type and ID pairs **Output:** Returns the created note with ID and association details *** ### Update Contact ##### `hubspot.updateContact` Updates a contact in HubSpot **Requires Confirmation:** No **Parameters:** * `properties` (TEXT, Required): Properties to update on the HubSpot contact (JSON string) * `contactId` (TEXT, Required): ID of the contact that should be updated **Output:** Returns the updated contact with new property values *** ### Update Company ##### `hubspot.updateCompany` Updates a company in HubSpot **Requires Confirmation:** No **Parameters:** * `companyId` (TEXT, Optional): ID of the company that should be updated * `properties` (TEXT, Optional): The properties parameter expects a JSON object containing company property values to update **Output:** Returns the updated company with new property values *** ### Update Deal ##### `hubspot.updateDeal` Updates one or more fields from an existing deal **Requires Confirmation:** No **Parameters:** * `properties` (MULTI\_LINE\_TEXT, Required): Properties to update on the HubSpot deal (JSON string) * `dealId` (TEXT, Required): ID of the deal that should be updated **Output:** Returns the updated deal with new property values *** ### Get Contact ##### `hubspot.getContact` Gets a contact by its ID **Requires Confirmation:** No **Parameters:** * `contactId` (TEXT, Required): ID of the contact to get **Output:** Returns contact details including all properties and associations *** ### Get Contact Engagement ##### `hubspot.getContactEngagement` Retrieve engagement information like recent activities of a contact **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The ID of the object to retrieve engagement from **Output:** Returns engagement information including recent activities and interactions *** ### Get Company ##### `hubspot.getCompany` Gets a company by its ID **Requires Confirmation:** No **Parameters:** * `companyId` (TEXT, Required): ID of the company to get **Output:** Returns company details including all properties and associations *** ### Get Deal ##### `hubspot.getDeal` Gets a deal by its ID **Requires Confirmation:** No **Parameters:** * `dealId` (TEXT, Required): ID of the deal to get **Output:** Returns deal details including all properties and associations *** ### Get Deal Context ##### `hubspot.getDealContext` Gets all required information on the custom deal object, available pipelines, and more **Requires Confirmation:** No **Parameters:** None **Output:** Returns deal context information including available pipelines and custom properties *** ### Find Contact ##### `hubspot.findContact` Finds a contact by searching **Requires Confirmation:** No **Parameters:** * `limit` (TEXT, Optional): Maximum number of records to return in a single request * `properties` (TEXT, Optional): Specifies which contact properties to include in the response * `searchQuery` (TEXT, Optional): A text string for full-text search across all searchable properties * `filterGroups` (TEXT, Optional): Allows you to create complex filtering logic to narrow down contact search results * `sorts` (TEXT, Optional): Defines how results should be ordered **Output:** Returns array of contacts matching the search criteria *** ### Find Company ##### `hubspot.findCompany` Finds a company by searching **Requires Confirmation:** No **Parameters:** * `searchQuery` (TEXT, Optional): A text string for full-text search across all searchable properties * `properties` (TEXT, Optional): Specifies which company properties to include in the response * `sorts` (TEXT, Optional): Defines how company search results should be ordered * `limit` (NUMBER, Optional): Maximum number of records to return in a single request * `filterGroups` (TEXT, Optional): Allows you to create complex filtering logic to narrow down company search results **Output:** Returns array of companies matching the search criteria *** ### Find Deal ##### `hubspot.findDeal` Finds a deal by searching **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Maximum number of records to return in a single request * `searchQuery` (TEXT, Optional): A text string for full-text search across all searchable properties * `filterGroups` (TEXT, Optional): Allows you to create complex filtering logic to narrow down search results * `properties` (TEXT, Optional): Specifies which deal properties to include in the response * `sorts` (TEXT, Optional): Defines how results should be ordered **Output:** Returns array of deals matching the search criteria *** ### Get HubSpot Owners ##### `hubspot.getHubSpotOwners` Retrieves all HubSpot owners/users with optional filtering by email **Requires Confirmation:** No **Parameters:** * `email` (TEXT, Optional): Search for a specific owner by their email address * `limit` (NUMBER, Optional): Maximum number of owners to retrieve (default 100, maximum 500) * `includeInactive` (BOOLEAN, Optional): Whether to include archived/inactive owners in the results **Output:** Returns array of owners with their IDs, emails, and other details *** ### Get Current User Context ##### `hubspot.getCurrentUserContext` Gets the current user's email, hubspot\_owner\_id, and other important info **Requires Confirmation:** No **Parameters:** None **Output:** Returns current user context including email and owner ID *** ## Common Use Cases Manage and organize your HubSpot data Automate workflows with HubSpot Generate insights and reports Connect HubSpot with other tools ## Best Practices **Getting Started:** 1. Enable the HubSpot integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the HubSpot integration, contact [support@langdock.com](mailto:support@langdock.com) # Jira Source: https://docs.langdock.com/administration/integrations/jira Software for bug tracking, issue tracking and agile project management ## Overview Software for bug tracking, issue tracking and agile project management. Through Langdock's integration, you can access and manage Jira directly from your conversations. **Authentication:** OAuth\ **Category:** Development & Issue Tracking\ **Availability:** All workspace plans ## Available Actions ### Create Issue ##### `jira.createIssue` Creates an issue or, where the option to create subtasks is enabled in Jira, a subtask **Requires Confirmation:** Yes **Parameters:** * `parentKey` (TEXT, Optional): The key of the parent issue, e.g. key of an epic * `assigneeId` (TEXT, Optional): The Account ID of the assignee user * `description` (MULTI\_LINE\_TEXT, Optional): A description of the issue (plain text or JSON-formatted Jira document) * `projectKey` (TEXT, Required): The key of the project to assign the newly created issue to * `summary` (TEXT, Required): A short summary of the issue * `issueTypeId` (TEXT, Required): The ID of the issue type * `customFields` (TEXT, Optional): Custom field values when creating a Jira issue (JSON object) **Output:** Returns the created issue with key, ID, and all specified details *** ### Search for Issues ##### `jira.searchforIssues` Searches for issues using JQL **Requires Confirmation:** No **Parameters:** * `jql` (TEXT, Optional): A JQL expression for performance reasons, this parameter requires a bounded query * `fields` (TEXT, Optional): A list of Jira issue fields to include in the response, formatted as a JSON array **Output:** Returns array of issues matching the JQL query with specified fields *** ### Get Issue Types for Project ##### `jira.getIssueTypesforProject` Gets all issue types for a project **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): The ID of the project **Output:** Returns array of issue types available for the project *** ### Get All Issue Types for User ##### `jira.getAllIssueTypesforUser` Gets all issue types for a user **Requires Confirmation:** No **Parameters:** None **Output:** Returns array of all issue types available to the user *** ### Get Recent Projects ##### `jira.getRecentProjects` Returns a list of up to 20 projects recently viewed by the user **Requires Confirmation:** No **Parameters:** None **Output:** Returns array of recent projects with their details *** ### Find Users ##### `jira.findUsers` Returns a list of active users that match the search string and property **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): A query string that is matched against user attributes **Output:** Returns array of users matching the search criteria *** ### Get Current User ##### `jira.getCurrentUser` Gets details about the user of the current connection **Requires Confirmation:** No **Parameters:** None **Output:** Returns current user details including ID, email, and display name *** ### Get Issue ##### `jira.getIssue` Gets an issue by ID or key **Requires Confirmation:** No **Parameters:** * `issueId` (TEXT, Required): ID or key of the issue that should be retrieved **Output:** Returns issue details including all fields and properties *** ### Update Issue ##### `jira.updateIssue` Updates an issue **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Required): ID of the issue that should be updated * `assigneeId` (TEXT, Optional): The Account ID of the assignee user * `description` (TEXT, Optional): A description of the issue * `projectKey` (TEXT, Optional): The key of the project to assign the newly created issue to * `summary` (TEXT, Optional): A short summary of the issue * `issueTypeId` (TEXT, Optional): The ID of the issue type * `customFields` (TEXT, Optional): Custom field values when updating a Jira issue **Output:** Returns the updated issue with new values *** ### Create Subtask ##### `jira.createSubtask` Creates a subtask for an existing issue **Requires Confirmation:** Yes **Parameters:** * `parrentissueKey` (TEXT, Required): The key of the parent issue * `summary` (TEXT, Required): The title/summary of the subtask * `projectKey` (TEXT, Optional): The project key (will be extracted from parent issue if not provided) * `subtasktypeId` (TEXT, Optional): The ID of the subtask issue type (defaults to '10000') * `description` (TEXT, Optional): A description of the subtask * `assigneeId` (TEXT, Optional): The ID of the user to assign the subtask to * `reporterId` (TEXT, Optional): The ID of the user who is reporting the subtask * `priorityId` (TEXT, Optional): The ID of the priority level for the subtask * `customFields` (TEXT, Optional): Custom field values when creating a Jira subtask **Output:** Returns the created subtask with key, ID, and parent relationship *** ### Move Issue by Transition ID ##### `jira.moveIssuebyTransitionID` Moves an issue through workflow stages using a transition ID **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Required): ID or key of the issue that should be moved * `transitionId` (TEXT, Required): ID of the transition to perform * `comment` (TEXT, Optional): A comment to add during the transition **Output:** Returns confirmation of the transition *** ### Get Transition ID ##### `jira.getTransitionID` Gets available transition IDs for a Jira issue **Requires Confirmation:** No **Parameters:** * `issueId` (TEXT, Required): ID or key of the issue for which the transitions should be received **Output:** Returns array of available transitions with their IDs and names *** ### Get Field Metadata for Issue Type ##### `jira.getFieldMetadataforIssueType` Gets all available field metadata for an issue type **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): ID or key of the project the issue metadata should be received for * `issueTypeId` (TEXT, Required): ID of the issue type the data should be retrieved for **Output:** Returns field metadata including custom fields and their configurations *** ### Get Project ##### `jira.getProject` Returns the project details for a project **Requires Confirmation:** No **Parameters:** * `projectIdOrKey` (TEXT, Required): The project ID or project key * `expand` (TEXT, Optional): Use expand to include additional information in the response * `properties` (TEXT, Optional): A list of project properties to return for the project **Output:** Returns project details including name, key, description, and other properties *** ### Get Comments ##### `jira.getComments` Returns all comments for an issue **Requires Confirmation:** No **Parameters:** * `issueIdOrKey` (TEXT, Required): The ID or key of the issue * `startAt` (TEXT, Optional): The index of the first item to return in a page of results * `maxResults` (TEXT, Optional): The maximum number of items to return per page * `orderBy` (TEXT, Optional): Order the results by a field * `expand` (TEXT, Optional): Use expand to include additional information about comments **Output:** Returns array of comments with their content, author, and timestamps *** ### Add Comment ##### `jira.addComment` Adds a comment to an issue **Requires Confirmation:** Yes **Parameters:** * `issueIdOrKey` (TEXT, Required): The ID or key of the issue * `comment` (MULTI\_LINE\_TEXT, Required): The text content of the comment * `visibilityType` (TEXT, Optional): Whether the comment visibility is restricted by group or project role * `visibilityValue` (TEXT, Optional): The name of the group or the name of the project role * `visibilityIdentifier` (TEXT, Optional): The ID of the group or the name of the project role * `expand` (TEXT, Optional): Use expand to include additional information about comments * `properties` (TEXT, Optional): A list of comment properties as JSON **Output:** Returns the created comment with ID and content *** ### Update Comment ##### `jira.updateComment` Updates a comment **Requires Confirmation:** Yes **Parameters:** * `issueIdOrKey` (TEXT, Required): The ID or key of the issue * `commentId` (TEXT, Required): The ID of the comment * `comment` (MULTI\_LINE\_TEXT, Required): The text content of the comment * `visibilityType` (TEXT, Optional): Whether the comment visibility is restricted by group or project role * `visibilityValue` (TEXT, Optional): The name of the group or the name of the project role * `visibilityIdentifier` (TEXT, Optional): The ID of the group or the name of the project role * `notifyUsers` (TEXT, Optional): Whether users are notified by email * `overrideEditableFlag` (TEXT, Optional): Whether screen security is overridden * `expand` (TEXT, Optional): Use expand to include additional information about comments * `properties` (TEXT, Optional): A list of comment properties as JSON **Output:** Returns the updated comment with new content *** ### Get Project Stages ##### `jira.getProjectStages` Gets the stages for issue types of a project **Requires Confirmation:** No **Parameters:** * `projectId` (TEXT, Required): ID or key of the project the stages should be retrieved for **Output:** Returns array of project stages with their details #### Triggers *** ### Updated Issue ##### `jira.updatedIssue` Triggers when an issue was updated **Requires Confirmation:** No **Parameters:** * `projectKey` (TEXT, Optional): The key of the project that should trigger the workflow * `issueType` (TEXT, Optional): The type of issue that should trigger the workflow **Output:** Returns the result of the operation *** ### New Issue ##### `jira.newIssue` Triggers when new issues are created **Requires Confirmation:** No **Parameters:** None **Output:** Returns the result of the operation *** ### New Issue (JQL) ##### `jira.newIssueJQL` Triggers when new issues are created **Requires Confirmation:** No **Parameters:** * `jqlQuery` (TEXT, Required): JQL query to filter issues **Output:** Returns the result of the operation *** ### Create Issue ##### `jira.createIssue` Creates an issue in Linear **Requires Confirmation:** Yes **Parameters:** * `teamId` (TEXT, Required): The ID of the team to create the issue in. Team id's can be retrieved using the 'Get teams' action * `title` (TEXT, Required): The title of the issue * `description` (TEXT, Optional): The description of the issue in markdown format * `options` (OBJECT, Optional): Provide additional Linear issue properties as a JSON object. This field accepts any valid Linear issue fields beyond the basic ones above **Output:** Returns the created issue with ID, title, identifier, URL, priority, state, assignee, and labels *** ### Create Comment ##### `jira.createComment` Creates a new issue comment in Linear **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Optional): The ID of the issue to comment on * `commentBody` (TEXT, Required): The body of the comment to add **Output:** Returns the created comment with ID and content *** ### Update an Issue ##### `jira.updateanIssue` Updates an existing issue in Linear **Requires Confirmation:** Yes **Parameters:** * `title` (TEXT, Optional): The new title of the issue * `assigneeId` (TEXT, Optional): The ID of the person assigned to the task * `stateId` (TEXT, Optional): The state of the issue. Can be Backlog, Todo, To discuss, In Progress, Blocked, In Review, Waiting for Release, Done, Canceled, Triage * `issueId` (TEXT, Required): The ID of the issue that should be updated **Output:** Returns the updated issue with new values *** ### Get Issue Details ##### `jira.getIssueDetails` Gets the details of a specific issue **Requires Confirmation:** No **Parameters:** * `issueId` (TEXT, Required): The ID of the issue **Output:** Returns issue details including ID, title, description, state, assignee, labels, and other properties *** ### Get Team Members ##### `jira.getTeamMembers` Gets all team members in a given Linear team **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Required): The ID of the team **Output:** Returns array of team members with their IDs, names, and other details *** ### Get Current User ##### `jira.getCurrentUser` Get the user details of your profile in Linear **Requires Confirmation:** No **Parameters:** None **Output:** Returns current user details including ID, name, email, and other profile information *** ### Get Teams ##### `jira.getTeams` Lists all teams in Linear workspace **Requires Confirmation:** No **Parameters:** None **Output:** Returns array of teams with their IDs, names, and other details *** ### Get Issues in Team ##### `jira.getIssuesinTeam` Gets all issues from a given team **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Required): The team ID to use for searching issues **Output:** Returns array of issues in the specified team *** ### Search Issues ##### `jira.searchIssues` Searches for issues in Linear **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Optional): The ID of the team to search issues in. Leave empty to search across all teams * `query` (TEXT, Optional): Text to search for in issue titles and descriptions * `status` (TEXT, Optional): Filter by issue status (e.g., 'backlog', 'in\_progress', 'done') * `assigneeId` (TEXT, Optional): Filter issues by assignee ID * `limit` (TEXT, Optional): Maximum number of issues to return (default: 50, max: 100) **Output:** Returns array of issues matching the search criteria *** ## Common Use Cases Manage and organize your Jira data Automate workflows with Jira Generate insights and reports Connect Jira with other tools ## Best Practices **Getting Started:** 1. Enable the Jira integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Jira integration, contact [support@langdock.com](mailto:support@langdock.com) # Linear Source: https://docs.langdock.com/administration/integrations/linear A project management tool for software teams that streamlines issue tracking ## Overview A project management tool for software teams that streamlines issue tracking. Through Langdock's integration, you can access and manage Linear directly from your conversations. **Authentication:** OAuth\ **Category:** Development & Issue Tracking\ **Availability:** All workspace plans ## Available Actions ### Create Issue ##### `linear.createIssue` Creates an issue in Linear **Requires Confirmation:** Yes **Parameters:** * `teamId` (TEXT, Required): The ID of the team to create the issue in. Team id's can be retrieved using the 'Get teams' action * `title` (TEXT, Required): The title of the issue * `description` (TEXT, Optional): The description of the issue in markdown format * `options` (OBJECT, Optional): Provide additional Linear issue properties as a JSON object. This field accepts any valid Linear issue fields beyond the basic ones above **Output:** Returns the created issue with ID, title, identifier, URL, priority, state, assignee, and labels *** ### Create Comment ##### `linear.createComment` Creates a new issue comment in Linear **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Optional): The ID of the issue to comment on * `commentBody` (TEXT, Required): The body of the comment to add **Output:** Returns the created comment with ID and content *** ### Update an Issue ##### `linear.updateanIssue` Updates an existing issue in Linear **Requires Confirmation:** Yes **Parameters:** * `title` (TEXT, Optional): The new title of the issue * `assigneeId` (TEXT, Optional): The ID of the person assigned to the task * `stateId` (TEXT, Optional): The state of the issue. Can be Backlog, Todo, To discuss, In Progress, Blocked, In Review, Waiting for Release, Done, Canceled, Triage * `issueId` (TEXT, Required): The ID of the issue that should be updated **Output:** Returns the updated issue with new values *** ### Get Issue Details ##### `linear.getIssueDetails` Gets the details of a specific issue **Requires Confirmation:** No **Parameters:** * `issueId` (TEXT, Required): The ID of the issue **Output:** Returns issue details including ID, title, description, state, assignee, labels, and other properties *** ### Get Team Members ##### `linear.getTeamMembers` Gets all team members in a given Linear team **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Required): The ID of the team **Output:** Returns array of team members with their IDs, names, and other details *** ### Get Current User ##### `linear.getCurrentUser` Get the user details of your profile in Linear **Requires Confirmation:** No **Parameters:** None **Output:** Returns current user details including ID, name, email, and other profile information *** ### Get Teams ##### `linear.getTeams` Lists all teams in Linear workspace **Requires Confirmation:** No **Parameters:** None **Output:** Returns array of teams with their IDs, names, and other details *** ### Get Issues in Team ##### `linear.getIssuesinTeam` Gets all issues from a given team **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Required): The team ID to use for searching issues **Output:** Returns array of issues in the specified team *** ### Search Issues ##### `linear.searchIssues` Searches for issues in Linear **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Optional): The ID of the team to search issues in. Leave empty to search across all teams * `query` (TEXT, Optional): Text to search for in issue titles and descriptions * `status` (TEXT, Optional): Filter by issue status (e.g., 'backlog', 'in\_progress', 'done') * `assigneeId` (TEXT, Optional): Filter issues by assignee ID * `limit` (TEXT, Optional): Maximum number of issues to return (default: 50, max: 100) **Output:** Returns array of issues matching the search criteria *** ## Common Use Cases Manage and organize your Linear data Automate workflows with Linear Generate insights and reports Connect Linear with other tools ## Best Practices **Getting Started:** 1. Enable the Linear integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Linear integration, contact [support@langdock.com](mailto:support@langdock.com) # Microsoft Teams Source: https://docs.langdock.com/administration/integrations/microsoft-teams Platform that combines chat, video meetings, file storage, and app integration ## Overview Platform that combines chat, video meetings, file storage, and app integration. Through Langdock's integration, you can access and manage Microsoft Teams directly from your conversations. **Authentication:** OAuth\ **Category:** Microsoft 365\ **Availability:** All workspace plans ## Available Actions ### Send Channel Message ##### `microsoftteams.sendChannelMessage` Sends a message in a Teams channel on the user's behalf **Requires Confirmation:** Yes **Parameters:** * `content` (TEXT, Required): The message you want to send * `channelId` (TEXT, Required): The unique identifier of the channel you want to send the message in * `teamId` (TEXT, Required): The unique identifier of the Team you want to send the message in **Output:** Returns the sent message with ID and content *** ### List All Chats ##### `microsoftteams.listAllChats` Lists all chats from a specific team the user is part of **Requires Confirmation:** No **Parameters:** None **Output:** Returns array of chats with their IDs, names, and other details *** ### List All Users in Chat ##### `microsoftteams.listAllUsersinChat` Lists all users in a specific chat **Requires Confirmation:** No **Parameters:** * `chatId` (TEXT, Required): The unique ID of the chat you want to retrieve the user from **Output:** Returns array of users in the specified chat *** ### Send Chat Message ##### `microsoftteams.sendChatMessage` Sends a message in a Teams chat on the user's behalf **Requires Confirmation:** Yes **Parameters:** * `chatId` (TEXT, Required): The unique identifier of the chat you want to send the message in * `content` (TEXT, Required): The message you want to send **Output:** Returns the sent message with ID and content *** ### List All Teams ##### `microsoftteams.listAllTeams` Lists all teams the user is part of **Requires Confirmation:** No **Parameters:** None **Output:** Returns array of teams with their IDs, names, and other details *** ### List All Channels ##### `microsoftteams.listAllChannels` Lists all channels from a specific team the user is part of **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Required): The ID of the team you want all channels listed for **Output:** Returns array of channels with their IDs, names, and other details *** ### Search Messages ##### `microsoftteams.searchMessages` Searches for chat & channel messages in Microsoft Teams that match the specified query **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Required): Search term used to find messages in Microsoft Teams **Output:** Returns array of messages matching the search query *** ### Find Chat ##### `microsoftteams.findChat` Allows you to find a Microsoft Teams chat by its name **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Required): Search term used to filter Microsoft Teams chats by their topic names **Output:** Returns array of chats matching the search criteria #### Triggers *** ### New Channel Message ##### `microsoftteams.newChannelMessage` Triggers when a new message to a channel is sent **Requires Confirmation:** No **Parameters:** * `channelId` (TEXT, Required): The ID of the channel you want to monitor for new messages * `keyword` (TEXT, Optional): Keywords that should be included in the message to trigger * `teamId` (TEXT, Required): The unique ID of the team the channel you want to monitor belongs to **Output:** Returns the result of the operation *** ### New Chat Message ##### `microsoftteams.newChatMessage` Triggers when you receive a new chat message **Requires Confirmation:** No **Parameters:** * `chatId` (TEXT, Required): The ID of a chat that you want to monitor * `keyword` (TEXT, Optional): Keyword or multiple keywords you would like to filter for **Output:** Returns the result of the operation *** ### New Channel Mention ##### `microsoftteams.newChannelMention` Triggers when you are mentioned in a channel **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Optional): The ID of the team that should be monitored for mentions in channels * `channelId` (TEXT, Optional): The ID of the channel that should be monitored for mentions in channels * `keyword` (TEXT, Optional): To filter messages containing a specific keyword * `mentionType` (TEXT, Optional): Type of mention to filter for (can be 'channel', 'team', or 'person') **Output:** Returns the result of the operation *** ## Common Use Cases Manage and organize your Microsoft Teams data Automate workflows with Microsoft Teams Generate insights and reports Connect Microsoft Teams with other tools ## Best Practices **Getting Started:** 1. **Prerequisite:** A Microsoft Admin must [approve the Langdock application](/administration/microsoft-admin-approval) in your Microsoft workspace once. 2. Enable the Microsoft Teams integration in your workspace settings 3. Authenticate using OAuth 4. Test the connection with a simple read operation 5. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Microsoft Teams integration, contact [support@langdock.com](mailto:support@langdock.com) # Milvus Source: https://docs.langdock.com/administration/integrations/milvus High-performance vector database for AI applications and similarity search ## Overview High-performance vector database for AI applications and similarity search. Through Langdock's integration, you can access and manage Milvus directly from your conversations. **Authentication:** API Key\ **Category:** AI & Search\ **Availability:** All workspace plans ## Available Actions ### Search Collection ##### `milvus.searchCollection` Searches the database for the most relevant information based on the query provided **Requires Confirmation:** No **Parameters:** * `query` (VECTOR, Required): The query vector for similarity search **Output:** Returns array of similar vectors with their IDs, scores, and metadata *** ## Common Use Cases Manage and organize your Milvus data Automate workflows with Milvus Generate insights and reports Connect Milvus with other tools ## Best Practices **Getting Started:** 1. Enable the Milvus integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Milvus integration, contact [support@langdock.com](mailto:support@langdock.com) # Miro Source: https://docs.langdock.com/administration/integrations/miro Visual workspace for innovation that enables distributed teams to collaborate ## Overview Visual workspace for innovation that enables distributed teams to collaborate. Through Langdock's integration, you can access and manage Miro directly from your conversations. **Authentication:** OAuth\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Get Boards ##### `miro.getBoards` Retrieves a list of boards accessible to the user **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Optional): Optional team ID to filter boards **Output:** Returns array of boards with their IDs, names, descriptions, and other details *** ### Search Boards ##### `miro.searchBoards` Search for boards by name or description **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Required): Search term to find boards * `teamId` (TEXT, Optional): Optional team ID to filter search results * `limit` (NUMBER, Optional): Maximum number of boards to return (default: 10) **Output:** Returns array of boards matching the search criteria *** ### Get Recent Boards ##### `miro.getRecentBoards` Get recently modified boards, sorted by modification date **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Maximum number of boards to return (default: 10) * `teamId` (TEXT, Optional): Optional team ID to filter boards **Output:** Returns array of recently modified boards *** ### Get Board Details ##### `miro.getBoardDetails` Retrieves detailed information about a specific board **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The unique identifier of the board **Output:** Returns board details including ID, name, description, and other properties *** ### Get Board Items ##### `miro.getBoardItems` Retrieves all items on a board with optional filtering by type **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The unique identifier of the board * `itemType` (TEXT, Optional): Filter by item type (e.g., sticky\_note, text, shape, frame, card) **Output:** Returns array of board items with their details *** ### Get Frames ##### `miro.getFrames` Retrieves all frames on a board **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The unique identifier of the board **Output:** Returns array of frames with their details *** ### Get Frame Items ##### `miro.getFrameItems` Retrieves all items within a specific frame **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The unique identifier of the board * `frameId` (TEXT, Required): The unique identifier of the frame **Output:** Returns array of items within the specified frame *** ### Get Board Tags ##### `miro.getBoardTags` Retrieves all tags used on a board for organization and categorization **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The unique identifier of the board **Output:** Returns array of tags with their details *** ### Get Specific Item ##### `miro.getSpecificItem` Retrieves a specific item on a board by its ID **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The ID of the board containing the item * `itemId` (TEXT, Required): The ID of the specific item to retrieve **Output:** Returns the specific item with its details *** ### Get Frame ##### `miro.getFrame` Retrieves a specific frame item by its ID **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The ID of the board containing the frame * `frameId` (TEXT, Required): The ID of the frame to retrieve **Output:** Returns the specific frame with its details *** ### Get Card Item ##### `miro.getCardItem` Retrieves a specific card item by its ID **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The ID of the board containing the card * `cardId` (TEXT, Required): The ID of the card to retrieve **Output:** Returns the specific card with its details *** ### Get Document Item ##### `miro.getDocumentItem` Retrieves a specific document item by its ID **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The ID of the board containing the document * `documentId` (TEXT, Required): The ID of the document to retrieve **Output:** Returns the specific document with its details *** ### Get Embed Item ##### `miro.getEmbedItem` Retrieves a specific embed item by its ID **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The ID of the board containing the embed * `itemId` (TEXT, Required): The ID of the embed to retrieve **Output:** Returns the specific embed with its details *** ### Get Shape Item ##### `miro.getShapeItem` Retrieves a specific shape item by its ID **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The ID of the board containing the shape * `itemId` (TEXT, Required): The ID of the shape to retrieve **Output:** Returns the specific shape with its details *** ### Get Sticky Note Item ##### `miro.getStickyNoteItem` Retrieves a specific sticky note item by its ID **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The ID of the board containing the sticky note * `itemId` (TEXT, Required): The ID of the sticky note to retrieve **Output:** Returns the specific sticky note with its details *** ### Get Text Item ##### `miro.getTextItem` Retrieves a specific text item by its ID **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The ID of the board containing the text * `itemId` (TEXT, Required): The ID of the text item to retrieve **Output:** Returns the specific text item with its details *** ### Get Page Content ##### `miro.getPageContent` Retrieves the content of a specific page or block and all its children from Notion and converts them to markdown **Requires Confirmation:** No **Parameters:** * `blockId` (TEXT, Required): The unique identifier of the Notion page or block whose content you want to retrieve, including all its nested children blocks and their formatted content **Output:** Returns the page content converted to markdown format *** ### Query Database ##### `miro.queryDatabase` Returns pages from a database with optional filters, sorts, and pagination. Use this action whenever you want to fetch multiple pages from a database **Requires Confirmation:** No **Parameters:** * `databaseId` (TEXT, Required): ID or URL of the database to query * `filter` (TEXT, Optional): Notion filter object JSON. Supports 'and'/'or' compound filters and all type-specific conditions * `sorts` (OBJECT, Optional): Array of Notion sort objects. Example: \[property':'Last ordered','direction':'ascending] * `pageSize` (NUMBER, Optional): Number of results per page (max 100). Defaults to 30 * `startCursor` (TEXT, Optional): Cursor from a previous response for pagination * `filterProperties` (TEXT, Optional): Comma-separated property IDs to include in the response * `returnAll` (BOOLEAN, Optional): If true, paginates until all results are collected * `simplifyOutput` (BOOLEAN, Optional): Return simplified pages with id, url, title and flattened properties **Output:** Returns array of database pages with their properties and content *** ### Create Database ##### `miro.createDatabase` Creates a database as a subpage in the specified parent page, with the specified properties schema. Requires parent page to be an actual page or Wiki **Requires Confirmation:** Yes **Parameters:** * `parentId` (TEXT, Required): ID or URL of the parent PAGE (or wiki) under which the database will be created * `title` (TEXT, Optional): Optional database title * `properties` (OBJECT, Required): Property schema object. Example: Name': title': }, 'Status': status': }, 'Price': number': format': 'dollar}} * `icon` (TEXT, Optional): Emoji or full icon object * `cover` (TEXT, Optional): External cover URL or full external file object * `isInline` (BOOLEAN, Optional): Create the database inline on the page **Output:** Returns the created database with ID, title, and properties schema *** ### Update Database ##### `miro.updateDatabase` Updates database metadata (title, description, icon, cover) and/or modifies database properties (add, remove, rename, or change schema) **Requires Confirmation:** Yes **Parameters:** * `databaseId` (TEXT, Required): ID or URL of the database to update * `title` (TEXT, Optional): Optional new database title * `description` (TEXT, Optional): Optional new database description * `properties` (OBJECT, Optional): JSON object describing property changes. Use null to remove a property, provide `{ name: 'New name' }` to rename, or pass a property schema object to change type/options * `icon` (TEXT, Optional): Emoji or full icon object * `cover` (TEXT, Optional): External cover URL or full external file object **Output:** Returns the updated database with new metadata and properties *** ### Get Page Details ##### `miro.getPageDetails` Retrieves detailed information about a specific Notion page including its properties, metadata, and structure **Requires Confirmation:** No **Parameters:** * `pageId` (TEXT, Required): The unique identifier of the Notion page you want to retrieve information about **Output:** Returns page details including ID, title, properties, and metadata *** ### Find Pages ##### `miro.findPages` Searches for pages in your Notion workspace by title **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): Search term used to find pages by their titles **Output:** Returns array of pages matching the search criteria *** ### Find Databases ##### `miro.findDatabases` Searches for databases in your Notion workspace by title **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): Search term used to find databases by their titles **Output:** Returns array of databases matching the search criteria *** ### Get Database Details ##### `miro.getDatabaseDetails` Retrieves detailed information about a specific Notion database including its properties, metadata, and structure **Requires Confirmation:** No **Parameters:** * `databaseId` (TEXT, Required): The unique identifier of the Notion database you want to retrieve information about **Output:** Returns database details including ID, title, properties schema, and metadata *** ### Search ##### `miro.search` Searches across your entire Notion workspace or within a specific database for pages and content **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): Search term to find pages or databases. Searches are case-insensitive and match partial words * `databaseId` (TEXT, Optional): Optional: Search within a specific database instead of the entire workspace * `objectType` (SELECT, Optional): Filter results by type. Choose 'page' for pages only or 'database' for databases only * `propertyFilters` (TEXT, Optional): Filter database pages by property values (requires database ID). Provide as JSON object * `pageSize` (NUMBER, Optional): Number of results to return per page. Default is 30, maximum is 100 * `sortBy` (SELECT, Optional): Sort results by creation time or last edited time * `sortDirection` (SELECT, Optional): Sort order for results * `createdBy` (TEXT, Optional): Filter results by the user who created the page or database * `lastEditedBy` (TEXT, Optional): Filter results by the user who last edited the page or database * `startCursor` (TEXT, Optional): Pagination cursor from previous search results **Output:** Returns array of pages and databases matching the search criteria *** ### Create Page ##### `miro.createPage` Creates a new page in Notion, either as a database entry or as a child of another page **Requires Confirmation:** Yes **Parameters:** * `parentId` (TEXT, Required): The ID of the parent database or page where the new page will be created * `parentType` (SELECT, Optional): Type of parent where the page will be created * `title` (TEXT, Optional): The title of the new page * `properties` (OBJECT, Optional): Properties for the new page as a JSON object * `content` (TEXT, Optional): The content of the page. Can be plain text (will be converted to paragraphs) or an array of Notion blocks * `icon` (TEXT, Optional): An emoji or URL for the page icon * `cover` (TEXT, Optional): URL of an image to use as the page cover * `createInPersonalRoot` (BOOLEAN, Optional): When enabled and parentId is 'workspace' or 'root', creates the page at your personal workspace root **Output:** Returns the created page with ID, title, and properties *** ### Update Page ##### `miro.updatePage` Updates a page's properties and/or a specific block on that page. Use page fields for database/page metadata; use block fields to edit the content of an individual block **Requires Confirmation:** Yes **Parameters:** * `pageId` (TEXT, Optional): ID of the page to update (properties, icon, cover, trash) * `properties` (TEXT, Optional): JSON object of properties to update * `icon` (TEXT, Optional): Emoji character or full Notion icon object * `cover` (TEXT, Optional): URL string or full Notion external file object * `inTrash` (BOOLEAN, Optional): Set true to move the page to trash, false to restore * `blockId` (TEXT, Optional): ID of the block to update (content editing) * `blockType` (TEXT, Optional): Block type to update (e.g., 'paragraph', 'heading\_1', 'heading\_2', 'heading\_3', 'to\_do', 'bulleted\_list\_item', 'numbered\_list\_item') * `blockText` (TEXT, Optional): Text content for the block (converted to rich\_text) * `blockChecked` (BOOLEAN, Optional): Only for to\_do blocks. true/false * `blockPayload` (TEXT, Optional): Advanced: full JSON body for the block update (overrides blockType/blockText) * `blockArchived` (BOOLEAN, Optional): Set true to archive the block, false to unarchive **Output:** Returns the updated page or block with new values #### Triggers *** ### Updated Page ##### `miro.updatedPage` Triggers when pages are updated **Requires Confirmation:** No **Parameters:** * `pageId` (TEXT, Optional): ID of the page to monitor for updates **Output:** Returns the result of the operation *** ### Updated Database Item ##### `miro.updatedDatabaseItem` Triggers when items in the database are updated **Requires Confirmation:** No **Parameters:** * `databaseId` (TEXT, Required): ID of the database to monitor for updated items **Output:** Returns the result of the operation *** ### New Database Item ##### `miro.newDatabaseItem` Triggers when new database items are added **Requires Confirmation:** No **Parameters:** * `databaseId` (TEXT, Required): ID of the database to monitor for new items **Output:** Returns the result of the operation *** ## Common Use Cases Manage and organize your Miro data Automate workflows with Miro Generate insights and reports Connect Miro with other tools ## Best Practices **Getting Started:** 1. Enable the Miro integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Miro integration, contact [support@langdock.com](mailto:support@langdock.com) # Monday.com Source: https://docs.langdock.com/administration/integrations/monday Work operating system that unifies project management, task tracking, and team collaboration ## Overview Work operating system that unifies project management, task tracking, and team collaboration. Through Langdock's integration, you can access and manage Monday.com directly from your conversations. **Authentication:** API Key\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Get Boards ##### `mondaycom.getBoards` Returns the available boards and their information **Requires Confirmation:** No **Parameters:** None **Output:** Returns a list of boards with their IDs and names *** ### Get Items ##### `mondaycom.getItems` Retrieves items available on a specific board **Requires Confirmation:** No **Parameters:** * `boardId` (TEXT, Required): The unique identifier for the Monday.com board from which to retrieve items * `columnIds` (TEXT, Optional): An array of column IDs that specifies which columns' values should be retrieved for each item * `itemLimit` (NUMBER, Optional): An integer specifying the maximum number of items to retrieve from the board **Output:** Returns items from the specified board with their column values *** ### Get Item Updates ##### `mondaycom.getItemUpdates` Retrieves updates (comments) for a specific item **Requires Confirmation:** No **Parameters:** * `itemId` (TEXT, Required): The unique identifier for the item * `limit` (NUMBER, Optional): Maximum number of updates to retrieve (default: 10) **Output:** Returns updates/comments for the specified item *** ### Create Column ##### `mondaycom.createColumn` Creates a new column on a specific board **Requires Confirmation:** Yes **Parameters:** * `boardId` (TEXT, Required): The unique identifier for the Monday.com board * `title` (TEXT, Required): The title of the new column * `columnType` (TEXT, Required): The type of column to create (e.g., text, number, status) * `columnSettings` (MULTI\_LINE\_TEXT, Optional): JSON formatted settings for the column **Output:** Returns the created column details *** ### Create Subitem ##### `mondaycom.createSubitem` Creates a new subitem under a parent item **Requires Confirmation:** Yes **Parameters:** * `parentItemId` (TEXT, Required): The unique identifier of the parent item * `itemName` (TEXT, Required): The name of the new subitem * `columnValues` (TEXT, Optional): JSON formatted column values for the new subitem **Output:** Returns the created subitem details *** ### Create Task ##### `mondaycom.createTask` Creates a new item in a Monday.com board with specified column values **Requires Confirmation:** Yes **Parameters:** * `boardId` (NUMBER, Required): The unique identifier of the board where the item will be created * `itemName` (TEXT, Required): The name of the new item * `columnValues` (MULTI\_LINE\_TEXT, Required): JSON formatted column values for the new item (e.g., status': 'Done', 'date': '2023-04-15) * `groupId` (NUMBER, Optional): Optional group ID to place the item in a specific group **Output:** Returns the created task/item details *** ### Add Update to Item ##### `mondaycom.addUpdatetoItem` Adds an update (comment) to a specific item **Requires Confirmation:** Yes **Parameters:** * `itemId` (TEXT, Required): The unique identifier for the item * `updateText` (MULTI\_LINE\_TEXT, Required): The text content of the update/comment **Output:** Returns the added update details *** ### Update Item ##### `mondaycom.updateItem` Updates a specific item in a board in Monday.com **Requires Confirmation:** Yes **Parameters:** * `itemId` (TEXT, Required): The unique identifier for the item (task) to be updated * `boardId` (TEXT, Required): The unique identifier of the board containing the item * `value` (TEXT, Required): The new value for the column * `columnId` (TEXT, Required): The ID of the column to update (e.g., 'status', 'text', 'date') **Output:** Returns the updated item details *** ### Update Item Column Values ##### `mondaycom.updateItemColumnValues` Updates column values for an existing item in Monday.com **Requires Confirmation:** Yes **Parameters:** * `boardId` (TEXT, Required): The unique identifier of the board containing the item * `itemId` (TEXT, Required): The unique identifier of the item to update * `columnId` (TEXT, Required): The ID of the column to update (e.g., 'status', 'text', 'date') * `columnValue` (TEXT, Required): The new value for the column **Output:** Returns the updated item details *** ### Move Item to Group ##### `mondaycom.moveItemtoGroup` Moves an item to a different group within the same board **Requires Confirmation:** Yes **Parameters:** * `boardId` (TEXT, Required): The unique identifier for the Monday.com board * `itemId` (TEXT, Required): The unique identifier for the item to move * `groupId` (TEXT, Required): The identifier of the destination group **Output:** Returns the moved item details *** ## Common Use Cases Manage and organize your Monday.com data Automate workflows with Monday.com Generate insights and reports Connect Monday.com with other tools ## Best Practices **Getting Started:** 1. Enable the Monday.com integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Monday.com integration, contact [support@langdock.com](mailto:support@langdock.com) # Notion Source: https://docs.langdock.com/administration/integrations/notion Workspace combining notes, databases, wikis, and project management in one place ## Overview Workspace combining notes, databases, wikis, and project management in one place. Through Langdock's integration, you can access and manage Notion directly from your conversations. **Authentication:** OAuth\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Get Page Content ##### `notion.getPageContent` Retrieves the content of a specific page or block and all its children from Notion and converts them to markdown **Requires Confirmation:** No **Parameters:** * `blockId` (TEXT, Required): The unique identifier of the Notion page or block whose content you want to retrieve, including all its nested children blocks and their formatted content **Output:** Returns the page content converted to markdown format *** ### Query Database ##### `notion.queryDatabase` Returns pages from a database with optional filters, sorts, and pagination. Use this action whenever you want to fetch multiple pages from a database **Requires Confirmation:** No **Parameters:** * `databaseId` (TEXT, Required): ID or URL of the database to query * `filter` (TEXT, Optional): Notion filter object JSON. Supports 'and'/'or' compound filters and all type-specific conditions * `sorts` (OBJECT, Optional): Array of Notion sort objects. Example: \[property':'Last ordered','direction':'ascending] * `pageSize` (NUMBER, Optional): Number of results per page (max 100). Defaults to 30 * `startCursor` (TEXT, Optional): Cursor from a previous response for pagination * `filterProperties` (TEXT, Optional): Comma-separated property IDs to include in the response * `returnAll` (BOOLEAN, Optional): If true, paginates until all results are collected * `simplifyOutput` (BOOLEAN, Optional): Return simplified pages with id, url, title and flattened properties **Output:** Returns array of database pages with their properties and content *** ### Create Database ##### `notion.createDatabase` Creates a database as a subpage in the specified parent page, with the specified properties schema. Requires parent page to be an actual page or Wiki **Requires Confirmation:** Yes **Parameters:** * `parentId` (TEXT, Required): ID or URL of the parent PAGE (or wiki) under which the database will be created * `title` (TEXT, Optional): Optional database title * `properties` (OBJECT, Required): Property schema object. Example: Name': title': }, 'Status': status': }, 'Price': number': format': 'dollar}} * `icon` (TEXT, Optional): Emoji or full icon object * `cover` (TEXT, Optional): External cover URL or full external file object * `isInline` (BOOLEAN, Optional): Create the database inline on the page **Output:** Returns the created database with ID, title, and properties schema *** ### Update Database ##### `notion.updateDatabase` Updates database metadata (title, description, icon, cover) and/or modifies database properties (add, remove, rename, or change schema) **Requires Confirmation:** Yes **Parameters:** * `databaseId` (TEXT, Required): ID or URL of the database to update * `title` (TEXT, Optional): Optional new database title * `description` (TEXT, Optional): Optional new database description * `properties` (OBJECT, Optional): JSON object describing property changes. Use null to remove a property, provide `{ name: 'New name' }` to rename, or pass a property schema object to change type/options * `icon` (TEXT, Optional): Emoji or full icon object * `cover` (TEXT, Optional): External cover URL or full external file object **Output:** Returns the updated database with new metadata and properties *** ### Get Page Details ##### `notion.getPageDetails` Retrieves detailed information about a specific Notion page including its properties, metadata, and structure **Requires Confirmation:** No **Parameters:** * `pageId` (TEXT, Required): The unique identifier of the Notion page you want to retrieve information about **Output:** Returns page details including ID, title, properties, and metadata *** ### Find Pages ##### `notion.findPages` Searches for pages in your Notion workspace by title **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): Search term used to find pages by their titles **Output:** Returns array of pages matching the search criteria *** ### Find Databases ##### `notion.findDatabases` Searches for databases in your Notion workspace by title **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): Search term used to find databases by their titles **Output:** Returns array of databases matching the search criteria *** ### Get Database Details ##### `notion.getDatabaseDetails` Retrieves detailed information about a specific Notion database including its properties, metadata, and structure **Requires Confirmation:** No **Parameters:** * `databaseId` (TEXT, Required): The unique identifier of the Notion database you want to retrieve information about **Output:** Returns database details including ID, title, properties schema, and metadata *** ### Search ##### `notion.search` Searches across your entire Notion workspace or within a specific database for pages and content **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): Search term to find pages or databases. Searches are case-insensitive and match partial words * `databaseId` (TEXT, Optional): Optional: Search within a specific database instead of the entire workspace * `objectType` (SELECT, Optional): Filter results by type. Choose 'page' for pages only or 'database' for databases only * `propertyFilters` (TEXT, Optional): Filter database pages by property values (requires database ID). Provide as JSON object * `pageSize` (NUMBER, Optional): Number of results to return per page. Default is 30, maximum is 100 * `sortBy` (SELECT, Optional): Sort results by creation time or last edited time * `sortDirection` (SELECT, Optional): Sort order for results * `createdBy` (TEXT, Optional): Filter results by the user who created the page or database * `lastEditedBy` (TEXT, Optional): Filter results by the user who last edited the page or database * `startCursor` (TEXT, Optional): Pagination cursor from previous search results **Output:** Returns array of pages and databases matching the search criteria *** ### Create Page ##### `notion.createPage` Creates a new page in Notion, either as a database entry or as a child of another page **Requires Confirmation:** Yes **Parameters:** * `parentId` (TEXT, Required): The ID of the parent database or page where the new page will be created * `parentType` (SELECT, Optional): Type of parent where the page will be created * `title` (TEXT, Optional): The title of the new page * `properties` (OBJECT, Optional): Properties for the new page as a JSON object * `content` (TEXT, Optional): The content of the page. Can be plain text (will be converted to paragraphs) or an array of Notion blocks * `icon` (TEXT, Optional): An emoji or URL for the page icon * `cover` (TEXT, Optional): URL of an image to use as the page cover * `createInPersonalRoot` (BOOLEAN, Optional): When enabled and parentId is 'workspace' or 'root', creates the page at your personal workspace root **Output:** Returns the created page with ID, title, and properties *** ### Update Page ##### `notion.updatePage` Updates a page's properties and/or a specific block on that page. Use page fields for database/page metadata; use block fields to edit the content of an individual block **Requires Confirmation:** Yes **Parameters:** * `pageId` (TEXT, Optional): ID of the page to update (properties, icon, cover, trash) * `properties` (TEXT, Optional): JSON object of properties to update * `icon` (TEXT, Optional): Emoji character or full Notion icon object * `cover` (TEXT, Optional): URL string or full Notion external file object * `inTrash` (BOOLEAN, Optional): Set true to move the page to trash, false to restore * `blockId` (TEXT, Optional): ID of the block to update (content editing) * `blockType` (TEXT, Optional): Block type to update (e.g., 'paragraph', 'heading\_1', 'heading\_2', 'heading\_3', 'to\_do', 'bulleted\_list\_item', 'numbered\_list\_item') * `blockText` (TEXT, Optional): Text content for the block (converted to rich\_text) * `blockChecked` (BOOLEAN, Optional): Only for to\_do blocks. true/false * `blockPayload` (TEXT, Optional): Advanced: full JSON body for the block update (overrides blockType/blockText) * `blockArchived` (BOOLEAN, Optional): Set true to archive the block, false to unarchive **Output:** Returns the updated page or block with new values #### Triggers *** ### Updated Page ##### `notion.updatedPage` Triggers when pages are updated **Requires Confirmation:** No **Parameters:** * `pageId` (TEXT, Optional): ID of the page to monitor for updates **Output:** Returns the result of the operation *** ### Updated Database Item ##### `notion.updatedDatabaseItem` Triggers when items in the database are updated **Requires Confirmation:** No **Parameters:** * `databaseId` (TEXT, Required): ID of the database to monitor for updated items **Output:** Returns the result of the operation *** ### New Database Item ##### `notion.newDatabaseItem` Triggers when new database items are added **Requires Confirmation:** No **Parameters:** * `databaseId` (TEXT, Required): ID of the database to monitor for new items **Output:** Returns the result of the operation *** ## Common Use Cases Manage and organize your Notion data Automate workflows with Notion Generate insights and reports Connect Notion with other tools ## Best Practices **Getting Started:** 1. Enable the Notion integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Notion integration, contact [support@langdock.com](mailto:support@langdock.com) # OneDrive Source: https://docs.langdock.com/administration/integrations/onedrive Microsoft's cloud storage service for storing and sharing files and folders ## Overview Microsoft's cloud storage service for storing and sharing files and folders. Through Langdock's integration, you can access and manage OneDrive directly from your conversations. **Authentication:** OAuth\ **Category:** Microsoft 365\ **Availability:** All workspace plans ## Available Actions ### Search Files ##### `onedrive.searchFiles` Searches for files in OneDrive by their title **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): The search term to find matching files **Output:** Returns array of files with their details including URL, documentId, title, mimeType, author, and createdDate *** ### Download File ##### `onedrive.downloadFile` Downloads a file from OneDrive **Requires Confirmation:** No **Parameters:** * `parent` (TEXT, Required): The parent folder containing the file * `itemId` (TEXT, Required): The unique identifier of the file to download **Output:** Returns the file content for download *** ### Search Files ##### `onedrive.searchFiles` Searches files by name and returns detailed information about each matching file **Requires Confirmation:** No **Parameters:** * `name` (TEXT, Required): The name of the OneDrive item you want to find **Output:** Returns array of files with detailed information *** ### List Available Drives ##### `onedrive.listAvailableDrives` Lists all accessible OneDrive locations **Requires Confirmation:** No **Parameters:** None **Output:** Returns array of available drives with their details *** ### Download OneDrive File ##### `onedrive.downloadOneDriveFile` Downloads a file from OneDrive and returns base64 content **Requires Confirmation:** No **Parameters:** * `parent` (OBJECT, Required): Parent object of the OneDrive file (e.g., driveId, userId, groupId, siteId) * `itemId` (TEXT, Required): The OneDrive item identifier **Output:** Returns the file content as base64 *** ## Common Use Cases Manage and organize your OneDrive data Automate workflows with OneDrive Generate insights and reports Connect OneDrive with other tools ## Best Practices **Getting Started:** 1. **Prerequisite:** A Microsoft Admin must [approve the Langdock application](/administration/microsoft-admin-approval) in your Microsoft workspace once. 2. Enable the OneDrive integration in your workspace settings 3. Authenticate using OAuth 4. Test the connection with a simple read operation 5. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the OneDrive integration, contact [support@langdock.com](mailto:support@langdock.com) # OpenRegister Source: https://docs.langdock.com/administration/integrations/openregister Access German commercial register data, shareholders, balance sheets & more ## Overview Access German commercial register data, shareholders, balance sheets & more. Through Langdock's integration, you can access and manage OpenRegister directly from your conversations. **Authentication:** API Key\ **Category:** Business & Finance\ **Availability:** All workspace plans ## Available Actions ### Get Company Contact Information ##### `openregister.getCompanyContactInformation` Retrieve contact information for a company using its unique ID. The response includes details such as email address, phone number, VAT identification number **Requires Confirmation:** No **Parameters:** * `companyId` (TEXT, Required): Unique company identifier. Can be retrieved by using the 'Search Companies' action **Output:** Returns company contact information including email, phone, and VAT details *** ### Get Company by Website URL ##### `openregister.getCompanybyWebsiteURL` Find a company using its website URL. The response includes a company ID that you can use with other endpoints to get details like financials, shareholders, and representatives **Requires Confirmation:** No **Parameters:** * `url` (TEXT, Required): The url of the company website **Output:** Returns company information including company ID for further queries *** ### Get Shareholders ##### `openregister.getShareholders` This endpoint currently only supports companies with the legal form GmbH **Requires Confirmation:** No **Parameters:** * `companyId` (TEXT, Required): Unique company identifier. Example format: DE-HRB-F1103-267645 **Output:** Returns shareholder information for GmbH companies *** ### Search Companies ##### `openregister.searchCompanies` Search for companies based on various criteria. You can filter by company name, register number, register type, register court, active status, and legal form. The response provides a list of matching companies **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Required): Text search query to find companies by name. Example: 'Descartes Technologies UG' **Output:** Returns a list of matching companies with their basic information *** ### Get Company Information ##### `openregister.getCompanyInformation` Retrieve detailed information about a company using its unique ID. The response includes company registration details, current status, name, address, business purpose, capital, legal representatives **Requires Confirmation:** No **Parameters:** * `companyId` (TEXT, Required): The company id to use **Output:** Returns detailed company information including registration details, status, and representatives *** ## Common Use Cases Manage and organize your OpenRegister data Automate workflows with OpenRegister Generate insights and reports Connect OpenRegister with other tools ## Best Practices **Getting Started:** 1. Enable the OpenRegister integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the OpenRegister integration, contact [support@langdock.com](mailto:support@langdock.com) # Outlook Calendar Source: https://docs.langdock.com/administration/integrations/outlook-calendar Microsoft's calendar application for scheduling and managing events ## Overview Microsoft's calendar application for scheduling and managing events. Through Langdock's integration, you can access and manage Outlook Calendar directly from your conversations. **Authentication:** OAuth\ **Category:** Microsoft 365\ **Availability:** All workspace plans ## Available Actions ### Get Today's Events ##### `outlookcalendar.getTodaysEvents` Retrieve all calendar events for today from your calendar or a shared calendar. Always include the user's timezone **Requires Confirmation:** No **Parameters:** * `timezone` (TEXT, Optional): IANA timezone identifier for proper time display (e.g. 'Europe/Berlin') * `calendarowner` (TEXT, Optional): Email address to view someone else's calendar events. Leave empty for your own events **Output:** Returns array of today's events with their details *** ### Get Events for Specific Date ##### `outlookcalendar.getEventsforSpecificDate` Retrieve all calendar events for a specific date only. Always include the user's timezone **Requires Confirmation:** No **Parameters:** * `date` (TEXT, Required): The specific date to retrieve events for in ISO format * `calendarowner` (TEXT, Optional): Email address to view someone else's calendar events. Leave empty for your own events * `timezone` (TEXT, Optional): IANA timezone identifier for proper time display **Output:** Returns array of events for the specified date *** ### Create Events ##### `outlookcalendar.createEvents` Creates outlook calendar events **Requires Confirmation:** Yes **Parameters:** * `timezone` (TEXT, Required): The timezone of the outlook calendar of the user * `calendarId` (TEXT, Optional): The unique ID of the calendar to schedule the event in. Leave empty to use default calendar * `locationName` (TEXT, Optional): Event location * `endingTime` (TEXT, Required): When the event ends in ISO 8601 format * `eventDescription` (TEXT, Optional): Description of what is planned for the event * `startingTime` (TEXT, Required): When the event starts in ISO 8601 format * `eventSubject` (TEXT, Required): The subject or title of the event * `attendees` (TEXT, Optional): Comma- or semicolon-separated list of REQUIRED attendee emails * `optionalAttendees` (TEXT, Optional): Comma- or semicolon-separated list of OPTIONAL attendee emails * `isonlinemeeting` (BOOLEAN, Optional): Set to true to create an online meeting with video conferencing details * `onlinemeetingprovider` (TEXT, Optional): Online meeting provider: 'teamsForBusiness', 'skypeForBusiness', or 'skype' * `recurrence` (TEXT, Optional): Recurrence pattern as JSON * `showAs` (SELECT, Optional): Event availability status: 'free', 'busy', 'tentative', 'outOfOffice' **Output:** Returns the created event with ID and details *** ### Update Event ##### `outlookcalendar.updateEvent` Update an existing calendar event **Requires Confirmation:** Yes **Parameters:** * `attendees` (TEXT, Optional): Comma- or semicolon-separated REQUIRED attendee emails to add or update to required * `optionalAttendees` (TEXT, Optional): Comma- or semicolon-separated OPTIONAL attendee emails to add or update to optional * `removeAttendees` (TEXT, Optional): Comma- or semicolon-separated attendee emails to remove from the event * `replaceAttendees` (BOOLEAN, Optional): If true, replace the entire attendee list with the attendees and optionalAttendees provided * `eventSubject` (TEXT, Optional): The subject or title of the event * `timezone` (TEXT, Optional): The timezone for the event * `eventId` (TEXT, Required): The unique ID of the event to update * `eventDescription` (TEXT, Optional): Description of what is planned for the event * `endingTime` (TEXT, Optional): When the event ends in ISO 8601 format * `locationName` (TEXT, Optional): Event location * `startingTime` (TEXT, Optional): When the event starts in ISO 8601 format * `isonlinemeeting` (BOOLEAN, Optional): Set to true to make this an online meeting with video conferencing details * `onlinemeetingprovider` (TEXT, Optional): Online meeting provider: 'teamsForBusiness', 'skypeForBusiness', or 'skype' * `recurrence` (TEXT, Optional): Recurrence pattern as JSON * `showAs` (SELECT, Optional): Event availability status: 'free', 'busy', 'tentative', 'outOfOffice' **Output:** Returns the updated event with new values *** ### List Calendars ##### `outlookcalendar.listCalendars` Retrieve accessible calendars including your own and shared calendars **Requires Confirmation:** No **Parameters:** * `calendarowner` (TEXT, Optional): Email address to view someone else's calendars. Leave empty for your own calendars * `sortby` (TEXT, Optional): Sort calendars by field * `includefields` (TEXT, Optional): Comma-separated list of fields to include * `top` (TEXT, Optional): Maximum number of calendars to return **Output:** Returns array of calendars with their details *** ### List Calendar Events ##### `outlookcalendar.listCalendarEvents` List calendar events with filtering by subject, date, organizer, and status. Always include the user's timezone **Requires Confirmation:** No **Parameters:** * `timezone` (TEXT, Optional): IANA timezone identifier for proper time display * `datefrom` (TEXT, Optional): Start date for events in ISO format * `dateto` (TEXT, Optional): End date for events in ISO format * `subjectcontains` (TEXT, Optional): Filter events where subject contains this text * `organizeremail` (TEXT, Optional): Filter events by organizer email address * `calendarowner` (TEXT, Optional): Email address to view someone else's calendar events * `calendarid` (TEXT, Optional): Specific calendar ID to filter events from * `showas` (TEXT, Optional): Filter by availability status: 'free', 'busy', 'tentative', 'outOfOffice' * `includecancelled` (TEXT, Optional): Include cancelled events in results * `sortby` (TEXT, Optional): Sort events by field * `maxEvents` (TEXT, Optional): Maximum number of events to return **Output:** Returns array of events matching the filter criteria *** ### Get Event ##### `outlookcalendar.getEvent` Retrieve a specific event by its ID **Requires Confirmation:** No **Parameters:** * `eventId` (TEXT, Required): The unique ID of the event **Output:** Returns the event details *** ### Delete Event ##### `outlookcalendar.deleteEvent` Delete calendar events by ID or by filtering criteria **Requires Confirmation:** Yes **Parameters:** * `eventId` (TEXT, Optional): The unique ID of a specific event to delete * `attendeeEmail` (TEXT, Optional): Delete all events involving this person as attendee or organizer * `subjectContains` (TEXT, Optional): Delete all events where subject contains this text * `dateFrom` (TEXT, Optional): Start date for deletion range in ISO format * `dateTo` (TEXT, Optional): End date for deletion range in ISO format * `calendarId` (TEXT, Optional): The unique ID of the calendar to delete events from * `maxEvents` (TEXT, Optional): Maximum number of events to delete (safety limit) **Output:** Returns confirmation of deleted events *** ### Get Calendar Settings ##### `outlookcalendar.getCalendarSettings` Retrieve calendar settings including timezone, working hours, and other configurations **Requires Confirmation:** No **Parameters:** None **Output:** Returns calendar settings including timezone and working hours *** ### Find Meeting Times ##### `outlookcalendar.findMeetingTimes` Find available meeting times for yourself and additional participants **Requires Confirmation:** No **Parameters:** * `participantEmail` (TEXT, Optional): Email address of one additional participant * `additionalParticipants` (TEXT, Optional): Comma-separated email addresses for multiple participants * `startTime` (TEXT, Required): Specify the earliest possible start time for the search, formatted in ISO 8601 Date-Time format * `endTime` (TEXT, Required): Latest possible end time in ISO 8601 format * `duration` (TEXT, Required): Specify the duration of the available slot using ISO 8601 format * `timezone` (TEXT, Required): The timezone of the outlook calendar of the user * `minimumAttendeePercentage` (NUMBER, Optional): Minimum percentage of attendees that must be available (1-100) * `maxSuggestions` (NUMBER, Optional): Maximum number of meeting time suggestions to return (1-20) * `activityDomain` (TEXT, Optional): Time search scope: 'work' (business hours), 'personal' (includes weekends), 'unrestricted' (all hours) **Output:** Returns array of available meeting times #### Triggers *** ### New Event Matching Search ##### `outlookcalendar.newEventMatchingSearch` Triggers when new calendar events matching the specified search query are created **Requires Confirmation:** No **Parameters:** * `calendarNames` (TEXT, Optional): Comma-separated list of calendar names to monitor for new events * `searchQuery` (TEXT, Required): Text to search for in event subjects * `daysToInclude` (NUMBER, Optional): Number of days in the future to look for events. Default is 30 days **Output:** Returns the result of the operation *** ### New Event ##### `outlookcalendar.newEvent` Triggers when new calendar events are created in specified calendars **Requires Confirmation:** No **Parameters:** * `calendarNames` (TEXT, Optional): Comma-separated list of calendar names to monitor * `daysToInclude` (NUMBER, Optional): Number of days in the future to look for events **Output:** Returns the result of the operation *** ## Common Use Cases Manage and organize your Outlook Calendar data Automate workflows with Outlook Calendar Generate insights and reports Connect Outlook Calendar with other tools ## Best Practices **Getting Started:** 1. **Prerequisite:** A Microsoft Admin must [approve the Langdock application](/administration/microsoft-admin-approval) in your Microsoft workspace once. 2. Enable the Outlook Calendar integration in your workspace settings 3. Authenticate using OAuth 4. Test the connection with a simple read operation 5. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Outlook Calendar integration, contact [support@langdock.com](mailto:support@langdock.com) # Outlook Email Source: https://docs.langdock.com/administration/integrations/outlook-email Microsoft's email service for personal and business communication ## Overview Microsoft's email service for personal and business communication. Through Langdock's integration, you can access and manage Outlook Email directly from your conversations. **Authentication:** OAuth\ **Category:** Microsoft 365\ **Availability:** All workspace plans ## Available Actions ### Search Own Emails ##### `outlookemail.searchOwnEmails` Search emails in your own mailbox including subfolders **Requires Confirmation:** No **Parameters:** * `searchQuery` (TEXT, Optional): Full-text search using Microsoft Graph \$search parameter. Automatically ordered by relevance * `folderId` (TEXT, Optional): ID of specific folder to search in your mailbox * `top` (NUMBER, Optional): Maximum number of emails to return (default: 50, maximum: 1000) * `includeFields` (TEXT, Optional): Comma-separated list of additional fields to include in response * `includeAttachmentDetails` (BOOLEAN, Optional): Include detailed attachment information in the response * `senderEmail` (TEXT, Optional): Filter by exact sender email address. Cannot be used with search queries * `subjectContains` (TEXT, Optional): Filter emails where subject contains this text (case-insensitive). Cannot be used with search queries * `dateFrom` (TEXT, Optional): Filter emails received on or after this date (ISO 8601 format). Cannot be used with search queries * `dateTo` (TEXT, Optional): Filter emails received on or before this date (ISO 8601 format). Cannot be used with search queries * `isRead` (SELECT, Optional): Filter by read status. Cannot be used with search queries * `isFlagged` (SELECT, Optional): Filter by flagged status. Cannot be used with search queries * `sortBy` (SELECT, Optional): Custom sort order for results. Default: 'Newest first' **Output:** Returns array of emails with their details including subject, body, sender, recipients, and metadata *** ### Draft Reply to Message ##### `outlookemail.draftReplytoMessage` Create a draft reply to an existing email. Use the toggle to choose Reply (sender only) or Reply all (sender and all recipients) **Requires Confirmation:** Yes **Parameters:** * `messageId` (TEXT, Required): ID of the message to reply to * `body` (MULTI\_LINE\_TEXT, Optional): Content of the reply. If HTML is enabled, interpreted as HTML; otherwise sent as a plain text comment * `isHtml` (BOOLEAN, Optional): When enabled, sends the reply body as HTML using message.body; otherwise sends as a simple text comment * `replyAll` (BOOLEAN, Optional): When enabled, sends the reply to the sender and all original recipients * `outlookTimezone` (TEXT, Optional): Optional Prefer header to set timezone for the reply context **Output:** Returns the created draft reply *** ### Send Email ##### `outlookemail.sendEmail` Sends emails on the user's behalf via the Outlook API **Requires Confirmation:** Yes **Parameters:** * `toRecipients` (TEXT, Optional): Comma-separated list of email addresses for primary recipients * `ccRecipients` (TEXT, Optional): Comma-separated list of email addresses for CC recipients * `bccRecipients` (TEXT, Optional): Comma-separated list of email addresses for BCC recipients * `subject` (TEXT, Optional): Subject of the email * `body` (MULTI\_LINE\_TEXT, Optional): The content of the email * `isHtml` (BOOLEAN, Optional): Send email as HTML format. When enabled, the body content will be interpreted as HTML **Output:** Returns the sent email with ID and details *** ### Create Draft ##### `outlookemail.createDraft` Creates email drafts on the user's behalf via the Outlook API with support for multiple recipients, CC, and BCC **Requires Confirmation:** Yes **Parameters:** * `toRecipients` (TEXT, Optional): Comma-separated list of email addresses for primary recipients * `ccRecipients` (TEXT, Optional): Comma-separated list of email addresses for CC recipients * `bccRecipients` (TEXT, Optional): Comma-separated list of email addresses for BCC recipients * `subject` (TEXT, Optional): Subject of the email * `body` (MULTI\_LINE\_TEXT, Optional): The content of the email * `isHtml` (BOOLEAN, Optional): Send email as HTML format. When enabled, the body content will be interpreted as HTML **Output:** Returns the created draft with ID and details *** ### Search Shared Email Folders ##### `outlookemail.searchSharedEmailFolders` Search emails in shared email folders from other users. Requires read access to mailbox and specific folders **Requires Confirmation:** No **Parameters:** * `folderId` (TEXT, Required): ID of the shared folder to search * `sharedFolderOwner` (TEXT, Required): Email address of the user who owns the shared folder * `senderEmail` (TEXT, Optional): Filter by exact sender email address * `subjectContains` (TEXT, Optional): Filter emails where subject contains this text (case-insensitive) * `dateFrom` (TEXT, Optional): Filter emails received on or after this date (ISO 8601 format) * `dateTo` (TEXT, Optional): Filter emails received on or before this date (ISO 8601 format) * `isRead` (SELECT, Optional): Filter by read status * `sortBy` (SELECT, Optional): Sort order for results. Default: 'Newest first' * `top` (NUMBER, Optional): Maximum number of emails to return per page * `includeFields` (TEXT, Optional): Comma-separated list of additional fields to include in response * `includeAttachmentDetails` (BOOLEAN, Optional): Include detailed attachment information in the response **Output:** Returns array of emails from shared folders *** ### List Contacts ##### `outlookemail.listContacts` List contacts from your default Contacts or a specific contact folder **Requires Confirmation:** No **Parameters:** * `contactFolderId` (TEXT, Optional): When provided, lists contacts from this contact folder * `top` (NUMBER, Optional): Maximum number of contacts to return (default: 50, max: 999) * `orderBy` (SELECT, Optional): Sort contacts by a specific field **Output:** Returns array of contacts with their details *** ### Get Contact ##### `outlookemail.getContact` Find and retrieve a specific contact by name, company, or contact ID **Requires Confirmation:** No **Parameters:** * `searchName` (TEXT, Optional): Search for contacts by name (supports partial matches) * `contactId` (TEXT, Optional): Exact contact ID for precise lookup * `companyName` (TEXT, Optional): Filter by company name to help narrow down results * `maxResults` (NUMBER, Optional): Maximum number of contacts to return when searching by name **Output:** Returns array of contacts matching the search criteria *** ### Create Contact ##### `outlookemail.createContact` Create a new contact in your Outlook address book or a specific contact folder **Requires Confirmation:** Yes **Parameters:** * `contactFolderId` (TEXT, Optional): Optional. Create the contact inside a specific contact folder * `givenName` (TEXT, Optional): First name of the contact * `surname` (TEXT, Optional): Last name of the contact * `displayName` (TEXT, Optional): Full display name for the contact * `emailAddresses` (TEXT, Required): Comma-separated list of email addresses for the contact * `businessPhones` (TEXT, Optional): Comma-separated list of business phone numbers * `homePhones` (TEXT, Optional): Comma-separated list of home phone numbers * `mobilePhone` (TEXT, Optional): Mobile phone number * `companyName` (TEXT, Optional): Company or organization * `jobTitle` (TEXT, Optional): Contact's job title * `department` (TEXT, Optional): Department or team * `businessAddressStreet` (TEXT, Optional): Street of the business address * `businessAddressCity` (TEXT, Optional): City of the business address * `businessAddressState` (TEXT, Optional): State/Province of the business address * `businessAddressPostalCode` (TEXT, Optional): Postal/ZIP code of the business address * `businessAddressCountryOrRegion` (TEXT, Optional): Country/Region of the business address * `homeAddressStreet` (TEXT, Optional): Street of the home address * `homeAddressCity` (TEXT, Optional): City of the home address * `homeAddressState` (TEXT, Optional): State/Province of the home address * `homeAddressPostalCode` (TEXT, Optional): Postal/ZIP code of the home address * `homeAddressCountryOrRegion` (TEXT, Optional): Country/Region of the home address * `categories` (TEXT, Optional): Comma-separated list of categories to assign to the contact **Output:** Returns the created contact with ID and details *** ### List Contact Folders ##### `outlookemail.listContactFolders` List all contact folders (default Contacts and subfolders) **Requires Confirmation:** No **Parameters:** * `includeSubfolders` (BOOLEAN, Optional): Include all nested child contact folders (default: true) * `sortByPath` (BOOLEAN, Optional): Sort folders alphabetically by their full path **Output:** Returns array of contact folders with their details *** ### List Folders ##### `outlookemail.listFolders` Lists all mail folders and subfolders in the user's mailbox and shared folders from other users with their IDs and hierarchy **Requires Confirmation:** No **Parameters:** * `includeSubfolders` (BOOLEAN, Optional): Include all subfolders in the hierarchy (default: true) * `includeHidden` (BOOLEAN, Optional): Include hidden folders like Clutter * `sortByPath` (BOOLEAN, Optional): Sort folders alphabetically by their full path * `filterType` (SELECT, Optional): Filter folders by type * `sharedFolderUsers` (TEXT, Optional): Comma-separated list of email addresses of users who have granted you access to their mailbox **Output:** Returns array of folders with their hierarchy and details #### Triggers *** ### New Email ##### `outlookemail.newEmail` Triggers when a new email is received **Requires Confirmation:** No **Parameters:** * `includeAttachments` (BOOLEAN, Optional): When enabled, includes attachment details in the trigger output **Output:** Returns the operation result *** ### New Email Matching Search ##### `outlookemail.newEmailMatchingSearch` Triggers when new emails matching the specified search query are received **Requires Confirmation:** No **Parameters:** * `includeAttachments` (BOOLEAN, Optional): When enabled, includes attachment details in the trigger output * `searchQuery` (TEXT, Required): Microsoft Graph search query to filter emails **Output:** Returns the operation result *** ### New Email in Shared Inbox ##### `outlookemail.newEmailinSharedInbox` Triggers when new emails are received in specified shared inboxes **Requires Confirmation:** No **Parameters:** * `sharedFolderOwners` (TEXT, Required): Comma-separated list of user emails whose shared inboxes to monitor * `folderId` (TEXT, Optional): Folder to monitor within each shared inbox (default: inbox) * `includeAttachments` (BOOLEAN, Optional): When enabled, includes attachment details in the trigger output **Output:** Returns the operation result *** ## Common Use Cases Manage and organize your Outlook Email data Automate workflows with Outlook Email Generate insights and reports Connect Outlook Email with other tools ## Best Practices **Getting Started:** 1. **Prerequisite:** A Microsoft Admin must [approve the Langdock application](/administration/microsoft-admin-approval) in your Microsoft workspace once. 2. Enable the Outlook Email integration in your workspace settings 3. Authenticate using OAuth 4. Test the connection with a simple read operation 5. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Outlook Email integration, contact [support@langdock.com](mailto:support@langdock.com) # Personio Source: https://docs.langdock.com/administration/integrations/personio All-in-one HR software for managing employees, attendance, time accounts, and performance ## Overview All-in-one HR software for managing employees, attendance, time accounts, and performance. Through Langdock's integration, you can access and manage Personio directly from your conversations. **Authentication:** API Key\ **Category:** CRM & Customer Support\ **Availability:** All workspace plans ## Available Actions ### List persons ##### `personio.listpersons` Get a list of persons with optional filters **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Number of persons to return per page (1-50, default: 10) * `cursor` (TEXT, Optional): Pagination cursor for next page of results * `id` (TEXT, Optional): Filter by specific person ID * `email` (TEXT, Optional): Filter by email address * `first_name` (TEXT, Optional): Filter by first name * `last_name` (TEXT, Optional): Filter by last name * `preferred_name` (TEXT, Optional): Filter by preferred name * `created_at` (TEXT, Optional): Filter by creation date (YYYY-MM-DD) * `created_at_gt` (TEXT, Optional): Filter persons created after this date (YYYY-MM-DD) * `created_at_lt` (TEXT, Optional): Filter persons created before this date (YYYY-MM-DD) * `updated_at` (TEXT, Optional): Filter by updated date (YYYY-MM-DD) * `updated_at_gt` (TEXT, Optional): Filter persons updated after this date (YYYY-MM-DD) * `updated_at_lt` (TEXT, Optional): Filter persons updated before this date (YYYY-MM-DD) **Output:** Returns a list of persons with their details including ID, name, email, and employment information *** ### Get person ##### `personio.getperson` Retrieve a single person by ID **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The unique identifier of the employee (e.g. "12345678") **Output:** Returns the specific person details *** ### Create person ##### `personio.createperson` Create a new person and employment **Requires Confirmation:** Yes **Parameters:** * `first_name` (TEXT, Required): First name of the employee * `last_name` (TEXT, Required): Last name of the employee * `email` (TEXT, Optional): Email address of the employee. Must be unique across all employees * `preferred_name` (TEXT, Optional): The preferred name of the employee, if relevant * `gender` (TEXT, Optional): Gender of the employee (e.g. MALE, FEMALE, DIVERSE) * `language_code` (TEXT, Optional): Main language of the employee (e.g. 'de' for German, 'en' for English) * `custom_attributes` (MULTI\_LINE\_TEXT, Optional): Custom attributes as JSON array or object * `employments` (MULTI\_LINE\_TEXT, Optional): Employment details as JSON array **Output:** Returns the created person with their ID and details *** ### Delete person ##### `personio.deleteperson` Delete a person **Requires Confirmation:** Yes **Parameters:** * `id` (TEXT, Required): The unique identifier of the employee to delete (e.g. "12345678") **Output:** Confirmation of deletion *** ### List employments ##### `personio.listemployments` List employments of a given person **Requires Confirmation:** No **Parameters:** * `person_id` (TEXT, Required): The unique identifier of the person (e.g. "12345678") * `limit` (NUMBER, Optional): Number of employments to return per page (1-50, default: 10) * `cursor` (TEXT, Optional): Pagination cursor for next page of results * `id` (TEXT, Optional): Filter by specific employment ID * `updated_at` (TEXT, Optional): Filter by updated date (YYYY-MM-DD) * `updated_at_gt` (TEXT, Optional): Filter employments updated after this date (YYYY-MM-DD) * `updated_at_lt` (TEXT, Optional): Filter employments updated before this date (YYYY-MM-DD) **Output:** Returns a list of employments for the specified person *** ### Get employment ##### `personio.getemployment` Retrieve a single employment by ID **Requires Confirmation:** No **Parameters:** * `person_id` (TEXT, Required): The unique identifier of the person (e.g. "12345678") * `id` (TEXT, Required): The unique identifier of the employment (e.g. "98765432") **Output:** Returns the specific employment details *** ### Update employment ##### `personio.updateemployment` Update an employment record **Requires Confirmation:** Yes **Parameters:** * `person_id` (TEXT, Required): The unique identifier of the person (e.g. "12345678") * `employment_id` (TEXT, Required): The unique identifier of the employment to update * `supervisor` (MULTI\_LINE\_TEXT, Optional): Supervisor object as JSON * `office` (MULTI\_LINE\_TEXT, Optional): Office object as JSON * `org_units` (MULTI\_LINE\_TEXT, Optional): Organization units (department/team) as JSON array * `legal_entity` (MULTI\_LINE\_TEXT, Optional): Legal entity object as JSON * `position` (MULTI\_LINE\_TEXT, Optional): Position object as JSON * `status` (TEXT, Optional): Employment status (e.g. ACTIVE, INACTIVE) * `employment_start_date` (TEXT, Optional): When the employment contract starts (YYYY-MM-DD) * `type` (TEXT, Optional): Type of employment (e.g. INTERNAL, EXTERNAL) * `contract_end_date` (TEXT, Optional): When the employment contract ends, if temporary (YYYY-MM-DD) * `probation_end_date` (TEXT, Optional): When the probation period ends (YYYY-MM-DD) * `probation_period_length` (NUMBER, Optional): Length of probation period in months * `weekly_working_hours` (NUMBER, Optional): Number of hours worked weekly * `full_time_weekly_working_hours` (NUMBER, Optional): Hours per week considered full time for this employment * `cost_centers` (MULTI\_LINE\_TEXT, Optional): Weight distribution between cost centers as JSON array with percentages **Output:** Returns the updated employment details *** ### Update person ##### `personio.updateperson` Update a person's information **Requires Confirmation:** Yes **Parameters:** * `id` (TEXT, Required): The unique identifier of the employee to update (e.g. "12345678") * `email` (TEXT, Optional): Email address of the employee. Must be unique across all employees * `first_name` (TEXT, Optional): First name of the employee * `last_name` (TEXT, Optional): Last name of the employee * `preferred_name` (TEXT, Optional): The preferred name of the employee, if relevant * `gender` (TEXT, Optional): Gender of the employee (e.g. MALE, FEMALE, DIVERSE) * `language_code` (TEXT, Optional): Main language of the employee (e.g. 'de' for German, 'en' for English) * `custom_attributes` (MULTI\_LINE\_TEXT, Optional): Custom attributes as JSON array or object **Output:** Returns the updated person details *** ### Get attendance ##### `personio.getattendance` Get attendance records with date range and employee filtering **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Maximum number of attendance periods to return (1-100, default: 100) * `cursor` (TEXT, Optional): Pagination cursor for next page of results * `id` (TEXT, Optional): Filter by attendance period IDs (comma-separated for multiple) * `person_id` (TEXT, Optional): Filter by person IDs (comma-separated for multiple) * `start_gte` (TEXT, Optional): Filter periods starting from this date-time (ISO-8601) * `start_lte` (TEXT, Optional): Filter periods starting before or at this date-time (ISO-8601) * `end_lte` (TEXT, Optional): Filter periods ending before or at this date-time (ISO-8601) * `end_gte` (TEXT, Optional): Filter periods ending after or at this date-time (ISO-8601) * `updated_at_gte` (TEXT, Optional): Filter periods updated after or at this date-time (ISO-8601) * `updated_at_lte` (TEXT, Optional): Filter periods updated before or at this date-time (ISO-8601) * `status` (TEXT, Optional): Filter by attendance period status **Output:** Returns a list of attendance records with details *** ### Get attendance period ##### `personio.getattendanceperiod` Retrieve a single attendance period by ID **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The ID of the attendance period to retrieve **Output:** Returns the specific attendance period details *** ### Create attendance ##### `personio.createattendance` Create a new attendance entry for an employee **Requires Confirmation:** Yes **Parameters:** * `person_id` (TEXT, Required): The person's unique identifier * `type` (TEXT, Required): Attendance period type: WORK or BREAK * `start` (MULTI\_LINE\_TEXT, Required): Start date/time as JSON: `{"date_time": "2024-01-01T09:00:00"}` * `end` (MULTI\_LINE\_TEXT, Optional): End date/time as JSON: `{"date_time": "2024-01-01T17:00:00"}` * `comment` (TEXT, Optional): Optional comment for the attendance period * `project_id` (TEXT, Optional): Project ID (only for WORK periods, must be ACTIVE) * `skip_approval` (BOOLEAN, Optional): Skip any approval that this request would otherwise require (default: false) **Output:** Returns the created attendance record *** ### Update attendance period ##### `personio.updateattendanceperiod` Update an attendance period by ID **Requires Confirmation:** Yes **Parameters:** * `id` (TEXT, Required): The ID of the attendance period to update * `type` (TEXT, Optional): Attendance period type: WORK or BREAK * `start` (MULTI\_LINE\_TEXT, Optional): Start date/time as JSON: `{"date_time": "2024-01-01T09:00:00"}` * `end` (MULTI\_LINE\_TEXT, Optional): End date/time as JSON: `{"date_time": "2024-01-01T17:00:00"}` * `comment` (TEXT, Optional): Optional comment for the attendance period * `project_id` (TEXT, Optional): Project ID (only for WORK periods, must be ACTIVE, or null to remove) * `skip_approval` (BOOLEAN, Optional): Skip any approval that this request would otherwise require (default: false) **Output:** Returns the updated attendance period details *** ### Delete attendance period ##### `personio.deleteattendanceperiod` Delete an attendance period by ID **Requires Confirmation:** Yes **Parameters:** * `id` (TEXT, Required): The ID of the attendance period to delete **Output:** Confirmation of deletion *** ### Create absence period ##### `personio.createabsenceperiod` Creates a new absence period **Requires Confirmation:** Yes **Parameters:** * `person_id` (TEXT, Required): The person's unique identifier * `absence_type_id` (TEXT, Required): The ID of the absence type (UUID format) * `starts_from` (MULTI\_LINE\_TEXT, Required): Start of absence as JSON: `{"date_time": "2025-12-29T00:00:00", "type": "FIRST_HALF"}` * `ends_at` (MULTI\_LINE\_TEXT, Optional): End of absence as JSON: `{"date_time": "2026-01-01T00:00:00", "type": "SECOND_HALF"}` * `comment` (TEXT, Optional): Optional comment for the absence period * `skip_approval` (BOOLEAN, Optional): Skip any approval that this request would otherwise require (default: false) **Output:** Returns the created absence period details *** ### List compensation types ##### `personio.listcompensationtypes` Returns a list of compensation types including one-time and recurring types **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Number of compensation types to return per page (1-100, default: 100) * `cursor` (TEXT, Optional): Pagination cursor for next page of results **Output:** Returns a list of compensation types *** ### Create compensation type ##### `personio.createcompensationtype` Creates a new compensation type that can be used when creating compensations **Requires Confirmation:** Yes **Parameters:** * `name` (TEXT, Required): Name of the compensation type * `category` (TEXT, Required): Payout frequency: ONE\_TIME or RECURRING **Output:** Returns the created compensation type details *** ### Create compensation ##### `personio.createcompensation` Creates a compensation for an employee (one-time, recurring, fixed, or hourly). Bonuses not supported **Requires Confirmation:** Yes **Parameters:** * `person_id` (TEXT, Required): The person ID or person object as JSON `{"id": "12345678"}` * `type_id` (TEXT, Required): The compensation type ID or type object as JSON `{"id": "uuid"}` * `value` (NUMBER, Required): Amount in currency's numeric unit with up to 2 decimal places * `effective_from` (TEXT, Required): The effective start date of the compensation (YYYY-MM-DD) * `interval` (TEXT, Optional): Payout interval: MONTHLY, YEARLY (mandatory for RECURRING, ignored for ONE\_TIME) * `comment` (TEXT, Optional): Optional comment about this compensation **Output:** Returns the created compensation details *** ### List legal entities ##### `personio.listlegalentities` Returns a list of legal entities for the company, sorted by creation date **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Optional): Filter by one or more legal entity IDs (comma-separated for multiple) * `country` (TEXT, Optional): Filter by country codes (comma-separated for multiple, e.g. DE,US) * `limit` (NUMBER, Optional): Number of legal entities to return per page (1-100, default: 20) * `cursor` (TEXT, Optional): Pagination cursor for next page of results **Output:** Returns a list of legal entities *** ### Get legal entity ##### `personio.getlegalentity` Retrieves a single legal entity by ID **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The ID of the legal entity to retrieve **Output:** Returns the specific legal entity details *** ### Get org unit ##### `personio.getorgunit` Retrieves an organizational unit (team or department) by ID. Get org unit IDs from list\_employments or get\_employment responses **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The ID of the Org Unit to retrieve. Get this from list\_employments or employment records * `type` (TEXT, Required): The type of the Org Unit (e.g. team or department) * `include_parent_chain` (BOOLEAN, Optional): Include the parent org unit chain in the response (default: false) **Output:** Returns the organizational unit details *** ### List absence periods ##### `personio.listabsenceperiods` Returns a list of absence periods with pagination and filtering **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Maximum number of absence periods to return (1-100, default: 100) * `cursor` (TEXT, Optional): Pagination cursor for next page of results * `id` (TEXT, Optional): Filter by one or more absence period IDs * `absence_type_id` (TEXT, Optional): Filter by one or more absence type IDs * `person_id` (TEXT, Optional): Filter by one or more person IDs * `starts_from_gte` (TEXT, Optional): Filter periods starting from this date-time (inclusive, ISO-8601) * `starts_from_lte` (TEXT, Optional): Filter periods starting before or at this date-time (ISO-8601) * `ends_at_lte` (TEXT, Optional): Filter periods ending before or at this date-time (ISO-8601) * `ends_at_gte` (TEXT, Optional): Filter periods ending after or at this date-time (ISO-8601) * `updated_at_gte` (TEXT, Optional): Filter periods updated after or at this date-time (ISO-8601) * `updated_at_lte` (TEXT, Optional): Filter periods updated before or at this date-time (ISO-8601) **Output:** Returns a list of absence periods *** ### Get absence period ##### `personio.getabsenceperiod` Retrieves an absence period by ID. Get absence period IDs from list\_absence\_periods or create\_absence responses **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The ID of the absence period to retrieve. Get this from list\_absence\_periods or create\_absence responses **Output:** Returns the specific absence period details *** ### Update absence period ##### `personio.updateabsenceperiod` Updates an absence period by ID **Requires Confirmation:** Yes **Parameters:** * `id` (TEXT, Required): The ID of the absence period to update * `starts_from` (MULTI\_LINE\_TEXT, Optional): Start of absence period as JSON object: `{"date_time": "2025-12-29T00:00:00", "type": "FIRST_HALF"}` * `ends_at` (MULTI\_LINE\_TEXT, Optional): End of absence period as JSON object: `{"date_time": "2026-01-01T00:00:00", "type": "SECOND_HALF"}` * `comment` (TEXT, Optional): Optional comment for the absence period * `skip_approval` (BOOLEAN, Optional): Skip any approval that this update would otherwise require (default: false) **Output:** Returns the updated absence period details *** ### Delete absence period ##### `personio.deleteabsenceperiod` Deletes an absence period by ID **Requires Confirmation:** Yes **Parameters:** * `id` (TEXT, Required): The ID of the absence period to delete **Output:** Confirmation of deletion *** ### Get absence period breakdowns ##### `personio.getabsenceperiodbreakdowns` Retrieves daily breakdowns for an absence period **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The ID of the absence period * `limit` (NUMBER, Optional): Number of breakdown days to return (1-28, default: 28) * `cursor` (TEXT, Optional): Pagination cursor for next page of results **Output:** Returns daily breakdowns for the absence period *** ### Get time off types ##### `personio.gettimeofftypes` Get all available time off types **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Maximum number of absence types to return (1-100, default: 100) * `cursor` (TEXT, Optional): Pagination cursor for next page of results **Output:** Returns a list of time off types *** ### Get absence type ##### `personio.getabsencetype` Retrieves an absence type by ID **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The ID of the absence type (UUID format) **Output:** Returns the specific absence type details *** ### List documents ##### `personio.listdocuments` Lists the metadata of documents belonging to the provided owner ID **Requires Confirmation:** No **Parameters:** * `owner_id` (TEXT, Required): The ID of the owner of the documents * `category_id` (TEXT, Optional): The ID of the category in which the documents belong * `created_at_gte` (TEXT, Optional): Filter documents created on or after this date (YYYY-MM-DD) * `created_at_lt` (TEXT, Optional): Filter documents created before this date (YYYY-MM-DD) * `limit` (NUMBER, Optional): Number of documents to return (1-200, default: 100) * `cursor` (TEXT, Optional): Pagination cursor for next page of results **Output:** Returns a list of documents *** ### Delete document ##### `personio.deletedocument` Deletes a document with the provided document ID **Requires Confirmation:** Yes **Parameters:** * `document_id` (TEXT, Required): The ID of the document to delete **Output:** Confirmation of deletion *** ### List compensations ##### `personio.listcompensations` Returns payroll compensations including salary, hourly, one-time, recurring, and bonuses **Requires Confirmation:** No **Parameters:** * `start_date` (TEXT, Optional): Start date for compensations (YYYY-MM-DD). Duration with end\_date must be ≤ 1 month * `end_date` (TEXT, Optional): End date for compensations (YYYY-MM-DD). Duration with start\_date must be ≤ 1 month * `person_id` (TEXT, Optional): Filter by one or more person IDs (comma-separated for multiple) * `legal_entity_id` (TEXT, Optional): Filter by one or more legal entity IDs (comma-separated for multiple) * `limit` (NUMBER, Optional): Number of compensations to return per page (1-100, default: 100) * `cursor` (TEXT, Optional): Pagination cursor for next page of results **Output:** Returns a list of compensations *** ### Search person by email ##### `personio.searchpersonbyemail` Find a person by their email address **Requires Confirmation:** No **Parameters:** * `email` (TEXT, Required): The email address of the employee to search for **Output:** Returns the person details if found *** ### Get time off balance ##### `personio.gettimeoffbalance` Get the time off balance for a person **Requires Confirmation:** No **Parameters:** * `employeeId` (TEXT, Required): The unique identifier of the employee **Output:** Returns the time off balance details *** ### Get custom attributes ##### `personio.getcustomattributes` Get the list of custom attributes defined in Personio **Requires Confirmation:** No **Parameters:** None **Output:** Returns a list of custom attributes *** ### List applications ##### `personio.listapplications` Get a list of recruiting applications with optional filters **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Number of applications to return (1-200, default: 100) * `cursor` (TEXT, Optional): Pagination cursor for next page of results * `updated_at_lt` (TEXT, Optional): Return applications updated before this date/time (ISO 8601 format). Cannot be used with 'Updated after' * `updated_at_gt` (TEXT, Optional): Return applications updated after this date/time (ISO 8601 format). Cannot be used with 'Updated before' * `candidate_email` (TEXT, Optional): Filter applications by candidate email address **Output:** Returns a list of recruiting applications *** ### Get application ##### `personio.getapplication` Retrieve a recruiting application by ID **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The unique identifier of the application **Output:** Returns the specific application details *** ### Get application stage transitions ##### `personio.getapplicationstagetransitions` Get the history of stage transitions for a recruiting application **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The unique identifier of the application **Output:** Returns the stage transition history *** ### List candidates ##### `personio.listcandidates` Get a list of recruiting candidates with optional filters **Requires Confirmation:** Yes **Parameters:** * `limit` (NUMBER, Optional): Number of candidates to return (1-200, default: 100) * `cursor` (TEXT, Optional): Pagination cursor for next page of results * `updated_at_lt` (TEXT, Optional): Return candidates updated before this date/time (ISO 8601 format). Cannot be used with 'Updated after' * `updated_at_gt` (TEXT, Optional): Return candidates updated after this date/time (ISO 8601 format). Cannot be used with 'Updated before' * `email` (TEXT, Optional): Filter candidates by email address **Output:** Returns a list of recruiting candidates *** ### Get candidate ##### `personio.getcandidate` Retrieve a recruiting candidate by ID **Requires Confirmation:** Yes **Parameters:** * `id` (TEXT, Required): The unique identifier of the candidate **Output:** Returns the specific candidate details *** ### List jobs ##### `personio.listjobs` Get a list of recruiting jobs with optional filters **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Number of jobs to return (1-200, default: 100) * `cursor` (TEXT, Optional): Pagination cursor for next page of results * `updated_at_lt` (TEXT, Optional): Return jobs updated before this date/time (ISO 8601 format). Cannot be used with 'Updated after' * `updated_at_gt` (TEXT, Optional): Return jobs updated after this date/time (ISO 8601 format). Cannot be used with 'Updated before' **Output:** Returns a list of recruiting jobs *** ### Get job ##### `personio.getjob` Retrieve a recruiting job by ID **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The unique identifier of the job **Output:** Returns the specific job details *** ### List job categories ##### `personio.listjobcategories` Get all recruiting job categories **Requires Confirmation:** No **Parameters:** None **Output:** Returns a list of job categories *** ### Get job category ##### `personio.getjobcategory` Retrieve a recruiting job category by ID **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Required): The unique identifier of the job category **Output:** Returns the specific job category details *** ### List cost centers ##### `personio.listcostcenters` Get a list of cost centers with filtering, sorting, and pagination **Requires Confirmation:** Yes **Parameters:** * `id` (TEXT, Optional): Filter by one or more cost center IDs (comma-separated) * `name` (TEXT, Optional): Filter by one or more cost center names (comma-separated) * `sort` (TEXT, Optional): Sort results by field. Use field name for ascending (e.g., 'name') or minus sign for descending (e.g., '-name'). Options: id, -id, name, -name * `limit` (NUMBER, Optional): Number of cost centers to return (1-100, default: 50) * `cursor` (TEXT, Optional): Pagination cursor for next page of results **Output:** Returns a list of cost centers *** ### List workplaces ##### `personio.listworkplaces` Get a list of workplaces with filtering, sorting, and pagination **Requires Confirmation:** No **Parameters:** * `id` (TEXT, Optional): Filter by one or more workplace IDs (comma-separated) * `name` (TEXT, Optional): Filter by one or more workplace names (comma-separated) * `sort` (TEXT, Optional): Sort results by field. Use field name for ascending (e.g., 'name') or minus sign for descending (e.g., '-name'). Options: id, -id, name, -name * `limit` (NUMBER, Optional): Number of workplaces to return (1-100, default: 50) * `cursor` (TEXT, Optional): Pagination cursor for next page of results **Output:** Returns a list of workplaces *** ## Common Use Cases Manage and organize your Personio data Automate workflows with Personio Generate insights and reports Connect Personio with other tools ## Best Practices **Getting Started:** 1. Enable the Personio integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Personio integration, contact [support@langdock.com](mailto:support@langdock.com) # Pinecone Source: https://docs.langdock.com/administration/integrations/pinecone The vector database for machine learning applications ## Overview The vector database for machine learning applications. Through Langdock's integration, you can access and manage Pinecone directly from your conversations. **Authentication:** API Key\ **Category:** AI & Search\ **Availability:** All workspace plans ## Available Actions ### Search Namespace ##### `pinecone.searchNamespace` Searches the database for the most relevant information based on the query provided **Requires Confirmation:** No **Parameters:** * `query` (VECTOR, Required): Vector query for similarity search **Output:** Returns search results with matching vectors, metadata, and similarity scores *** ## Common Use Cases Manage and organize your Pinecone data Automate workflows with Pinecone Generate insights and reports Connect Pinecone with other tools ## Best Practices **Getting Started:** 1. Enable the Pinecone integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Pinecone integration, contact [support@langdock.com](mailto:support@langdock.com) # Microsoft Planner Source: https://docs.langdock.com/administration/integrations/planner Microsoft's task management and collaboration platform for teams ## Overview Microsoft's task management and collaboration platform for teams. Through Langdock's integration, you can access and manage Microsoft Planner directly from your conversations. **Authentication:** OAuth\ **Category:** Microsoft 365\ **Availability:** All workspace plans ## Available Actions ### List Plans ##### `microsoftplanner.listPlans` Retrieve all Planner plans that the user has access to **Requires Confirmation:** No **Parameters:** * `groupId` (TEXT, Optional): ID of the Microsoft 365 group to get plans from. Leave empty to get plans from all accessible groups * `includeDetails` (BOOLEAN, Optional): Include additional plan details such as categories and shared information **Output:** Returns a list of plans with their details *** ### Create Plan ##### `microsoftplanner.createPlan` Create a new Planner plan in a Microsoft 365 group **Requires Confirmation:** No **Parameters:** * `groupId` (TEXT, Required): ID of the Microsoft 365 group where the plan will be created. The user must be a member of this group * `title` (TEXT, Required): Title of the new plan **Output:** Returns the created plan details *** ### Get Plan ##### `microsoftplanner.getPlan` Retrieve details of a specific Planner plan **Requires Confirmation:** No **Parameters:** * `planId` (TEXT, Required): ID of the plan to retrieve * `includeDetails` (BOOLEAN, Optional): Include additional plan details such as categories and shared information **Output:** Returns the plan details *** ### List Tasks ##### `microsoftplanner.listTasks` Retrieve tasks from a Planner plan **Requires Confirmation:** No **Parameters:** * `planId` (TEXT, Required): ID of the plan to get tasks from * `includeDetails` (BOOLEAN, Optional): Include additional task details such as description, checklist, and references **Output:** Returns a list of tasks from the plan *** ### Create Task ##### `microsoftplanner.createTask` Create a new task in a Planner plan **Requires Confirmation:** No **Parameters:** * `planId` (TEXT, Required): ID of the plan where the task will be created * `planTitle` (TEXT, Optional): Optional. If no Plan ID is provided, resolve the plan by exact title across your accessible groups. If multiple matches exist, return an error with candidates * `title` (TEXT, Required): Title of the new task * `bucketId` (TEXT, Optional): ID of the bucket where the task will be placed. Leave empty to place in the default bucket * `bucketName` (TEXT, Optional): Optional. If no Bucket ID is provided, resolve the bucket by exact name. If not found, the task will be created in the plan's default bucket * `assignedToUserId` (TEXT, Optional): User ID to assign the task to. Leave empty to create an unassigned task * `assignedToEmail` (TEXT, Optional): Email address (UPN) of the user to assign the task to. Leave empty to create an unassigned task * `assignToMe` (BOOLEAN, Optional): If true and no other assignee is provided, assign the task to the current user * `dueDateTime` (TEXT, Optional): ISO 8601 with timezone required (UTC 'Z' or offset), e.g., 2025-08-13T17:00:00Z or 2025-08-13T17:00:00+02:00 * `priority` (SELECT, Optional): Priority level of the task (Urgent, Important, Medium, Low) **Output:** Returns the created task details *** ### Update Task ##### `microsoftplanner.updateTask` Update an existing task in a Planner plan **Requires Confirmation:** No **Parameters:** * `taskId` (TEXT, Required): ID of the task to update * `title` (TEXT, Optional): New title for the task. Leave empty to keep current title * `percentComplete` (NUMBER, Optional): Completion percentage (0-100). Set to 100 to mark as completed * `dueDateTime` (TEXT, Optional): ISO 8601 with timezone required (UTC 'Z' or offset), e.g., 2025-08-13T17:00:00Z or 2025-08-13T17:00:00+02:00. Leave empty to keep current due date * `priority` (SELECT, Optional): New priority level of the task. Leave empty to keep current priority * `assignToMe` (BOOLEAN, Optional): If true and no other assignee is provided, assign the task to the current user * `assignedToEmail` (TEXT, Optional): Email address (UPN) of the user to assign the task to. Leave empty to keep current assignments * `assignedToUserId` (TEXT, Optional): User ID to assign the task to. Leave empty to keep current assignments **Output:** Returns the updated task details *** ### List Buckets ##### `microsoftplanner.listBuckets` Retrieve all buckets from a Planner plan **Requires Confirmation:** No **Parameters:** * `planId` (TEXT, Required): ID of the plan to get buckets from **Output:** Returns a list of buckets from the plan *** ### Create Bucket ##### `microsoftplanner.createBucket` Create a new bucket in a Planner plan for organizing tasks **Requires Confirmation:** No **Parameters:** * `planId` (TEXT, Required): ID of the plan where the bucket will be created * `name` (TEXT, Required): Name of the new bucket **Output:** Returns the created bucket details *** ### Get Task Comments ##### `microsoftplanner.getTaskComments` Retrieve all comments from a Planner task's conversation thread **Requires Confirmation:** No **Parameters:** * `taskId` (TEXT, Required): ID of the task to get comments from * `includeEmpty` (BOOLEAN, Optional): Include comments that have no text content (system messages, etc.) **Output:** Returns task comments #### Triggers *** ### New Task ##### `microsoftplanner.newTask` Triggers when a new task is created in a specified plan **Requires Confirmation:** No **Parameters:** * `planId` (TEXT, Required): ID of the plan to monitor for new tasks * `assignedToUserId` (TEXT, Optional): Only trigger for tasks assigned to this user ID. Leave empty to monitor all tasks * `filterByAssigneeEmail` (TEXT, Optional): Only trigger for tasks assigned to this email address (UPN). Leave empty to monitor all tasks **Output:** Returns the operation result *** ### Task Completed ##### `microsoftplanner.taskCompleted` Triggers when a task is marked as completed (100% progress) in a specified plan **Requires Confirmation:** No **Parameters:** * `planId` (TEXT, Required): ID of the plan to monitor for completed tasks **Output:** Returns the operation result *** ## Common Use Cases Manage and organize your Microsoft Planner data Automate workflows with Microsoft Planner Generate insights and reports Connect Microsoft Planner with other tools ## Best Practices **Getting Started:** 1. **Prerequisite:** A Microsoft Admin must [approve the Langdock application](/administration/microsoft-admin-approval) in your Microsoft workspace once. 2. Enable the Microsoft Planner integration in your workspace settings 3. Authenticate using OAuth 4. Test the connection with a simple read operation 5. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Microsoft Planner integration, contact [support@langdock.com](mailto:support@langdock.com) # Power BI Source: https://docs.langdock.com/administration/integrations/power-bi Microsoft Power BI REST API integration for datasets, reports, and workspaces ## Overview Microsoft Power BI REST API integration for datasets, reports, and workspaces. Through Langdock's integration, you can access and manage Power BI directly from your conversations. **Authentication:** OAuth\ **Category:** Data & Analytics\ **Availability:** All workspace plans ## Available Actions ### List Workspaces ##### `powerbi.list_workspaces` List workspaces (groups) the user has access to. **Requires Confirmation:** No **Parameters:** None **Output:** Returns a JSON array of workspaces with workspace metadata *** ### List Datasets ##### `powerbi.list_datasets` List datasets in My Workspace or a specified workspace. **Requires Confirmation:** No **Parameters:** * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, lists datasets from My Workspace **Output:** Returns a JSON array of datasets with dataset metadata *** ### List Dataset Tables ##### `powerbi.list_dataset_tables` List tables for a dataset to discover exact table and column names before writing DAX. Note: Only works for push API datasets. **Requires Confirmation:** No **Parameters:** * `datasetId` (TEXT, Required): The Power BI dataset ID (GUID) **Output:** Returns a JSON object with table definitions including columns and measures *** ### Execute DAX Query ##### `powerbi.execute_dax_query` Run a DAX (SQL-like) query against a Power BI dataset using the Execute Queries API. **Requires Confirmation:** Yes **Parameters:** * `datasetId` (TEXT, Required): The Power BI dataset ID to query (GUID) * `query` (MULTI\_LINE\_TEXT, Required): DAX query text. Example: `EVALUATE ROW("Total Sales", [Total Sales])` or full DAX EVALUATE expression **Output:** Returns query results with table data from the executed DAX query *** ### Search Datasets ##### `powerbi.search_datasets` Searches for Power BI datasets by name. **Requires Confirmation:** No **Parameters:** * `searchTerm` (TEXT, Required): The term to search for in dataset names * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, searches My Workspace **Output:** Returns matching datasets with id, name, configuredBy, isRefreshable, createdDate, webUrl, and total counts *** ### List Reports ##### `powerbi.list_reports` List reports in a workspace or in My Workspace. **Requires Confirmation:** No **Parameters:** * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, lists reports from My Workspace **Output:** Returns a JSON array of reports with report metadata *** ### List Report Pages ##### `powerbi.list_report_pages` List pages for a report. **Requires Confirmation:** No **Parameters:** * `reportId` (TEXT, Required): The report ID (GUID) * `groupId` (TEXT, Optional): Workspace (Group ID) if the report is in a workspace **Output:** Returns a JSON array of report pages with page details *** ### Search Reports ##### `powerbi.search_reports` Searches for Power BI reports by name or description. **Requires Confirmation:** No **Parameters:** * `searchTerm` (TEXT, Required): The term to search for in report names and descriptions * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, searches My Workspace **Output:** Returns matching reports with id, name, description, webUrl, embedUrl, datasetId, and timestamps *** ### Export Report to File (Initiate) ##### `powerbi.export_report_to_file_initiate` Initiates a Power BI report export job. Returns export ID for use with the fetch action. **Requires Confirmation:** Yes **Parameters:** * `reportId` (TEXT, Required): The report ID (GUID) * `format` (SELECT, Required): Export format (PDF, PPTX, PNG) * `groupId` (TEXT, Optional): Workspace (Group ID) that contains the report. If omitted, exports from My Workspace **Output:** Returns export job details with exportId, groupId, reportId, and format *** ### Export Paginated Report (Initiate) ##### `powerbi.export_paginated_report_initiate` Initiates a Power BI paginated report export job. Supports more formats than regular reports including XLSX, CSV, DOCX. **Requires Confirmation:** Yes **Parameters:** * `reportId` (TEXT, Required): The paginated report ID (GUID) * `format` (SELECT, Required): Export format (PDF, XLSX, DOCX, CSV) * `groupId` (TEXT, Optional): Workspace (Group ID) that contains the report * `reportParameters` (OBJECT, Optional): Parameters to pass to the report as key-value pairs (JSON object). Example: `{"StartDate": "2024-01-01", "EndDate": "2024-12-31"}` * `csvDelimiter` (TEXT, Optional): Delimiter for CSV export (default is comma, max 1 character) * `csvEncoding` (SELECT, Optional): Encoding for CSV export (UTF-8, UTF-16) * `imageFormat` (SELECT, Optional): When format is IMAGE, specify the image type (JPEG, PNG) **Output:** Returns export job initiation response with export ID and configuration *** ### Export Report to File (Fetch) ##### `powerbi.export_report_to_file_fetch` Fetches a Power BI report export by checking status and downloading the file if ready. **Requires Confirmation:** No **Parameters:** * `reportId` (TEXT, Required): The report ID (GUID) * `exportId` (TEXT, Required): The export ID returned from the initiate action * `groupId` (TEXT, Optional): Workspace (Group ID) that contains the report. If omitted, fetches from My Workspace **Output:** Returns export file object or status information *** ### List Dashboards ##### `powerbi.list_dashboards` List dashboards in a workspace or in My Workspace. **Requires Confirmation:** No **Parameters:** * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, lists dashboards from My Workspace **Output:** Returns a JSON array of dashboards with dashboard metadata *** ### List Dashboard Tiles ##### `powerbi.list_dashboard_tiles` List tiles on a dashboard. **Requires Confirmation:** No **Parameters:** * `dashboardId` (TEXT, Required): The dashboard ID (GUID) * `groupId` (TEXT, Optional): Workspace (Group ID) if the dashboard is in a workspace **Output:** Returns a JSON array of dashboard tiles with tile metadata *** ### Get Dataset Details ##### `powerbi.get_dataset_details` Gets detailed information about a specific Power BI dataset. **Requires Confirmation:** No **Parameters:** * `datasetId` (TEXT, Required): The dataset ID (GUID) * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, uses My Workspace **Output:** Returns detailed dataset information including id, name, configuredBy, isRefreshable, targetStorageMode, createdDate, webUrl, and more *** ### Get Report Details ##### `powerbi.get_report_details` Gets detailed information about a specific Power BI report. **Requires Confirmation:** No **Parameters:** * `reportId` (TEXT, Required): The report ID (GUID) * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, uses My Workspace **Output:** Returns detailed report metadata object *** ### Get Dashboard Details ##### `powerbi.get_dashboard_details` Gets detailed information about a specific Power BI dashboard. **Requires Confirmation:** No **Parameters:** * `dashboardId` (TEXT, Required): The dashboard ID (GUID) * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, uses My Workspace **Output:** Returns detailed dashboard metadata object *** ### Get Tile Details ##### `powerbi.get_tile_details` Gets detailed information about a specific Power BI dashboard tile. **Requires Confirmation:** No **Parameters:** * `dashboardId` (TEXT, Required): The dashboard ID (GUID) * `tileId` (TEXT, Required): The tile ID (GUID) * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, uses My Workspace **Output:** Returns detailed tile metadata object *** ### Get Table Sample ##### `powerbi.get_table_sample` Gets a sample of data from a specific table in a Power BI dataset. **Requires Confirmation:** No **Parameters:** * `datasetId` (TEXT, Required): The dataset ID (GUID) * `tableName` (TEXT, Required): The name of the table to sample (e.g., "Sales") * `sampleSize` (TEXT, Optional): Number of rows to sample (default: 100) **Output:** Returns table sample with columns, sampleData rows, rowCount, columnCount, and metadata *** ### Get Table Count ##### `powerbi.get_table_count` Gets the row count of a specific table in a Power BI dataset. **Requires Confirmation:** No **Parameters:** * `datasetId` (TEXT, Required): The dataset ID (GUID) * `tableName` (TEXT, Required): The name of the table to count (e.g., "Sales") **Output:** Returns the row count for the specified table *** ### Get Dataset Schema ##### `powerbi.get_dataset_schema` Gets the complete schema of a Power BI dataset including tables, columns, measures, and relationships. **Requires Confirmation:** No **Parameters:** * `datasetId` (TEXT, Required): The dataset ID (GUID) * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, uses My Workspace **Output:** Returns comprehensive schema with dataset metadata, tables with columns and measures, parameters, and summary statistics *** ### Get Dataset Dependencies ##### `powerbi.get_dataset_dependencies` Gets reports and dashboards that use a specific Power BI dataset. **Requires Confirmation:** No **Parameters:** * `datasetId` (TEXT, Required): The dataset ID (GUID) * `groupId` (TEXT, Optional): Workspace (Group ID). If omitted, uses My Workspace **Output:** Returns list of objects (reports and dashboards) that reference the dataset *** ## Common Use Cases Manage and organize your Power BI data Automate workflows with Power BI Generate insights and reports Connect Power BI with other tools ## Best Practices **Getting Started:** 1. Enable the Power BI integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Power BI integration, contact [support@langdock.com](mailto:support@langdock.com) # Pylon Source: https://docs.langdock.com/administration/integrations/pylon Pylon is a B2B customer support platform that helps teams manage support tickets across multiple channels including Slack, Email, Microsoft Teams, and more ## Overview Pylon is a B2B customer support platform that helps teams manage support tickets across multiple channels including Slack, Email, Microsoft Teams, and more. Through Langdock's integration, you can access and manage Pylon directly from your conversations. **Authentication:** API Key\ **Category:** CRM & Customer Support\ **Availability:** All workspace plans ## Available Actions ### Get Issue ##### `pylon.getIssue` Retrieve details of a specific issue by ID or ticket number **Requires Confirmation:** No **Parameters:** * `issueIdOrTicketNumber` (TEXT, Required): The unique identifier or ticket number of the issue **Output:** Returns the issue details with cleaned HTML content *** ### Search Issues ##### `pylon.searchIssues` Search for issues with advanced filtering capabilities **Requires Confirmation:** No **Parameters:** * `filterField` (SELECT, Optional): The field to filter by (created\_at, account\_id, ticket\_form\_id, requester\_id, follower\_user\_id, follower\_contact\_id, state, tags, title, body\_html, or custom field slug) * `filterOperator` (SELECT, Optional): The operator to use for filtering (equals, in, not\_in, contains, does\_not\_contain, string\_contains, string\_does\_not\_contain, time\_is\_after, time\_is\_before, time\_range) * `filterValue` (TEXT, Optional): The value to filter by (for single value operators like equals, string\_contains, time\_is\_after, time\_is\_before) * `filterValues` (TEXT, Optional): JSON array of values for operators: in, not\_in, contains, does\_not\_contain * `startTime` (TEXT, Optional): Start time for time\_range operator (RFC3339 format) * `endTime` (TEXT, Optional): End time for time\_range operator (RFC3339 format) * `cursor` (TEXT, Optional): Cursor for pagination * `limit` (NUMBER, Optional): Number of issues to fetch (1-1000, default 100) **Output:** Returns a list of issues matching the search criteria *** ### Create Issue ##### `pylon.createIssue` Create a new issue **Requires Confirmation:** Yes **Parameters:** * `title` (TEXT, Required): The title of the issue * `bodyHtml` (MULTI\_LINE\_TEXT, Optional): The HTML content of the issue. Use HTML tags `(e.g.,

                  , ,

                    )`. Markdown syntax will NOT be rendered * `accountId` (TEXT, Optional): The ID of the account associated with this issue * `assigneeId` (TEXT, Optional): The ID of the user to assign this issue to * `teamId` (TEXT, Optional): The ID of the team to assign this issue to * `priority` (SELECT, Optional): The priority of the issue (low, medium, high, urgent) * `requesterEmail` (TEXT, Optional): Email of the person requesting this issue * `requesterId` (TEXT, Optional): ID of the requester * `requesterName` (TEXT, Optional): Name of the requester * `requesterAvatarUrl` (TEXT, Optional): URL to the requester's avatar image * `tags` (TEXT, Optional): Tags for the issue (JSON array) * `customFields` (TEXT, Optional): Custom fields (JSON array) * `attachmentUrls` (TEXT, Optional): URLs to attachments (JSON array) * `destination` (TEXT, Optional): Destination for the issue (e.g., email, slack) * `destinationEmail` (TEXT, Optional): Email address for the destination * `emailCcs` (TEXT, Optional): CC email addresses (JSON array) * `emailBccs` (TEXT, Optional): BCC email addresses (JSON array) * `createdAt` (TEXT, Optional): Timestamp when issue was created (RFC3339 format) * `userId` (TEXT, Optional): ID of the user creating the issue * `contactId` (TEXT, Optional): ID of the contact associated with the issue **Output:** Returns the created issue details *** ### List Issues ##### `pylon.listIssues` Get a list of issues **Requires Confirmation:** No **Parameters:** * `startTime` (TEXT, Optional): Start time for filtering issues (RFC3339 format) * `endTime` (TEXT, Optional): End time for filtering issues (RFC3339 format) **Output:** Returns a list of issues *** ### Delete Issue ##### `pylon.deleteIssue` Delete an existing issue **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Required): The ID of the issue to delete **Output:** Confirmation of deletion *** ### Update Issue ##### `pylon.updateIssue` Update an existing issue **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Required): The ID of the issue to update * `assigneeId` (TEXT, Optional): The ID of the user to assign (empty string removes assignee) * `teamId` (TEXT, Optional): The ID of the team to assign (empty string removes team) * `state` (SELECT, Optional): The state of the issue (new, in\_progress, waiting, closed) * `requesterId` (TEXT, Optional): ID of the requester to update * `customerPortalVisible` (SELECT, Optional): Whether the issue is visible in the customer portal (true, false) * `tags` (TEXT, Optional): Updated tags for the issue (JSON array) * `customFields` (TEXT, Optional): Updated custom fields (JSON array) **Output:** Returns the updated issue details *** ### Add Draft Reply to Issue ##### `pylon.addDraftReplytoIssue` Add a draft reply to an existing issue **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Required): The unique identifier of the issue * `draftResponse` (MULTI\_LINE\_TEXT, Required): The draft reply content to add to the issue **Output:** Confirmation of draft reply addition *** ### Add Note to Issue ##### `pylon.addNotetoIssue` Add an internal note to an issue. IMPORTANT: Use HTML formatting, NOT Markdown. Markdown will be stripped and appear as plain text **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Required): The unique identifier of the issue * `content` (MULTI\_LINE\_TEXT, Required): The HTML content of the note. Use HTML tags like `

                    , ,

                    • ,

                      `. DO NOT use Markdown syntax like **bold** or - lists as it will be stripped **Output:** Confirmation of note addition *** ### Snooze Issue ##### `pylon.snoozeIssue` Snooze an issue until a specific time **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Required): The ID or number of the issue to snooze * `snoozeUntil` (TEXT, Required): Timestamp to snooze the issue until (RFC3339 format) **Output:** Confirmation of snooze action *** ### Get Issue Followers ##### `pylon.getIssueFollowers` Get a list of followers for an issue **Requires Confirmation:** No **Parameters:** * `issueId` (TEXT, Required): The ID or number of the issue **Output:** Returns a list of followers *** ### Get Issue Messages ##### `pylon.getIssueMessages` Retrieve all messages for a specific issue **Requires Confirmation:** No **Parameters:** * `issueId` (TEXT, Required): The unique identifier of the issue **Output:** Returns all messages for the issue *** ### Manage Issue Followers ##### `pylon.manageIssueFollowers` Add or remove followers from an issue **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Required): The ID or number of the issue * `operation` (SELECT, Optional): Whether to add or remove followers (add, remove) * `userIds` (TEXT, Optional): User IDs to add/remove as followers (JSON array) * `contactIds` (TEXT, Optional): Contact IDs to add/remove as followers (JSON array) **Output:** Confirmation of follower management *** ### Manage External Issues ##### `pylon.manageExternalIssues` Link or unlink external issues **Requires Confirmation:** Yes **Parameters:** * `issueId` (TEXT, Required): The ID of the Pylon issue * `operation` (SELECT, Required): Whether to link or unlink external issues (link, unlink) * `source` (TEXT, Required): The source system (e.g., linear, jira) * `externalId` (TEXT, Required): The ID of the external issue * `link` (TEXT, Optional): URL link to the external issue **Output:** Confirmation of external issue management *** ### Redact Message ##### `pylon.redactMessage` Redact a message in an issue **Requires Confirmation:** Yes **Parameters:** * `messageId` (TEXT, Required): The ID of the message to redact **Output:** Confirmation of message redaction *** ### List Accounts ##### `pylon.listAccounts` Get a paginated list of accounts **Requires Confirmation:** No **Parameters:** * `cursor` (TEXT, Optional): The cursor to use for pagination * `limit` (NUMBER, Optional): Number of accounts to fetch (1-1000, default: 100) **Output:** Returns a list of accounts *** ### Create Account ##### `pylon.createAccount` Create a new account **Requires Confirmation:** Yes **Parameters:** * `name` (TEXT, Required): The name of the account * `domains` (TEXT, Optional): List of domains (comma-separated, e.g., acme.com, acme.org) * `primaryDomain` (TEXT, Optional): Primary domain (must be in domains list) * `logoUrl` (TEXT, Optional): URL to account logo (square PNG, JPG, or JPEG) * `tags` (TEXT, Optional): Tags for the account (JSON array, e.g., \['enterprise', 'priority']) * `externalIds` (TEXT, Optional): External IDs (JSON array of objects, e.g., \[external\_id': '123', 'label': 'CRM ID]) * `customFields` (TEXT, Optional): Custom fields (JSON array, e.g., \[slug': 'industry', 'value': 'Technology]) * `channels` (TEXT, Optional): Channels to link (JSON array, e.g., \[channel\_id': 'ch123', 'source': 'slack', 'is\_primary': true}]) **Output:** Returns the created account details *** ### Get Account ##### `pylon.getAccount` Get an account by its ID or external ID **Requires Confirmation:** No **Parameters:** * `accountId` (TEXT, Required): The ID or external ID of the account **Output:** Returns the account details *** ### Update Account ##### `pylon.updateAccount` Update an existing account **Requires Confirmation:** Yes **Parameters:** * `accountId` (TEXT, Required): The ID or external ID of the account to update * `name` (TEXT, Optional): New name for the account * `domains` (TEXT, Optional): Updated list of domains (comma-separated) * `primaryDomain` (TEXT, Optional): Primary domain (must be in domains list) * `ownerId` (TEXT, Optional): ID of the new owner * `tags` (TEXT, Optional): Updated tags (JSON array) * `externalIds` (TEXT, Optional): Updated external IDs (JSON array) * `customFields` (TEXT, Optional): Updated custom fields (JSON array) * `channels` (TEXT, Optional): Updated channels (JSON array) * `keepExistingPrimaryDomain` (SELECT, Optional): If updating domains but not primary, set to true (true, false) **Output:** Returns the updated account details *** ### Delete Account ##### `pylon.deleteAccount` Delete an existing account **Requires Confirmation:** Yes **Parameters:** * `accountId` (TEXT, Required): The ID or external ID of the account to delete **Output:** Confirmation of deletion *** ### Search Accounts ##### `pylon.searchAccounts` Search for accounts using field-specific operators. IMPORTANT: Each field has specific allowed operators - domains/tags: contains, does\_not\_contain, in, not\_in | name/external\_ids: equals, in, not\_in. Use filterValue for single values (equals, contains, does\_not\_contain), filterValues for arrays (in, not\_in) **Requires Confirmation:** No **Parameters:** * `filterField` (SELECT, Optional): Field to filter by. Each field supports different operators - check operator compatibility (domains, tags, name, external\_ids) * `filterOperator` (SELECT, Optional): Operator for filtering. MUST be compatible with selected field (see field descriptions) (equals, in, not\_in, contains, does\_not\_contain) * `filterValue` (TEXT, Optional): Use for SINGLE value operators: equals, contains, does\_not\_contain. Leave empty when using filterValues * `filterValues` (TEXT, Optional): Use ONLY for ARRAY operators: in, not\_in. Must be JSON array format. Leave empty when using filterValue * `cursor` (TEXT, Optional): The cursor for pagination * `limit` (NUMBER, Optional): Number of results (1-1000) **Output:** Returns a list of accounts matching the search criteria *** ### Create Account Activity ##### `pylon.createAccountActivity` Create a new activity for an account **Requires Confirmation:** Yes **Parameters:** * `accountId` (TEXT, Required): The ID of the account to create the activity for * `slug` (TEXT, Required): The slug of the activity type. Get valid slugs from 'Get Activity Types' action * `bodyHtml` (MULTI\_LINE\_TEXT, Optional): Optional HTML content to display in the activity * `contactId` (TEXT, Optional): Optional contact ID of the actor * `userId` (TEXT, Optional): Optional user ID of the actor * `happenedAt` (TEXT, Optional): Timestamp (RFC3339) when activity happened (defaults to now) * `link` (TEXT, Optional): Optional link to add to the activity * `linkText` (TEXT, Optional): Link text to display (defaults to 'Open link') **Output:** Returns the created activity details *** ### Get Activity Types ##### `pylon.getActivityTypes` Get custom activity types configured in your Pylon instance **Requires Confirmation:** No **Parameters:** None **Output:** Returns a list of activity types *** ### Create Account Highlight ##### `pylon.createAccountHighlight` Create a new highlight for an account **Requires Confirmation:** Yes **Parameters:** * `accountId` (TEXT, Required): The ID of the account to create the highlight for * `contentHtml` (MULTI\_LINE\_TEXT, Required): The HTML content for this highlight * `expiresAt` (TEXT, Optional): Optional RFC3339 timestamp when highlight expires **Output:** Returns the created highlight details *** ### Update Account Highlight ##### `pylon.updateAccountHighlight` Update an existing account highlight **Requires Confirmation:** Yes **Parameters:** * `accountId` (TEXT, Required): The ID of the account that the highlight belongs to * `highlightId` (TEXT, Required): The ID of the highlight to update * `contentHtml` (MULTI\_LINE\_TEXT, Optional): The updated HTML content for this highlight * `expiresAt` (TEXT, Optional): Updated expiration timestamp (RFC3339) **Output:** Returns the updated highlight details *** ### Delete Account Highlight ##### `pylon.deleteAccountHighlight` Delete an existing account highlight **Requires Confirmation:** Yes **Parameters:** * `accountId` (TEXT, Required): The ID of the account that the highlight belongs to * `highlightId` (TEXT, Required): The ID of the highlight to delete **Output:** Confirmation of deletion *** ### List Custom Fields ##### `pylon.listCustomFields` Get all custom fields configured in Pylon. REQUIRED: objectType must be one of: account, issue, or contact **Requires Confirmation:** No **Parameters:** * `objectType` (SELECT, Required): Select the object type (account, issue, or contact) **Output:** Returns a list of custom fields *** ### Get Custom Field ##### `pylon.getCustomField` Get a custom field by its ID **Requires Confirmation:** No **Parameters:** * `customFieldId` (TEXT, Required): The ID of the custom field **Output:** Returns the specific custom field details *** ### Create Custom Field ##### `pylon.createCustomField` Create a new custom field **Requires Confirmation:** Yes **Parameters:** * `slug` (TEXT, Required): Unique identifier for the custom field * `label` (TEXT, Required): Display label for the custom field * `type` (SELECT, Required): The type of the custom field (text, number, decimal, boolean, date, datetime, user, url, select, multiselect) * `objectType` (SELECT, Required): The object type this field applies to (account, issue, contact) * `description` (TEXT, Optional): Description of the custom field * `defaultValue` (TEXT, Optional): Default value for single-valued fields * `defaultValues` (TEXT, Optional): Default values for multi-valued fields (JSON array) * `selectOptions` (TEXT, Optional): Options for select/multiselect fields (JSON array) **Output:** Returns the created custom field details *** ### Update Custom Field ##### `pylon.updateCustomField` Update an existing custom field **Requires Confirmation:** Yes **Parameters:** * `customFieldId` (TEXT, Required): The ID of the custom field to update * `slug` (TEXT, Optional): Updated slug for the custom field * `label` (TEXT, Optional): Updated label for the custom field * `description` (TEXT, Optional): Updated description * `defaultValue` (TEXT, Optional): Updated default value for single-valued fields * `defaultValues` (TEXT, Optional): Updated default values for multi-valued fields (JSON array) * `selectOptions` (TEXT, Optional): Updated options for select/multiselect fields (JSON array) **Output:** Returns the updated custom field details *** ### List Users ##### `pylon.listUsers` Get a list of all users **Requires Confirmation:** No **Parameters:** * `cursor` (TEXT, Optional): Pagination cursor from previous request * `limit` (NUMBER, Optional): Number of users to fetch (max 1000) **Output:** Returns a list of users *** ### Get User ##### `pylon.getUser` Get a user by ID **Requires Confirmation:** No **Parameters:** * `userId` (TEXT, Required): The ID of the user to fetch **Output:** Returns the user details *** ### Update User ##### `pylon.updateUser` Update a user's role or status **Requires Confirmation:** Yes **Parameters:** * `userId` (TEXT, Required): The ID of the user to update * `roleId` (TEXT, Optional): The new role ID for the user * `status` (SELECT, Optional): User status (active, away, or out\_of\_office) **Output:** Returns the updated user details *** ### Search Users ##### `pylon.searchUsers` Search for users by email **Requires Confirmation:** No **Parameters:** * `filterField` (SELECT, Optional): Field to filter by (currently only 'email' is supported) * `filterOperator` (SELECT, Optional): Operator for the filter (equals, in, not\_in) * `filterValue` (TEXT, Optional): Value for equals operator * `filterValues` (TEXT, Optional): JSON array of values for in/not\_in operators * `cursor` (TEXT, Optional): Pagination cursor from previous request * `limit` (NUMBER, Optional): Number of users to fetch (max 1000) **Output:** Returns a list of users matching the search criteria *** ### List Knowledge Bases ##### `pylon.listKnowledgeBases` Get a list of all knowledge bases **Requires Confirmation:** No **Parameters:** None **Output:** Returns a list of knowledge bases *** ### Get Knowledge Base ##### `pylon.getKnowledgeBase` Get details of a specific knowledge base **Requires Confirmation:** No **Parameters:** * `knowledgeBaseId` (TEXT, Required): The ID of the knowledge base **Output:** Returns the knowledge base details *** ### Create KB Article ##### `pylon.createKBArticle` Create a new knowledge base article. IMPORTANT: The contentHtml field is mapped to body\_html in the API **Requires Confirmation:** Yes **Parameters:** * `knowledgeBaseId` (TEXT, Required): The ID of the knowledge base. Get valid IDs from the 'List Knowledge Bases' action * `title` (TEXT, Required): The title of the article * `contentHtml` (MULTI\_LINE\_TEXT, Required): The HTML content of the article (maps to body\_html in API). Use proper HTML tags. Markdown will NOT be rendered * `collectionId` (TEXT, Optional): The ID of the collection to add the article to * `slug` (TEXT, Optional): URL slug for the article * `authorUserId` (TEXT, Optional): The ID of the user to set as the article author. Get valid user IDs from the 'List Users' action * `publishedAt` (TEXT, Optional): Publication timestamp (RFC3339) * `isPublished` (SELECT, Optional): Whether the article should be published immediately (true, false) * `isUnlisted` (SELECT, Optional): Whether the article should be unlisted (accessible only via direct link) (true, false) **Output:** Returns the created article details *** ### Update KB Article ##### `pylon.updateKBArticle` Update an existing knowledge base article. IMPORTANT: The contentHtml field is mapped to body\_html in the API **Requires Confirmation:** Yes **Parameters:** * `articleId` (TEXT, Required): The ID of the article to update * `title` (TEXT, Optional): Updated title of the article * `contentHtml` (MULTI\_LINE\_TEXT, Optional): Updated HTML content (maps to body\_html in API). Use proper HTML tags. Markdown will NOT be rendered * `slug` (TEXT, Optional): Updated URL slug * `publishedAt` (TEXT, Optional): Updated publication timestamp (RFC3339) **Output:** Returns the updated article details *** ### List KB Collections ##### `pylon.listKBCollections` Get a list of knowledge base collections **Requires Confirmation:** No **Parameters:** * `knowledgeBaseId` (TEXT, Required): The ID of the knowledge base **Output:** Returns a list of collections *** ### Create KB Collection ##### `pylon.createKBCollection` Create a new knowledge base collection **Requires Confirmation:** Yes **Parameters:** * `knowledgeBaseId` (TEXT, Required): The ID of the knowledge base * `title` (TEXT, Required): The title of the collection * `description` (TEXT, Optional): Description of the collection * `slug` (TEXT, Optional): URL slug for the collection **Output:** Returns the created collection details *** ### Create KB Route Redirect ##### `pylon.createKBRouteRedirect` Create a route redirect in the knowledge base **Requires Confirmation:** Yes **Parameters:** * `knowledgeBaseId` (TEXT, Required): The ID of the knowledge base * `fromPath` (TEXT, Required): The path to redirect from * `toPath` (TEXT, Required): The path to redirect to **Output:** Returns the created redirect details *** ### List Teams ##### `pylon.listTeams` Get a list of all teams **Requires Confirmation:** No **Parameters:** None **Output:** Returns a list of teams *** ### Get Team ##### `pylon.getTeam` Get details of a specific team **Requires Confirmation:** No **Parameters:** * `teamId` (TEXT, Required): The ID of the team **Output:** Returns the team details *** ### Create Team ##### `pylon.createTeam` Create a new team **Requires Confirmation:** Yes **Parameters:** * `name` (TEXT, Required): The name of the team * `description` (TEXT, Optional): Description of the team * `slackChannelId` (TEXT, Optional): Associated Slack channel ID **Output:** Returns the created team details *** ### Update Team ##### `pylon.updateTeam` Update an existing team **Requires Confirmation:** Yes **Parameters:** * `teamId` (TEXT, Required): The ID of the team to update * `name` (TEXT, Optional): Updated name of the team * `description` (TEXT, Optional): Updated description * `slackChannelId` (TEXT, Optional): Updated Slack channel ID **Output:** Returns the updated team details *** ## Common Use Cases Manage and organize your Pylon data Automate workflows with Pylon Generate insights and reports Connect Pylon with other tools ## Best Practices **Getting Started:** 1. Enable the Pylon integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Pylon integration, contact [support@langdock.com](mailto:support@langdock.com) # Qdrant Source: https://docs.langdock.com/administration/integrations/qdrant Vector similarity search engine and vector database ## Overview Vector similarity search engine and vector database. Through Langdock's integration, you can access and manage Qdrant directly from your conversations. **Authentication:** API Key\ **Category:** AI & Search\ **Availability:** All workspace plans ## Available Actions ### Search Collection ##### `qdrant.searchCollection` Searches the database for the most relevant information based on the query provided **Requires Confirmation:** No **Parameters:** * `query` (VECTOR, Required): The vector query to search for **Output:** Returns search results with similarity scores and payload data *** ## Common Use Cases Manage and organize your Qdrant data Automate workflows with Qdrant Generate insights and reports Connect Qdrant with other tools ## Best Practices **Getting Started:** 1. Enable the Qdrant integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Qdrant integration, contact [support@langdock.com](mailto:support@langdock.com) # Salesforce Source: https://docs.langdock.com/administration/integrations/salesforce Cloud-based CRM platform that unifies sales, service, marketing, and commerce ## Overview Cloud-based CRM platform that unifies sales, service, marketing, and commerce. Through Langdock's integration, you can access and manage Salesforce directly from your conversations. **Authentication:** OAuth\ **Category:** CRM & Customer Support\ **Availability:** All workspace plans ## Available Actions ### Get account ##### `salesforce.getaccount` Gets an account by id **Requires Confirmation:** No **Parameters:** * `accountId` (TEXT, Required): Id of the account in Salesforce. Starts with 001 **Output:** Returns the account details *** ### Get campaign ##### `salesforce.getcampaign` Gets a campaign by id **Requires Confirmation:** No **Parameters:** * `campaignId` (TEXT, Required): Id of the campaign in Salesforce **Output:** Returns the campaign details *** ### Get campaign member ##### `salesforce.getcampaignmember` Gets a campaign member by id **Requires Confirmation:** No **Parameters:** * `campaignMemberId` (TEXT, Required): Id of the campaign member to retrieve **Output:** Returns the campaign member details *** ### Get campaign members for campaign ##### `salesforce.getcampaignmembersforcampaign` Finds all campaign members by campaign id **Requires Confirmation:** No **Parameters:** * `campaignId` (TEXT, Required): Campaign Id * `fields` (TEXT, Optional): Comma-separated list of field API names to return. Defaults to 'Id,Name,CreatedDate,LastModifiedDate,OwnerId,CampaignId,ContactId,LeadId,Status'. Common fields include: Name, CampaignId, ContactId, LeadId, Status **Output:** Returns a list of campaign members *** ### Get case ##### `salesforce.getcase` Gets a case by id **Requires Confirmation:** No **Parameters:** * `caseId` (TEXT, Required): Id of the case in Salesforce. Starts with 500 **Output:** Returns the case details *** ### Get contact ##### `salesforce.getcontact` Gets a contact by id **Requires Confirmation:** No **Parameters:** * `contactId` (TEXT, Required): Id of the contact. starts with 003 **Output:** Returns the contact details *** ### Get content note ##### `salesforce.getcontentnote` Gets an Enhanced Note (ContentNote) and optionally its ContentDocumentLink associations **Requires Confirmation:** No **Parameters:** * `includeLinks` (BOOLEAN, Optional): If true, also returns ContentDocumentLink records for this note * `contentNoteId` (TEXT, Required): Id of the content note **Output:** Returns the content note details *** ### Get lead ##### `salesforce.getlead` Gets a lead by id **Requires Confirmation:** No **Parameters:** * `leadId` (TEXT, Required): Id of the lead. starts with 00Q **Output:** Returns the lead details *** ### Get opportunity ##### `salesforce.getopportunity` Gets an opportunity by id **Requires Confirmation:** No **Parameters:** * `opportunityId` (TEXT, Required): Id of the opportunity. starts with 006 **Output:** Returns the opportunity details *** ### Get task ##### `salesforce.gettask` Gets a task by id **Requires Confirmation:** No **Parameters:** * `taskId` (TEXT, Required): Id of the task. starts with 00T **Output:** Returns the task details *** ### Get user ##### `salesforce.getuser` Gets a user by id **Requires Confirmation:** No **Parameters:** * `userId` (TEXT, Required): Id of the user. starts with 005 **Output:** Returns the user details *** ### Find account ##### `salesforce.findaccount` Finds an account by name **Requires Confirmation:** No **Parameters:** * `accountName` (TEXT, Required): Name of the account to search for **Output:** Returns matching accounts *** ### Find campaign ##### `salesforce.findcampaign` Finds a campaign by name **Requires Confirmation:** No **Parameters:** * `campaignName` (TEXT, Required): Name of the campaign to search for **Output:** Returns matching campaigns *** ### Find case ##### `salesforce.findcase` Finds a case by case number **Requires Confirmation:** No **Parameters:** * `caseNumber` (TEXT, Required): Case number to search for **Output:** Returns matching cases *** ### Find contact ##### `salesforce.findcontact` Finds a contact by email **Requires Confirmation:** No **Parameters:** * `email` (TEXT, Required): Email address to search for **Output:** Returns matching contacts *** ### Find lead ##### `salesforce.findlead` Finds a lead by email **Requires Confirmation:** No **Parameters:** * `email` (TEXT, Required): Email address to search for **Output:** Returns matching leads *** ### Find opportunity ##### `salesforce.findopportunity` Finds an opportunity by name **Requires Confirmation:** No **Parameters:** * `opportunityName` (TEXT, Required): Name of the opportunity to search for **Output:** Returns matching opportunities *** ### Find task ##### `salesforce.findtask` Finds a task by subject **Requires Confirmation:** No **Parameters:** * `subject` (TEXT, Required): Subject of the task to search for **Output:** Returns matching tasks *** ### Find user ##### `salesforce.finduser` Finds a user by email **Requires Confirmation:** No **Parameters:** * `email` (TEXT, Required): Email address to search for **Output:** Returns matching users *** ### Create account ##### `salesforce.createaccount` Creates a new account **Requires Confirmation:** Yes **Parameters:** * `name` (TEXT, Required): Name of the account * `type` (TEXT, Optional): Type of account (e.g., Customer, Partner, Competitor) * `industry` (TEXT, Optional): Industry of the account * `phone` (TEXT, Optional): Phone number * `website` (TEXT, Optional): Website URL * `billingStreet` (TEXT, Optional): Billing street address * `billingCity` (TEXT, Optional): Billing city * `billingState` (TEXT, Optional): Billing state * `billingPostalCode` (TEXT, Optional): Billing postal code * `billingCountry` (TEXT, Optional): Billing country * `shippingStreet` (TEXT, Optional): Shipping street address * `shippingCity` (TEXT, Optional): Shipping city * `shippingState` (TEXT, Optional): Shipping state * `shippingPostalCode` (TEXT, Optional): Shipping postal code * `shippingCountry` (TEXT, Optional): Shipping country * `description` (TEXT, Optional): Description of the account **Output:** Returns the created account details *** ### Create campaign ##### `salesforce.createcampaign` Creates a new campaign **Requires Confirmation:** Yes **Parameters:** * `name` (TEXT, Required): Name of the campaign * `type` (TEXT, Optional): Type of campaign (e.g., Email, Webinar, Trade Show) * `status` (TEXT, Optional): Status of the campaign (e.g., Planned, In Progress, Completed) * `startDate` (TEXT, Optional): Start date of the campaign (YYYY-MM-DD) * `endDate` (TEXT, Optional): End date of the campaign (YYYY-MM-DD) * `budgetedCost` (NUMBER, Optional): Budgeted cost of the campaign * `actualCost` (NUMBER, Optional): Actual cost of the campaign * `expectedRevenue` (NUMBER, Optional): Expected revenue from the campaign * `description` (TEXT, Optional): Description of the campaign **Output:** Returns the created campaign details *** ### Create case ##### `salesforce.createcase` Creates a new case **Requires Confirmation:** Yes **Parameters:** * `subject` (TEXT, Required): Subject of the case * `status` (TEXT, Optional): Status of the case (e.g., New, In Progress, Closed) * `priority` (TEXT, Optional): Priority of the case (e.g., High, Medium, Low) * `origin` (TEXT, Optional): Origin of the case (e.g., Email, Phone, Web) * `reason` (TEXT, Optional): Reason for the case * `type` (TEXT, Optional): Type of the case * `description` (TEXT, Optional): Description of the case * `accountId` (TEXT, Optional): ID of the related account * `contactId` (TEXT, Optional): ID of the related contact **Output:** Returns the created case details *** ### Create contact ##### `salesforce.createcontact` Creates a new contact **Requires Confirmation:** Yes **Parameters:** * `firstName` (TEXT, Required): First name of the contact * `lastName` (TEXT, Required): Last name of the contact * `email` (TEXT, Optional): Email address of the contact * `phone` (TEXT, Optional): Phone number of the contact * `title` (TEXT, Optional): Job title of the contact * `department` (TEXT, Optional): Department of the contact * `accountId` (TEXT, Optional): ID of the related account * `mailingStreet` (TEXT, Optional): Mailing street address * `mailingCity` (TEXT, Optional): Mailing city * `mailingState` (TEXT, Optional): Mailing state * `mailingPostalCode` (TEXT, Optional): Mailing postal code * `mailingCountry` (TEXT, Optional): Mailing country **Output:** Returns the created contact details *** ### Create lead ##### `salesforce.createlead` Creates a new lead **Requires Confirmation:** Yes **Parameters:** * `firstName` (TEXT, Required): First name of the lead * `lastName` (TEXT, Required): Last name of the lead * `email` (TEXT, Optional): Email address of the lead * `phone` (TEXT, Optional): Phone number of the lead * `company` (TEXT, Optional): Company name * `title` (TEXT, Optional): Job title of the lead * `industry` (TEXT, Optional): Industry of the lead * `status` (TEXT, Optional): Status of the lead (e.g., Open, Qualified, Unqualified) * `rating` (TEXT, Optional): Rating of the lead (e.g., Hot, Warm, Cold) * `source` (TEXT, Optional): Source of the lead (e.g., Web, Phone, Email) * `street` (TEXT, Optional): Street address * `city` (TEXT, Optional): City * `state` (TEXT, Optional): State * `postalCode` (TEXT, Optional): Postal code * `country` (TEXT, Optional): Country **Output:** Returns the created lead details *** ### Create opportunity ##### `salesforce.createopportunity` Creates a new opportunity **Requires Confirmation:** Yes **Parameters:** * `name` (TEXT, Required): Name of the opportunity * `stageName` (TEXT, Required): Stage of the opportunity (e.g., Prospecting, Qualification, Proposal) * `closeDate` (TEXT, Required): Close date of the opportunity (YYYY-MM-DD) * `amount` (NUMBER, Optional): Amount of the opportunity * `probability` (NUMBER, Optional): Probability percentage (0-100) * `type` (TEXT, Optional): Type of the opportunity * `leadSource` (TEXT, Optional): Lead source * `description` (TEXT, Optional): Description of the opportunity * `accountId` (TEXT, Optional): ID of the related account * `contactId` (TEXT, Optional): ID of the related contact **Output:** Returns the created opportunity details *** ### Create task ##### `salesforce.createtask` Creates a new task **Requires Confirmation:** Yes **Parameters:** * `subject` (TEXT, Required): Subject of the task * `status` (TEXT, Optional): Status of the task (e.g., Not Started, In Progress, Completed) * `priority` (TEXT, Optional): Priority of the task (e.g., High, Normal, Low) * `activityDate` (TEXT, Optional): Due date of the task (YYYY-MM-DD) * `description` (TEXT, Optional): Description of the task * `whoId` (TEXT, Optional): ID of the related contact or lead * `whatId` (TEXT, Optional): ID of the related account, opportunity, or case **Output:** Returns the created task details *** ### Update account ##### `salesforce.updateaccount` Updates an existing account **Requires Confirmation:** Yes **Parameters:** * `accountId` (TEXT, Required): ID of the account to update * `name` (TEXT, Optional): Updated name of the account * `type` (TEXT, Optional): Updated type of account * `industry` (TEXT, Optional): Updated industry of the account * `phone` (TEXT, Optional): Updated phone number * `website` (TEXT, Optional): Updated website URL * `billingStreet` (TEXT, Optional): Updated billing street address * `billingCity` (TEXT, Optional): Updated billing city * `billingState` (TEXT, Optional): Updated billing state * `billingPostalCode` (TEXT, Optional): Updated billing postal code * `billingCountry` (TEXT, Optional): Updated billing country * `shippingStreet` (TEXT, Optional): Updated shipping street address * `shippingCity` (TEXT, Optional): Updated shipping city * `shippingState` (TEXT, Optional): Updated shipping state * `shippingPostalCode` (TEXT, Optional): Updated shipping postal code * `shippingCountry` (TEXT, Optional): Updated shipping country * `description` (TEXT, Optional): Updated description of the account **Output:** Returns the updated account details *** ### Update campaign ##### `salesforce.updatecampaign` Updates an existing campaign **Requires Confirmation:** Yes **Parameters:** * `campaignId` (TEXT, Required): ID of the campaign to update * `name` (TEXT, Optional): Updated name of the campaign * `type` (TEXT, Optional): Updated type of campaign * `status` (TEXT, Optional): Updated status of the campaign * `startDate` (TEXT, Optional): Updated start date of the campaign * `endDate` (TEXT, Optional): Updated end date of the campaign * `budgetedCost` (NUMBER, Optional): Updated budgeted cost of the campaign * `actualCost` (NUMBER, Optional): Updated actual cost of the campaign * `expectedRevenue` (NUMBER, Optional): Updated expected revenue from the campaign * `description` (TEXT, Optional): Updated description of the campaign **Output:** Returns the updated campaign details *** ### Update case ##### `salesforce.updatecase` Updates an existing case **Requires Confirmation:** Yes **Parameters:** * `caseId` (TEXT, Required): ID of the case to update * `subject` (TEXT, Optional): Updated subject of the case * `status` (TEXT, Optional): Updated status of the case * `priority` (TEXT, Optional): Updated priority of the case * `origin` (TEXT, Optional): Updated origin of the case * `reason` (TEXT, Optional): Updated reason for the case * `type` (TEXT, Optional): Updated type of the case * `description` (TEXT, Optional): Updated description of the case * `accountId` (TEXT, Optional): Updated ID of the related account * `contactId` (TEXT, Optional): Updated ID of the related contact **Output:** Returns the updated case details *** ### Update contact ##### `salesforce.updatecontact` Updates an existing contact **Requires Confirmation:** Yes **Parameters:** * `contactId` (TEXT, Required): ID of the contact to update * `firstName` (TEXT, Optional): Updated first name of the contact * `lastName` (TEXT, Optional): Updated last name of the contact * `email` (TEXT, Optional): Updated email address of the contact * `phone` (TEXT, Optional): Updated phone number of the contact * `title` (TEXT, Optional): Updated job title of the contact * `department` (TEXT, Optional): Updated department of the contact * `accountId` (TEXT, Optional): Updated ID of the related account * `mailingStreet` (TEXT, Optional): Updated mailing street address * `mailingCity` (TEXT, Optional): Updated mailing city * `mailingState` (TEXT, Optional): Updated mailing state * `mailingPostalCode` (TEXT, Optional): Updated mailing postal code * `mailingCountry` (TEXT, Optional): Updated mailing country **Output:** Returns the updated contact details *** ### Update lead ##### `salesforce.updatelead` Updates an existing lead **Requires Confirmation:** Yes **Parameters:** * `leadId` (TEXT, Required): ID of the lead to update * `firstName` (TEXT, Optional): Updated first name of the lead * `lastName` (TEXT, Optional): Updated last name of the lead * `email` (TEXT, Optional): Updated email address of the lead * `phone` (TEXT, Optional): Updated phone number of the lead * `company` (TEXT, Optional): Updated company name * `title` (TEXT, Optional): Updated job title of the lead * `industry` (TEXT, Optional): Updated industry of the lead * `status` (TEXT, Optional): Updated status of the lead * `rating` (TEXT, Optional): Updated rating of the lead * `source` (TEXT, Optional): Updated source of the lead * `street` (TEXT, Optional): Updated street address * `city` (TEXT, Optional): Updated city * `state` (TEXT, Optional): Updated state * `postalCode` (TEXT, Optional): Updated postal code * `country` (TEXT, Optional): Updated country **Output:** Returns the updated lead details *** ### Update opportunity ##### `salesforce.updateopportunity` Updates an existing opportunity **Requires Confirmation:** Yes **Parameters:** * `opportunityId` (TEXT, Required): ID of the opportunity to update * `name` (TEXT, Optional): Updated name of the opportunity * `stageName` (TEXT, Optional): Updated stage of the opportunity * `closeDate` (TEXT, Optional): Updated close date of the opportunity * `amount` (NUMBER, Optional): Updated amount of the opportunity * `probability` (NUMBER, Optional): Updated probability percentage * `type` (TEXT, Optional): Updated type of the opportunity * `leadSource` (TEXT, Optional): Updated lead source * `description` (TEXT, Optional): Updated description of the opportunity * `accountId` (TEXT, Optional): Updated ID of the related account * `contactId` (TEXT, Optional): Updated ID of the related contact **Output:** Returns the updated opportunity details *** ### Update task ##### `salesforce.updatetask` Updates an existing task **Requires Confirmation:** Yes **Parameters:** * `taskId` (TEXT, Required): ID of the task to update * `subject` (TEXT, Optional): Updated subject of the task * `status` (TEXT, Optional): Updated status of the task * `priority` (TEXT, Optional): Updated priority of the task * `activityDate` (TEXT, Optional): Updated due date of the task * `description` (TEXT, Optional): Updated description of the task * `whoId` (TEXT, Optional): Updated ID of the related contact or lead * `whatId` (TEXT, Optional): Updated ID of the related account, opportunity, or case **Output:** Returns the updated task details *** ### Delete account ##### `salesforce.deleteaccount` Deletes an account **Requires Confirmation:** Yes **Parameters:** * `accountId` (TEXT, Required): ID of the account to delete **Output:** Confirmation of deletion *** ### Delete campaign ##### `salesforce.deletecampaign` Deletes a campaign **Requires Confirmation:** Yes **Parameters:** * `campaignId` (TEXT, Required): ID of the campaign to delete **Output:** Confirmation of deletion *** ### Delete case ##### `salesforce.deletecase` Deletes a case **Requires Confirmation:** Yes **Parameters:** * `caseId` (TEXT, Required): ID of the case to delete **Output:** Confirmation of deletion *** ### Delete contact ##### `salesforce.deletecontact` Deletes a contact **Requires Confirmation:** Yes **Parameters:** * `contactId` (TEXT, Required): ID of the contact to delete **Output:** Confirmation of deletion *** ### Delete lead ##### `salesforce.deletelead` Deletes a lead **Requires Confirmation:** Yes **Parameters:** * `leadId` (TEXT, Required): ID of the lead to delete **Output:** Confirmation of deletion *** ### Delete opportunity ##### `salesforce.deleteopportunity` Deletes an opportunity **Requires Confirmation:** Yes **Parameters:** * `opportunityId` (TEXT, Required): ID of the opportunity to delete **Output:** Confirmation of deletion *** ### Delete task ##### `salesforce.deletetask` Deletes a task **Requires Confirmation:** Yes **Parameters:** * `taskId` (TEXT, Required): ID of the task to delete **Output:** Confirmation of deletion *** ## Common Use Cases Manage and organize your Salesforce data Automate workflows with Salesforce Generate insights and reports Connect Salesforce with other tools ## Best Practices **Getting Started:** 1. Enable the Salesforce integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Salesforce integration, contact [support@langdock.com](mailto:support@langdock.com) # SharePoint Source: https://docs.langdock.com/administration/integrations/sharepoint Microsoft SharePoint is a service that helps organizations share content ## Overview Microsoft SharePoint is a service that helps organizations share content. Through Langdock's integration, you can access and manage SharePoint directly from your conversations. **Authentication:** OAuth\ **Category:** Microsoft 365\ **Availability:** All workspace plans ## Available Actions ### Search files ##### `sharepoint.searchfiles` Searches files by name and returns detailed information about each matching file **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Required): The filename / query to search for in SharePoint. The search is not case-insensitive and will return all items that match partially contain the input name. For example, you can search for specific documents like 'Budget 2023', 'Project proposal', or 'Meeting notes' **Output:** Returns a list of files with details including URL, document ID, title, MIME type, author, creation date, and modification information *** ### Search SharePoint ##### `sharepoint.searchSharePoint` Searches documents in SharePoint **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): Search query for documents **Output:** Returns search results for SharePoint documents *** ### List files in folder ##### `sharepoint.listfilesinfolder` Lists all files in a SharePoint folder recursively, including subfolders. Filters out images, videos, and spreadsheets similar to Google Drive integration. **Requires Confirmation:** No **Parameters:** * `folderId` (TEXT, Required): Folder configuration as JSON string with siteId, driveId, and/or folderId. Examples: siteId':'site-id','folderId':'folder-id for a specific folder, siteId':'site-id for site root, or siteId':'site-id','driveId':'drive-id for drive root. * `parent` (TEXT, Required): Parent folder information **Output:** Returns a list of files in the specified folder *** ### Download File ##### `sharepoint.downloadFile` Downloads a file from SharePoint **Requires Confirmation:** No **Parameters:** * `parent` (TEXT, Required): Parent folder information * `itemId` (TEXT, Required): Item ID of the file to download **Output:** Returns the downloaded file content *** ### Download SharePoint File ##### `sharepoint.downloadSharePointFile` Downloads a file from SharePoint and attaches it to the chat **Requires Confirmation:** No **Parameters:** * `parent` (OBJECT, Required): Parent object of the SharePoint file * `itemId` (TEXT, Required): Item ID of the file to download **Output:** Downloads and returns the file *** ## Common Use Cases Manage and organize your SharePoint data Automate workflows with SharePoint Generate insights and reports Connect SharePoint with other tools ## Best Practices **Getting Started:** 1. **Prerequisite:** A Microsoft Admin must [approve the Langdock application](/administration/microsoft-admin-approval) in your Microsoft workspace once. 2. Enable the SharePoint integration in your workspace settings 3. Authenticate using OAuth 4. Test the connection with a simple read operation 5. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the SharePoint integration, contact [support@langdock.com](mailto:support@langdock.com) # Slack Source: https://docs.langdock.com/administration/integrations/slack Team messaging platform connecting conversations, files and tools ## Overview Team messaging platform connecting conversations, files and tools. Through Langdock's integration, you can access and manage Slack directly from your conversations. **Authentication:** OAuth\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Get current user ##### `slack.getcurrentuser` Gets information about the authenticated user **Requires Confirmation:** No **Parameters:** None **Output:** Returns the current user's information *** ### Search messages ##### `slack.searchmessages` Searches for messages matching a query **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Required): The search query used to search for messages. Plain text search query with optional modifiers. Supports location modifiers (in:channel\_name, in:@username), person modifiers (from:@username, to:@username), date/time modifiers (after:YYYY-MM-DD, before:YYYY-MM-DD), content type modifiers (has:link, has:image, has:file), status modifiers (is:saved, is:thread), and boolean operators (AND, OR, NOT) **Output:** Returns a list of messages matching the search criteria *** ### Send message ##### `slack.sendmessage` Sends a message to a channel **Requires Confirmation:** Yes **Parameters:** * `channelId` (TEXT, Required): An encoded ID or channel name that represents a channel, private group, or IM channel to send the message to * `text` (MULTI\_LINE\_TEXT, Required): The text of the message to send (max 3000 characters) **Output:** Returns the sent message details *** ### Get conversation history ##### `slack.getconversationhistory` Fetches a conversation's history of messages and events. All timestamps are handled in UTC timezone. **Requires Confirmation:** No **Parameters:** * `channelId` (TEXT, Required): Conversation ID to fetch history for * `latest` (TEXT, Optional): End of time range of messages to include in results. Messages sent after this timestamp will not be included. Default is the current time. Format: RFC3339 in UTC (e.g., '2024-03-20T15:30:00Z'). The 'Z' suffix indicates UTC timezone. * `oldest` (TEXT, Optional): Start of time range of messages to include in results. Messages sent before this timestamp will not be included. Format: RFC3339 in UTC (e.g., '2024-03-19T15:30:00Z'). The 'Z' suffix indicates UTC timezone. * `showThreads` (BOOLEAN, Optional): Whether to include thread replies in the response. If false, thread replies will be empty arrays. **Output:** Returns the conversation history with messages and events *** ### Get channels ##### `slack.getchannels` Gets all Slack channels (public and private team channels only) **Requires Confirmation:** No **Parameters:** * `channelTypes` (SELECT, Optional): Filter channels by type. Select one or more channel types to include in results: Public Channels (open channels visible to all workspace members) or Private Channels (invite-only channels for specific teams or topics). Leave empty to include both Public and Private channels by default. **Output:** Returns a list of channels *** ### Get people ##### `slack.getpeople` Gets all Slack people **Requires Confirmation:** No **Parameters:** None **Output:** Returns a list of people in the workspace *** ### Get channels by name ##### `slack.getchannelsbyname` Searches for channels in your Slack workspace by name (public and private team channels only) **Requires Confirmation:** No **Parameters:** * `channelName` (TEXT, Required): Search term used to find channels by their names. For example, you can search for 'general', 'marketing', 'support' or 'eng' to find channels with those terms in their names * `channelTypes` (SELECT, Optional): Filter channels by type. Select one or more channel types to include in search results: Public Channels or Private Channels. Leave empty to search both Public and Private channels by default. **Output:** Returns matching channels *** ### List user conversations ##### `slack.listuserconversations` Lists all conversations (channels, DMs, group DMs) that a specific user is a member of **Requires Confirmation:** No **Parameters:** * `userId` (TEXT, Required): The user ID to get conversations for. Use the User ID (starts with 'U') not the username. You can get user IDs from the 'Get people' or 'Search user by email' actions. * `conversationTypes` (SELECT, Optional): Filter conversations by type. Select one or more conversation types to include in results: Public Channels, Private Channels, Direct Messages, or Group Direct Messages. Leave empty to include all conversation types the user is a member of. **Output:** Returns a list of conversations for the user *** ### Search user by email ##### `slack.searchuserbyemail` Looks up a Slack user by their email address **Requires Confirmation:** No **Parameters:** * `email` (TEXT, Required): The email address of the user to look up **Output:** Returns the user details if found *** ### Reply to message ##### `slack.replytomessage` This action replies to a message in the thread **Requires Confirmation:** Yes **Parameters:** * `channelId` (TEXT, Required): An encoded ID or channel name that represents a channel, private group, or IM channel to send the message to * `text` (TEXT, Required): The text of the message to send * `threadTs` (TEXT, Required): The Unix timestamp of the original message to ensure the reply is in the correct thread. Use the 'ts\_unix' or 'thread\_ts\_unix' field from 'Get conversation history' or 'Search messages' actions. Format: Unix timestamp with microseconds (e.g., '1710951000.123456') **Output:** Returns the reply message details #### Triggers *** ### New message by search ##### `slack.newmessagebysearch` Triggers when a new message is found by searching for a specific keyword or other criteria **Requires Confirmation:** No **Parameters:** * `keywords` (TEXT, Optional): Text to search for in messages (e.g., 'project update') * `in` (TEXT, Optional): Syntax for 'in' parameter: in:channel\_name, in:group\_name, or `in:<@UserID>`. Example values: in:general, `in:<@U05K6TALQ87>`. The 'in:' prefix will be added automatically if not included. You can get the User Id from the user profile -> Click on the 'three dots button' -> 'Copy member ID' * `from` (TEXT, Optional): Syntax for 'from' parameter: `from:<@UserID>` or from:botname. Example values: `from:<@U05K6TALQ87>` or from:slackbot. The 'from:' prefix will be added automatically if not included. You can get the User Id from the user profile -> Click on the 'three dots button' -> 'Copy member ID' **Output:** Returns the operation result *** ### New message in channel ##### `slack.newmessageinchannel` Triggers when a new message was posted in a channel (public, private, DM, etc.) **Requires Confirmation:** No **Parameters:** * `channelId` (TEXT, Required): The id of the channel that should be monitored for new messages. A channel id can be found for public channels, private channels, private messages and private group messages. You can find the channel id of a conversation by clicking on the top left of a conversation (name), in the 'About' tab. **Output:** Returns the operation result *** ### New message in conversations ##### `slack.newmessageinconversations` Triggers when a new message is posted in a specific conversation (DM, group DM, or channel) **Requires Confirmation:** No **Parameters:** * `conversationId` (TEXT, Required): The ID of the conversation to monitor for new messages. This can be: A direct message (DM) conversation ID (starts with 'D'), A group direct message conversation ID (starts with 'G'), or A channel ID (starts with 'C'). You can find conversation IDs using the 'List user conversations' action or by checking the conversation details in Slack. * `latest` (TEXT, Optional): End of time range of messages to include in results. Messages sent after this timestamp will not be included. Default is the current time. Format: Unix timestamp (e.g., '1609459200' for 2021-01-01). * `oldest` (TEXT, Optional): Start of time range of messages to include in results. Messages sent before this timestamp will not be included. Format: Unix timestamp (e.g., '1609372800' for 2020-12-31). **Output:** Returns the operation result *** ## Common Use Cases Manage and organize your Slack data Automate workflows with Slack Generate insights and reports Connect Slack with other tools ## Best Practices **Getting Started:** 1. Enable the Slack integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Slack integration, contact [support@langdock.com](mailto:support@langdock.com) # Snowflake Source: https://docs.langdock.com/administration/integrations/snowflake Snowflake allows to store and analyze data using cloud-based hardware and software ## Overview Snowflake allows to store and analyze data using cloud-based hardware and software. Through Langdock's integration, you can access and manage Snowflake directly from your conversations. **Authentication:** API Key\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Execute SQL ##### `snowflake.executeSQL` Execute SQL query and return resulting data **Requires Confirmation:** Yes **Parameters:** * `sqlQuery` (MULTI\_LINE\_TEXT, Required): The SQL query to execute against Snowflake **Output:** Returns the query results with data *** ### Search schema ##### `snowflake.searchschema` Searches for schemas or tables containing specific keywords **Requires Confirmation:** No **Parameters:** * `searchQuery` (TEXT, Required): The keyword to search for in schema or table names. For example, to find tables containing Salesforce data, search for 'salesforce' * `searchType` (SELECT, Optional): What to search for: 'table' (default) searches for table names, 'schema' searches for schema names **Output:** Returns matching schemas or tables *** ### Cortex search ##### `snowflake.cortexsearch` Performs semantic search using Snowflake Cortex Search service **Requires Confirmation:** No **Parameters:** * `searchServiceName` (TEXT, Required): The name of the Cortex Search service to use (must be created beforehand in Snowflake) * `query` (TEXT, Required): The search query for semantic search. Cortex Search uses both vector and keyword methods to find relevant results * `columns` (TEXT, Optional): Comma-separated list of columns to return in the search results. If not specified, all columns are returned * `filter` (TEXT, Optional): SQL WHERE clause to filter search results. For example: category = 'support' AND status = 'active' * `limit` (NUMBER, Optional): Maximum number of search results to return. Default is 10 **Output:** Returns semantic search results *** ## Common Use Cases Manage and organize your Snowflake data Automate workflows with Snowflake Generate insights and reports Connect Snowflake with other tools ## Best Practices **Getting Started:** 1. Enable the Snowflake integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Snowflake integration, contact [support@langdock.com](mailto:support@langdock.com) # Statista Source: https://docs.langdock.com/administration/integrations/statista Statistics for everyone ## Overview Statistics for everyone. Through Langdock's integration, you can access and manage Statista directly from your conversations. **Authentication:** API Key\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Get statistics data by id ##### `statista.getstatisticsdatabyid` Retrieves detailed statistical information for a specific Statista chart or dataset using its unique identifier. **Requires Confirmation:** No **Parameters:** * `id` (NUMBER, Required): Retrieves detailed statistical information for a specific Statista chart or dataset using its unique identifier. This tool provides comprehensive data including full numerical values, methodological information, source details, and contextual metadata. It's designed to work seamlessly with results from the 'search-statistics' tool - simply pass an ID from your search results to access in-depth analysis. Use this tool to dive deeper into statistics of interest after identifying them through search. Always cite the source of the data in your response. **Output:** Returns detailed statistical data for the specified ID *** ### Search statistics ##### `statista.searchstatistics` Searches the comprehensive Statista data catalogue to discover relevant statistical content. This tool enables exploration of Statista's extensive library of charts, reports, and forecasts. **Requires Confirmation:** No **Parameters:** * `q` (TEXT, Required): The question the user is asking. Can be keyword-like or a full natural language question **Output:** Returns search results from Statista's data catalogue *** ## Common Use Cases Manage and organize your Statista data Automate workflows with Statista Generate insights and reports Connect Statista with other tools ## Best Practices **Getting Started:** 1. Enable the Statista integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Statista integration, contact [support@langdock.com](mailto:support@langdock.com) # Stripe Source: https://docs.langdock.com/administration/integrations/stripe Complete payment processing platform with support for payments, subscriptions, invoicing, and financial services ## Overview Complete payment processing platform with support for payments, subscriptions, invoicing, and financial services. Through Langdock's integration, you can access and manage Stripe directly from your conversations. **Authentication:** API Key\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Create customer ##### `stripe.createcustomer` Creates a new customer in Stripe. Use the Email and Name fields for basic info, and Custom Parameters for all other Stripe customer fields. **Requires Confirmation:** Yes **Parameters:** * `email` (TEXT, Optional): Customer's email address. This will be their primary contact and used for invoices. * `name` (TEXT, Optional): Customer's full name or business name. This appears on invoices and in the Stripe dashboard. * `customParameters` (TEXT, Optional): Additional Stripe customer parameters as JSON object. Common fields: description, phone, address (with line1, city, postal\_code, country), shipping, metadata (for custom data like orgID, timezone), preferred\_locales, tax\_exempt, tax\_id\_data (array of tax IDs). For German VAT: tax\_id\_data: \[type': 'eu\_vat', 'value': 'DE123456789]. Full example: description': 'Company ABC', 'phone': '+1234567890', 'address': line1': '123 Main St', 'city': 'Berlin', 'postal\_code': '10115', 'country': 'DE, 'metadata': orgID': 'workspace\_123', 'timezone': 'Europe/Berlin, 'tax\_id\_data': \[type': 'eu\_vat', 'value': 'DE123456789]} **Output:** Returns the created customer details *** ### Update customer ##### `stripe.updatecustomer` Updates an existing customer's information **Requires Confirmation:** Yes **Parameters:** * `customerId` (TEXT, Required): The ID of the customer to update (e.g., cus\_...) * `email` (TEXT, Optional): Customer's email address * `name` (TEXT, Optional): Customer's full name or business name * `description` (TEXT, Optional): An arbitrary string that you can attach to a customer object * `phone` (TEXT, Optional): Customer's phone number * `metadata` (TEXT, Optional): Set of key-value pairs that you can attach to an object **Output:** Returns the updated customer details *** ### Get customer ##### `stripe.getcustomer` Retrieves a customer by ID **Requires Confirmation:** No **Parameters:** * `customerId` (TEXT, Required): The ID of the customer to retrieve **Output:** Returns the customer details *** ### List customers ##### `stripe.listcustomers` Lists all customers with optional filtering **Requires Confirmation:** No **Parameters:** * `email` (TEXT, Optional): Filter customers by email address * `limit` (NUMBER, Optional): Maximum number of customers to return (1-100) **Output:** Returns a list of customers *** ### Create payment intent ##### `stripe.createpaymentintent` Creates a new payment intent for collecting payment **Requires Confirmation:** Yes **Parameters:** * `amount` (NUMBER, Required): Amount to be collected in the smallest currency unit (e.g., cents for USD) * `currency` (TEXT, Required): Three-letter ISO currency code (e.g., usd, eur, gbp) * `customerId` (TEXT, Optional): ID of the customer this payment intent is for * `description` (TEXT, Optional): An arbitrary string attached to the object * `metadata` (TEXT, Optional): Set of key-value pairs that you can attach to an object * `paymentMethodTypes` (TEXT, Optional): Array of payment method types to accept. Example: \['card', 'customer\_balance'] - use 'customer\_balance' for bank transfers * `paymentMethodOptions` (TEXT, Optional): Additional options for payment methods. For bank transfers use: customer\_balance': funding\_type': 'bank\_transfer', 'bank\_transfer': type': 'eu\_bank\_transfer}} or 'us\_bank\_transfer' for US **Output:** Returns the created payment intent details *** ### Confirm payment intent ##### `stripe.confirmpaymentintent` Confirms a payment intent to finalize the payment **Requires Confirmation:** Yes **Parameters:** * `paymentIntentId` (TEXT, Required): The ID of the payment intent to confirm * `paymentMethodId` (TEXT, Optional): ID of the payment method to use **Output:** Returns the confirmed payment intent details *** ### Create subscription ##### `stripe.createsubscription` Creates a new subscription for a customer **Requires Confirmation:** Yes **Parameters:** * `customerId` (TEXT, Required): The ID of the customer to subscribe * `items` (TEXT, Required): List of subscription items, each with a price ID. Example: \[price': 'price\_1234] * `trialPeriodDays` (NUMBER, Optional): Number of trial period days for the subscription * `metadata` (TEXT, Optional): Set of key-value pairs that you can attach to an object * `defaultPaymentMethod` (TEXT, Optional): ID of the default payment method for the subscription * `collectionMethod` (SELECT, Optional): How to collect payment for the subscription. Use 'send\_invoice' for manual bank transfers * `daysUntilDue` (NUMBER, Optional): Number of days until the invoice is due (only used when collection\_method is 'send\_invoice') * `paymentSettings` (TEXT, Optional): Payment settings for the subscription. For bank transfers: payment\_method\_types': \['customer\_balance'], 'payment\_method\_options': customer\_balance': funding\_type': 'bank\_transfer}} * `defaultTaxRates` (TEXT, Optional): Array of tax rate IDs to apply to the subscription. Example: \['txr\_1234'] * `coupon` (TEXT, Optional): The coupon ID to apply to this subscription * `promotionCode` (TEXT, Optional): The promotion code ID to apply to this subscription **Output:** Returns the created subscription details *** ### Cancel subscription ##### `stripe.cancelsubscription` Cancels a customer's subscription **Requires Confirmation:** Yes **Parameters:** * `subscriptionId` (TEXT, Required): The ID of the subscription to cancel * `cancelAtPeriodEnd` (BOOLEAN, Optional): If true, subscription will be canceled at the end of the current period **Output:** Returns the canceled subscription details *** ### Create product ##### `stripe.createproduct` Creates a new product that can be used with prices **Requires Confirmation:** Yes **Parameters:** * `name` (TEXT, Required): The product's name, meant to be displayable to the customer * `description` (TEXT, Optional): The product's description, meant to be displayable to the customer * `active` (BOOLEAN, Optional): Whether the product is currently available for purchase * `metadata` (TEXT, Optional): Set of key-value pairs that you can attach to an object **Output:** Returns the created product details *** ### Create price ##### `stripe.createprice` Creates a new price for a product **Requires Confirmation:** Yes **Parameters:** * `productId` (TEXT, Required): The ID of the product this price is for * `unitAmount` (NUMBER, Required): The unit amount in the smallest currency unit (e.g., cents) * `currency` (TEXT, Required): Three-letter ISO currency code * `recurring` (TEXT, Optional): The recurring components of a price. Example: interval': 'month', 'interval\_count': 1} * `nickname` (TEXT, Optional): A brief description of the price, hidden from customers **Output:** Returns the created price details *** ### Create invoice ##### `stripe.createinvoice` Creates a new invoice for a customer **Requires Confirmation:** Yes **Parameters:** * `customerId` (TEXT, Required): The ID of the customer to invoice * `description` (TEXT, Optional): An arbitrary string attached to the object * `autoAdvance` (BOOLEAN, Optional): Controls whether Stripe will perform automatic collection of the invoice * `collectionMethod` (SELECT, Optional): Either charge\_automatically or send\_invoice * `daysUntilDue` (NUMBER, Optional): Number of days until the invoice is due (required when collection\_method is 'send\_invoice') **Output:** Returns the created invoice details *** ### Add invoice item ##### `stripe.addinvoiceitem` Add an item to a draft invoice **Requires Confirmation:** Yes **Parameters:** * `customerId` (TEXT, Required): The ID of the customer (required) * `invoiceId` (TEXT, Optional): The ID of the invoice to add the item to (optional - if not provided, creates a pending invoice item) * `priceId` (TEXT, Optional): The ID of the price object * `quantity` (NUMBER, Optional): The quantity of units for the item * `amount` (NUMBER, Optional): The amount for a one-time charge (in cents) * `description` (TEXT, Optional): Description for the invoice item **Output:** Returns the added invoice item details *** ### Send invoice ##### `stripe.sendinvoice` Sends an invoice to the customer **Requires Confirmation:** Yes **Parameters:** * `invoiceId` (TEXT, Required): The ID of the invoice to send **Output:** Returns the sent invoice details *** ### Create payment method ##### `stripe.createpaymentmethod` Creates a payment method object representing a customer's payment instrument **Requires Confirmation:** Yes **Parameters:** * `type` (SELECT, Required): The type of payment method (us\_bank\_account, sepa\_debit) * `sepaDebit` (TEXT, Optional): SEPA bank account details if type is 'sepa\_debit'. Example: iban': 'DE89370400440532013000 * `usBankAccount` (TEXT, Optional): US bank account details if type is 'us\_bank\_account'. Example: account\_number': '000123456789', 'routing\_number': '110000000', 'account\_holder\_type': 'individual * `billingDetails` (TEXT, Optional): Billing information (required for bank accounts). Example: name': 'John Doe', 'email': '[john@example.com](mailto:john@example.com)', 'phone': '+15555555555', 'address': line1': '123 Main St', 'city': 'San Francisco', 'state': 'CA', 'postal\_code': '94111', 'country': 'US} **Output:** Returns the created payment method details *** ### Attach payment method ##### `stripe.attachpaymentmethod` Attaches a payment method to a customer **Requires Confirmation:** Yes **Parameters:** * `paymentMethodId` (TEXT, Required): The ID of the payment method to attach * `customerId` (TEXT, Required): The ID of the customer to attach the payment method to **Output:** Returns the attached payment method details *** ### Create charge ##### `stripe.createcharge` Creates a new charge on a payment source **Requires Confirmation:** Yes **Parameters:** * `amount` (NUMBER, Required): Amount to charge in the smallest currency unit (e.g., cents) * `currency` (TEXT, Required): Three-letter ISO currency code * `customerId` (TEXT, Optional): The ID of the customer to charge * `source` (TEXT, Optional): Payment source to charge (payment method ID or token) * `description` (TEXT, Optional): An arbitrary string attached to the charge **Output:** Returns the created charge details *** ### Create refund ##### `stripe.createrefund` Refunds a charge that has been previously created **Requires Confirmation:** Yes **Parameters:** * `chargeId` (TEXT, Optional): The ID of the charge to refund * `paymentIntentId` (TEXT, Optional): The ID of the payment intent to refund * `amount` (NUMBER, Optional): Amount to refund in cents. If not provided, the entire charge is refunded * `reason` (SELECT, Optional): Reason for the refund (duplicate, fraudulent, requested\_by\_customer) **Output:** Returns the created refund details *** ### List charges ##### `stripe.listcharges` Lists all charges with optional filtering **Requires Confirmation:** No **Parameters:** * `customerId` (TEXT, Optional): Only return charges for this customer * `limit` (NUMBER, Optional): Maximum number of charges to return (1-100) **Output:** Returns a list of charges *** ### List payment intents ##### `stripe.listpaymentintents` Lists all payment intents with optional filtering **Requires Confirmation:** No **Parameters:** * `customerId` (TEXT, Optional): Only return payment intents for this customer * `limit` (NUMBER, Optional): Maximum number of payment intents to return (1-100) **Output:** Returns a list of payment intents *** ### List subscriptions ##### `stripe.listsubscriptions` Lists all subscriptions with optional filtering **Requires Confirmation:** No **Parameters:** * `customerId` (TEXT, Optional): Only return subscriptions for this customer * `status` (SELECT, Optional): Only return subscriptions with this status (active, past\_due, unpaid, canceled, incomplete, incomplete\_expired, trialing) * `limit` (NUMBER, Optional): Maximum number of subscriptions to return (1-100) **Output:** Returns a list of subscriptions *** ### List invoices ##### `stripe.listinvoices` Lists all invoices with optional filtering **Requires Confirmation:** No **Parameters:** * `customerId` (TEXT, Optional): Only return invoices for this customer * `status` (SELECT, Optional): Only return invoices with this status (draft, open, paid, uncollectible, void) * `limit` (NUMBER, Optional): Maximum number of invoices to return (1-100) **Output:** Returns a list of invoices *** ### Create checkout session ##### `stripe.createcheckoutsession` Creates a Stripe Checkout session for payment collection **Requires Confirmation:** Yes **Parameters:** * `successUrl` (TEXT, Required): The URL to redirect to after successful payment * `cancelUrl` (TEXT, Required): The URL to redirect to if the customer cancels payment * `mode` (SELECT, Required): The mode of the Checkout Session (payment, subscription, setup) * `lineItems` (TEXT, Optional): List of items the customer is purchasing. Example: \[price': 'price\_1234', 'quantity': 2}] * `customerId` (TEXT, Optional): ID of an existing customer, if one exists **Output:** Returns the created checkout session details *** ### Retrieve balance ##### `stripe.retrievebalance` Retrieves the current account balance **Requires Confirmation:** No **Parameters:** None **Output:** Returns the current account balance *** ### Get customer funding instructions ##### `stripe.getcustomerfundinginstructions` Retrieves bank transfer funding instructions for a customer's cash balance in a specific currency **Requires Confirmation:** No **Parameters:** * `customerId` (TEXT, Required): The ID of the customer to retrieve funding instructions for * `currency` (TEXT, Optional): The currency to retrieve funding instructions for (e.g., eur, usd) **Output:** Returns the funding instructions *** ### List transactions ##### `stripe.listtransactions` Lists all balance transactions **Requires Confirmation:** No **Parameters:** * `limit` (NUMBER, Optional): Maximum number of transactions to return (1-100) * `type` (TEXT, Optional): Only return transactions of this type **Output:** Returns a list of balance transactions *** ### Create tax rate ##### `stripe.createtaxrate` Creates a new tax rate **Requires Confirmation:** Yes **Parameters:** * `displayName` (TEXT, Required): The display name of the tax rate (e.g., 'German VAT') * `percentage` (NUMBER, Required): The tax rate percentage (e.g., 19 for 19%) * `inclusive` (BOOLEAN, Optional): Whether the tax rate is inclusive (true) or exclusive (false) * `country` (TEXT, Optional): Two-letter country code (e.g., 'DE' for Germany) * `description` (TEXT, Optional): Description of the tax rate * `metadata` (TEXT, Optional): Set of key-value pairs that you can attach to an object **Output:** Returns the created tax rate details *** ### Update subscription ##### `stripe.updatesubscription` Updates an existing subscription **Requires Confirmation:** Yes **Parameters:** * `subscriptionId` (TEXT, Required): The ID of the subscription to update * `defaultTaxRates` (TEXT, Optional): Array of tax rate IDs to apply to the subscription. Example: \['txr\_1234'] * `items` (TEXT, Optional): Array of subscription items to update with tax rates. Example: \[id': 'si\_xxx', 'tax\_rates': \['txr\_xxx']}] * `trialEnd` (TEXT, Optional): Unix timestamp for trial end * `cancelAtPeriodEnd` (BOOLEAN, Optional): Whether to cancel at period end * `description` (TEXT, Optional): Description for the subscription * `metadata` (TEXT, Optional): Set of key-value pairs that you can attach to an object * `coupon` (TEXT, Optional): The coupon ID to apply to this subscription * `promotionCode` (TEXT, Optional): The promotion code ID to apply to this subscription **Output:** Returns the updated subscription details *** ### List tax IDs ##### `stripe.listtaxIDs` Lists all tax IDs for a customer **Requires Confirmation:** No **Parameters:** * `customerId` (TEXT, Required): The ID of the customer to list tax IDs for **Output:** Returns a list of tax IDs for the customer *** ### Get tax ID ##### `stripe.gettaxID` Retrieves a specific tax ID for a customer **Requires Confirmation:** No **Parameters:** * `customerId` (TEXT, Required): The ID of the customer * `taxId` (TEXT, Required): The ID of the tax ID to retrieve **Output:** Returns the specific tax ID details *** ### List tax rates ##### `stripe.listtaxrates` Lists all tax rates in your Stripe account **Requires Confirmation:** No **Parameters:** * `active` (BOOLEAN, Optional): Filter by active status (true/false) * `limit` (NUMBER, Optional): Maximum number of tax rates to return (1-100) **Output:** Returns a list of tax rates *** ### Get invoice ##### `stripe.getinvoice` Retrieves a specific invoice by ID with full details including line items **Requires Confirmation:** No **Parameters:** * `invoiceId` (TEXT, Required): The ID of the invoice to retrieve (e.g., in\_...) **Output:** Returns the invoice details with line items *** ### Get subscription ##### `stripe.getsubscription` Retrieves detailed subscription information including current period, items, and products **Requires Confirmation:** No **Parameters:** * `subscriptionId` (TEXT, Required): The ID of the subscription to retrieve (e.g., sub\_...) **Output:** Returns the subscription details *** ### List overdue invoices ##### `stripe.listoverdueinvoices` Lists all invoices that are past their due date, sorted by days overdue **Requires Confirmation:** No **Parameters:** * `customerId` (TEXT, Optional): Only return overdue invoices for this customer * `limit` (NUMBER, Optional): Maximum number of overdue invoices to return (1-100) * `daysOverdue` (NUMBER, Optional): Only return invoices that have been overdue for at least this many days **Output:** Returns a list of overdue invoices *** ## Common Use Cases Manage and organize your Stripe data Automate workflows with Stripe Generate insights and reports Connect Stripe with other tools ## Best Practices **Getting Started:** 1. Enable the Stripe integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Stripe integration, contact [support@langdock.com](mailto:support@langdock.com) # Tableau Source: https://docs.langdock.com/administration/integrations/tableau Business intelligence and data visualization platform for analytics ## Overview Business intelligence and data visualization platform for analytics. Through Langdock's integration, you can access and manage Tableau directly from your conversations. **Authentication:** API Key\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Query view data ##### `tableau.queryviewdata` Extracts data from a specific Tableau view in CSV format **Requires Confirmation:** No **Parameters:** * `workbookId` (TEXT, Required): The unique identifier of the workbook containing the view * `viewId` (TEXT, Required): The unique identifier of the view to extract data from * `filters` (TEXT, Optional): URL parameters to filter the view data, e.g. 'vf\_customer=Fraport\&vf\_date\_range=last\_30\_days' **Output:** Returns the view data in CSV format *** ### List workbooks ##### `tableau.listworkbooks` Gets all workbooks available in the site **Requires Confirmation:** No **Parameters:** None **Output:** Returns a list of workbooks *** ### List views for workbook ##### `tableau.listviewsforworkbook` Gets all views within a specific workbook **Requires Confirmation:** No **Parameters:** * `workbookId` (TEXT, Required): The unique identifier of the workbook to get views from **Output:** Returns a list of views for the workbook *** ### Get view image ##### `tableau.getviewimage` Downloads a PNG image of a specific Tableau view **Requires Confirmation:** No **Parameters:** * `workbookId` (TEXT, Required): The unique identifier of the workbook containing the view * `viewId` (TEXT, Required): The unique identifier of the view to capture as image * `filters` (TEXT, Optional): URL parameters to filter the view before capturing image **Output:** Returns a PNG image of the view *** ## Common Use Cases Manage and organize your Tableau data Automate workflows with Tableau Generate insights and reports Connect Tableau with other tools ## Best Practices **Getting Started:** 1. Enable the Tableau integration in your workspace settings 2. Authenticate using API Key 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your API Key credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Tableau integration, contact [support@langdock.com](mailto:support@langdock.com) # Vertex AI Vector Search Source: https://docs.langdock.com/administration/integrations/vertex-ai Vector search engine with semantic search capabilities ## Overview Vector search engine with semantic search capabilities. Through Langdock's integration, you can access and manage Vertex AI Vector Search directly from your conversations. **Authentication:** Service Account\ **Category:** AI & Search\ **Availability:** All workspace plans ## Available Actions ### Search vector index ##### `vertexaivectorsearch.searchvectorindex` Searches the database for the most relevant information based on the query provided **Requires Confirmation:** No **Parameters:** * `query` (VECTOR, Required): The search query for vector similarity search * `publicDomainName` (TEXT, Required): The public domain name of the vector index you want to query can be found in Google Cloud Console: Vertex AI → Vector Search → Index Endpoints → \[Your Endpoint] → Endpoint info * `projectIdNumber` (TEXT, Required): The id is the "name" of your google project, number is the associated number, you can find both in the Google Cloud Console -> click the settings at utilities in the top right -> in open menu click "Project Settings" -> you'll see both Project ID and Project Number listed * `region` (TEXT, Required): The region of the index / vector database you want to query, can be found in Google Cloud Console: Vertex AI → Vector Search → Index Endpoints → \[Your Endpoint] → Endpoint info, example format: us-central1 * `indexEndpointId` (TEXT, Required): The unique identifier of your Index / vector database, can be found in Google Cloud Console: Vertex AI → Vector Search → Index Endpoints → \[Your Endpoint] → Endpoint info * `deployedIndexId` (TEXT, Required): The deployment name of your Index / vector database, can be found in Google Cloud Console: Vertex AI → Vector Search → Index Endpoints → \[Your Endpoint] → Endpoint info -> Deployed index column in the table **Output:** Returns the most relevant search results from the vector index *** ## Common Use Cases Manage and organize your Vertex AI Vector Search data Automate workflows with Vertex AI Vector Search Generate insights and reports Connect Vertex AI Vector Search with other tools ## Best Practices **Getting Started:** 1. Enable the Vertex AI Vector Search integration in your workspace settings 2. Authenticate using Service Account 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your Service Account credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Vertex AI Vector Search integration, contact [support@langdock.com](mailto:support@langdock.com) # Wrike Source: https://docs.langdock.com/administration/integrations/wrike Wrike is a collaborative work management platform that helps teams plan, manage, and complete projects faster ## Overview Wrike is a collaborative work management platform that helps teams plan, manage, and complete projects faster. Through Langdock's integration, you can access and manage Wrike directly from your conversations. **Authentication:** OAuth\ **Category:** Productivity & Collaboration\ **Availability:** All workspace plans ## Available Actions ### Get folder/project ##### `wrike.getfolderproject` Get detailed information about a specific folder or project **Requires Confirmation:** No **Parameters:** * `folderId` (TEXT, Required): ID of the folder or project (supports comma-separated list up to 1000 IDs) * `withInvitations` (BOOLEAN, Optional): Include invitations in sharedIds list * `plainTextCustomFields` (BOOLEAN, Optional): Strip HTML tags from custom fields * `fields` (TEXT, Optional): Comma-separated list of optional fields to include **Output:** Returns detailed folder/project information *** ### Create task ##### `wrike.createtask` Create a new task in a folder or project. Supports HTML formatting in task description. **Requires Confirmation:** Yes **Parameters:** * `folderId` (TEXT, Required): ID of the folder or project where task will be created * `title` (TEXT, Required): Task title * `description` (TEXT, Optional): Task description with HTML support * `status` (TEXT, Optional): Task status (Active, Completed, Deferred, Cancelled) * `importance` (TEXT, Optional): Task importance (High, Normal, Low) * `dates` (TEXT, Optional): Task scheduling in JSON format * `responsibles` (TEXT, Optional): JSON array of user IDs to assign * `shareds` (TEXT, Optional): JSON array of user IDs to share task with * `parents` (TEXT, Optional): JSON array of parent folder IDs * `followers` (TEXT, Optional): JSON array of user IDs to add as followers * `follow` (BOOLEAN, Optional): Follow the task yourself * `priorityBefore` (TEXT, Optional): Put newly created task before this task ID in task list * `priorityAfter` (TEXT, Optional): Put newly created task after this task ID in task list * `superTasks` (TEXT, Optional): JSON array of parent task IDs to make this a subtask * `metadata` (TEXT, Optional): JSON array of metadata entries * `customFields` (TEXT, Optional): JSON array of custom field values * `customStatus` (TEXT, Optional): Custom status ID for the task **Output:** Returns the created task details *** ### Update task ##### `wrike.updatetask` Update single or multiple tasks **Requires Confirmation:** Yes **Parameters:** * `taskId` (TEXT, Required): ID of the task to update (or use taskIds for multiple) * `title` (TEXT, Optional): New task title * `description` (TEXT, Optional): New task description * `status` (TEXT, Optional): New task status (Active, Completed, Deferred, Cancelled) * `importance` (TEXT, Optional): New task importance (High, Normal, Low) * `dates` (TEXT, Optional): Update task scheduling in JSON format * `addParents` (TEXT, Optional): Put task into specified folders. JSON array of folder IDs * `removeParents` (TEXT, Optional): Remove task from specified folders. JSON array of folder IDs * `addShareds` (TEXT, Optional): Share task with specified users or invitations. JSON array of contact IDs * `removeShareds` (TEXT, Optional): Unshare task from specified users or invitations. JSON array of contact IDs * `addResponsibles` (TEXT, Optional): Add specified users or invitations to assignee list. JSON array of contact IDs * `removeResponsibles` (TEXT, Optional): Remove specified users or invitations from assignee list. JSON array of contact IDs * `addResponsiblePlaceholders` (TEXT, Optional): Add specified placeholders to placeholder assignee list. JSON array * `removeResponsiblePlaceholders` (TEXT, Optional): Remove specified placeholders from placeholder assignee list. JSON array * `addFollowers` (TEXT, Optional): Add specified users to task followers. JSON array of contact IDs * `follow` (BOOLEAN, Optional): Follow task yourself * `priorityBefore` (TEXT, Optional): Put task in task list before specified task ID * `priorityAfter` (TEXT, Optional): Put task in task list after specified task ID * `addSuperTasks` (TEXT, Optional): Add the task as subtask to specified tasks. JSON array of task IDs * `removeSuperTasks` (TEXT, Optional): Remove the task from specified tasks subtasks. JSON array of task IDs * `metadata` (TEXT, Optional): Metadata to be updated (null value removes entry). JSON array of key-value pairs * `customFields` (TEXT, Optional): Custom fields to be updated or deleted (null value removes field). JSON array * `customStatus` (TEXT, Optional): Custom status ID * `restore` (BOOLEAN, Optional): Restore task from Recycled Bin * `effortAllocation` (TEXT, Optional): Set Task Effort fields: mode, totalEffort. JSON object * `billingType` (TEXT, Optional): Task's timelogs billing type * `withInvitations` (BOOLEAN, Optional): Include invitations in sharedIds & responsibleIds lists * `convertToCustomItemType` (TEXT, Optional): Custom Item Type ID to convert task to * `plainTextCustomFields` (BOOLEAN, Optional): Strip HTML tags from custom fields * `fields` (TEXT, Optional): JSON array of optional fields to be included in the response **Output:** Returns the updated task details *** ### Create custom field ##### `wrike.createcustomfield` Create custom field in specified account **Requires Confirmation:** Yes **Parameters:** * `title` (TEXT, Required): Custom field title * `type` (TEXT, Required): Type of custom field (Text, Numeric, Currency, Percentage, Date, Duration, DropDown, Multiple, Checkbox, Contacts, LinkToDatabase) * `spaceId` (TEXT, Optional): Optional space ID * `sharing` (TEXT, Optional): JSON object for sharing settings * `settings` (TEXT, Optional): JSON object for field-specific settings * `shareds` (TEXT, Optional): Comma-separated list of user IDs to share field with (deprecated, use sharing instead) * `description` (TEXT, Optional): Custom field description **Output:** Returns the created custom field details *** ### Create dependency ##### `wrike.createdependency` Add a dependency between tasks **Requires Confirmation:** Yes **Parameters:** * `taskId` (TEXT, Required): ID of the task * `relationType` (TEXT, Required): Type of dependency (FinishToStart, StartToStart, FinishToFinish, StartToFinish) * `predecessorId` (TEXT, Optional): ID of the predecessor task (leave empty if using successorId) * `successorId` (TEXT, Optional): ID of the successor task (leave empty if using predecessorId) * `lagTime` (NUMBER, Optional): Lag time in minutes **Output:** Returns the created dependency details *** ### Create folder comment ##### `wrike.createfoldercomment` Create a new comment in a folder. Supports HTML formatting in comment text. **Requires Confirmation:** Yes **Parameters:** * `folderId` (TEXT, Required): ID of the folder or project * `text` (TEXT, Required): Comment text. Cannot be empty. Supported HTML tags for formatting when plainText=false. * `plainText` (BOOLEAN, Optional): Set to true for plain text, false for HTML format (default: false) **Output:** Returns the created comment details *** ### Create group ##### `wrike.creategroup` Create new groups in the account **Requires Confirmation:** Yes **Parameters:** * `title` (TEXT, Required): Title for the new group * `members` (TEXT, Optional): Array of user IDs to add as members (JSON or comma-separated) * `parent` (TEXT, Optional): ID of parent group (optional) * `avatar` (TEXT, Optional): Avatar configuration as JSON object or initials text * `metadata` (TEXT, Optional): JSON array of key-value pairs for group metadata **Output:** Returns the created group details *** ### Create invitation ##### `wrike.createinvitation` Create an invitation into the current account **Requires Confirmation:** Yes **Parameters:** * `email` (TEXT, Required): Email address for the invitation * `firstName` (TEXT, Optional): First name of the invitee * `lastName` (TEXT, Optional): Last name of the invitee * `userTypeId` (TEXT, Optional): Modern user type ID (preferred over role/external) * `role` (TEXT, Optional): User role (User, Admin, Collaborator) - deprecated, use userTypeId * `external` (BOOLEAN, Optional): Set to true for external user - deprecated, use userTypeId * `subject` (TEXT, Optional): Custom email subject (not available for free accounts) * `message` (TEXT, Optional): Custom email message (not available for free accounts) **Output:** Returns the created invitation details *** ### Create space ##### `wrike.createspace` Create a new space with specified configuration **Requires Confirmation:** Yes **Parameters:** * `title` (TEXT, Required): Title for the new space * `accessType` (TEXT, Required): Space access type (Locked, Private, or Public) * `description` (TEXT, Optional): Optional space description * `members` (TEXT, Optional): JSON array of member objects. Each must have: id (user ID), accessRoleId (role ID), and isManager (boolean) * `guestRoleId` (TEXT, Optional): Role ID for guest access (for public spaces) * `defaultProjectWorkflowId` (TEXT, Optional): Default workflow ID for projects in this space * `suggestedProjectWorkflows` (TEXT, Optional): JSON array of suggested project workflow IDs * `defaultTaskWorkflowId` (TEXT, Optional): Default workflow ID for tasks in this space * `suggestedTaskWorkflows` (TEXT, Optional): JSON array of suggested task workflow IDs * `withInvitations` (BOOLEAN, Optional): Send email invitations to new members * `fields` (TEXT, Optional): JSON array of optional fields to include in response **Output:** Returns the created space details *** ### Create task comment ##### `wrike.createtaskcomment` Create a new comment in a task. Supports HTML formatting in comment text. **Requires Confirmation:** Yes **Parameters:** * `taskId` (TEXT, Required): ID of the task * `text` (TEXT, Required): Comment text. Cannot be empty. Supported HTML tags for formatting when plainText=false. * `plainText` (BOOLEAN, Optional): Set to true for plain text, false for HTML format (default: false) **Output:** Returns the created comment details *** ### Get access roles ##### `wrike.getaccessroles` Returns all access roles in the account **Requires Confirmation:** No **Parameters:** None **Output:** Returns all access roles *** ### Get account ##### `wrike.getaccount` Returns current account information **Requires Confirmation:** No **Parameters:** * `includeCustomFields` (BOOLEAN, Optional): Include custom fields in response * `includeMetadata` (BOOLEAN, Optional): Include metadata in response * `includeSubscription` (BOOLEAN, Optional): Include subscription information in response * `metadataFilter` (TEXT, Optional): JSON object for metadata filtering **Output:** Returns account information *** ### Get all comments ##### `wrike.getallcomments` Get all comments in current account **Requires Confirmation:** No **Parameters:** * `plainText` (BOOLEAN, Optional): Return comments as plain text instead of HTML * `types` (TEXT, Optional): Comma-separated list of comment types (Regular, Email) * `createdDate` (TEXT, Optional): JSON date range object (max 7 days) * `limit` (NUMBER, Optional): Maximum number of comments to return (default 1000) * `fields` (TEXT, Optional): Comma-separated list of additional fields to include * `groupByAuthor` (BOOLEAN, Optional): Group comments by author * `groupByDate` (BOOLEAN, Optional): Group comments by date **Output:** Returns all comments *** ### Get all contacts ##### `wrike.getallcontacts` List contacts of all users and user groups in current account **Requires Confirmation:** No **Parameters:** * `me` (BOOLEAN, Optional): Return only requesting user's contact info * `metadata` (TEXT, Optional): JSON metadata filter for exact key or key-value match * `deleted` (BOOLEAN, Optional): Include deleted contacts * `customFields` (TEXT, Optional): Comma-separated list of custom field IDs to include * `emails` (TEXT, Optional): Comma-separated list of email addresses to filter by * `active` (BOOLEAN, Optional): Filter by active status * `name` (TEXT, Optional): Filter contacts by name * `types` (TEXT, Optional): Comma-separated list of types (Person, Group, Robot) * `fields` (TEXT, Optional): Comma-separated list of additional fields to include **Output:** Returns all contacts *** ### Get custom fields ##### `wrike.getcustomfields` Get custom fields - either all fields or specific fields by IDs **Requires Confirmation:** No **Parameters:** * `customFieldIds` (TEXT, Optional): Comma-separated list of custom field IDs (up to 1000). If not provided, returns all custom fields. * `applicableEntityTypes` (TEXT, Optional): Comma-separated list of entity types (default: WorkItem) * `types` (TEXT, Optional): Comma-separated list of custom field types to filter by (only for getting all fields) * `inheritanceTypes` (TEXT, Optional): Comma-separated list of inheritance types (only for getting all fields) * `title` (TEXT, Optional): Filter custom fields by title (only for getting all fields) **Output:** Returns custom fields *** ### Get folder tree ##### `wrike.getfoldertree` Returns folders in tree or flat mode with organizational analysis **Requires Confirmation:** No **Parameters:** * `folderId` (TEXT, Optional): Optional - Get folders from specific folder * `spaceId` (TEXT, Optional): Optional - Get folders from specific space * `permalink` (TEXT, Optional): Filter by specific permalink * `descendants` (BOOLEAN, Optional): Include descendant folders (affects tree/folders mode) * `metadata` (TEXT, Optional): JSON object for metadata filtering * `customFields` (TEXT, Optional): Filter by custom fields (JSON array) * `customField` (TEXT, Optional): Deprecated - use customFields instead * `updatedDate` (TEXT, Optional): JSON date range for updated date filter * `withInvitations` (BOOLEAN, Optional): Include invitations in sharedIds list * `project` (BOOLEAN, Optional): Filter by project status (true = only projects, false = only folders) * `deleted` (BOOLEAN, Optional): Include deleted folders (true = Recycle Bin, false = Root) * `contractTypes` (TEXT, Optional): JSON array of contract types to filter * `plainTextCustomFields` (BOOLEAN, Optional): Strip HTML tags from custom fields * `customItemTypes` (TEXT, Optional): JSON array of custom item type IDs * `pageSize` (NUMBER, Optional): Number of folders per page (max 1000, only for folders mode) * `nextPageToken` (TEXT, Optional): Pagination token for next page * `customStatuses` (TEXT, Optional): JSON array of custom status IDs * `authors` (TEXT, Optional): JSON array of author user IDs * `owners` (TEXT, Optional): JSON array of owner user IDs * `startDate` (TEXT, Optional): JSON date range for start date filter * `endDate` (TEXT, Optional): JSON date range for end date filter * `completedDate` (TEXT, Optional): JSON date range for completed date filter * `title` (TEXT, Optional): Filter folders by title (contains match) * `fields` (TEXT, Optional): Comma-separated list of optional fields to include **Output:** Returns folder tree structure *** ### Create workflow ##### `wrike.createworkflow` Creates a new workflow in the account **Requires Confirmation:** Yes **Parameters:** * `name` (TEXT, Required): Name of the workflow (max 128 characters) * `description` (TEXT, Optional): Optional workflow description (max 2000 characters) **Output:** Returns the created workflow details *** ### Get task attachments ##### `wrike.gettaskattachments` Returns all attachments of a task **Requires Confirmation:** No **Parameters:** * `taskId` (TEXT, Required): ID of the task to get attachments for * `versions` (BOOLEAN, Optional): Include all versions of attachments * `withUrls` (BOOLEAN, Optional): Include download URLs (valid for 24 hours) * `createdDate` (TEXT, Optional): JSON date range filter - start': 'YYYY-MM-DD', 'end': 'YYYY-MM-DD (max 31 days) **Output:** Returns task attachments *** ### Get task comments ##### `wrike.gettaskcomments` Get comments for a specific task **Requires Confirmation:** No **Parameters:** * `taskId` (TEXT, Required): ID of the task to get comments for * `plainText` (BOOLEAN, Optional): Return comments in plain text format * `types` (TEXT, Optional): Comma-separated list of comment types (Regular, Email) * `groupByAuthor` (BOOLEAN, Optional): Group comments by author ID * `sortBy` (SELECT, Optional): Sort comments by date (newest or oldest) * `fields` (TEXT, Optional): Comma-separated list of additional fields to include **Output:** Returns task comments *** ### Get task dependencies ##### `wrike.gettaskdependencies` Query all dependencies for a specific task **Requires Confirmation:** No **Parameters:** * `taskId` (TEXT, Optional): ID of the task to get dependencies for (required if dependencyIds not provided) * `dependencyIds` (TEXT, Optional): Specific dependency IDs to retrieve (comma-separated, max 100) **Output:** Returns task dependencies *** ### Get user ##### `wrike.getuser` Returns information about single user **Requires Confirmation:** No **Parameters:** * `userId` (TEXT, Required): ID of the user to retrieve **Output:** Returns user information *** ### Modify workflow ##### `wrike.modifyworkflow` Updates workflow configuration or adds/modifies custom statuses **Requires Confirmation:** Yes **Parameters:** * `workflowId` (TEXT, Required): ID of the workflow to modify * `name` (TEXT, Optional): New name for the workflow (max 128 characters) * `description` (TEXT, Optional): Workflow description (max 2000 characters) * `hidden` (BOOLEAN, Optional): Whether the workflow should be hidden from users * `customStatus` (TEXT, Optional): JSON object for adding/modifying custom status (name, color, group required) **Output:** Returns the modified workflow details *** ### Query groups ##### `wrike.querygroups` Get groups information **Requires Confirmation:** No **Parameters:** * `groupId` (TEXT, Optional): Optional - ID of specific group to query * `fields` (TEXT, Optional): Optional fields to include in the response (comma-separated or array) * `metadata` (TEXT, Optional): Filter by metadata (JSON object) * `pageSize` (NUMBER, Optional): Number of groups per page * `pageToken` (TEXT, Optional): Token for pagination **Output:** Returns groups information *** ### Update custom field ##### `wrike.updatecustomfield` Modify an existing custom field **Requires Confirmation:** Yes **Parameters:** * `customFieldId` (TEXT, Required): ID of the custom field to update * `title` (TEXT, Optional): New title for the custom field * `type` (SELECT, Optional): Field type (Text, Numeric, Date, etc. - LinkToDatabase not supported for updates) * `changeScope` (SELECT, Optional): Scope of change application * `spaceId` (TEXT, Optional): ID of the space to associate with the field * `sharing` (TEXT, Optional): JSON object with readerIds and writerIds arrays * `settings` (TEXT, Optional): JSON object with field-specific settings * `description` (TEXT, Optional): Field description * `addShareds` (TEXT, Optional): Array of user IDs to share the field with (deprecated, use sharing instead) * `removeShareds` (TEXT, Optional): Array of user IDs to remove sharing from (deprecated, use sharing instead) * `addMirrors` (TEXT, Optional): Array of mirror field definitions for LinkToDatabase fields * `removeMirrors` (TEXT, Optional): Array of mirror field IDs to remove from LinkToDatabase fields **Output:** Returns the updated custom field details *** ### Update space ##### `wrike.updatespace` Update an existing space configuration **Requires Confirmation:** Yes **Parameters:** * `spaceId` (TEXT, Required): ID of the space to update * `title` (TEXT, Optional): New space title * `description` (TEXT, Optional): Space description * `accessType` (SELECT, Optional): Space access type * `membersAdd` (TEXT, Optional): Array of members to add with id and accessRoleId * `membersRemove` (TEXT, Optional): Array of member IDs to remove from space * `guestRoleId` (TEXT, Optional): ID of the guest role for public spaces (empty to remove) * `defaultProjectWorkflowId` (TEXT, Optional): Default workflow for new projects (empty to remove) * `membersUpdate` (TEXT, Optional): Array of members to update with id and accessRoleId * `suggestedProjectWorkflowsAdd` (TEXT, Optional): Array of workflow IDs to add as suggested for projects * `suggestedProjectWorkflowsRemove` (TEXT, Optional): Array of workflow IDs to remove from suggested for projects * `defaultTaskWorkflowId` (TEXT, Optional): Default workflow for new tasks (empty to remove) * `suggestedTaskWorkflowsAdd` (TEXT, Optional): Array of workflow IDs to add as suggested for tasks * `suggestedTaskWorkflowsRemove` (TEXT, Optional): Array of workflow IDs to remove from suggested for tasks * `withInvitations` (BOOLEAN, Optional): Include invitations in member operations * `fields` (TEXT, Optional): Optional fields to include in the response **Output:** Returns the updated space details *** ### Query tasks ##### `wrike.querytasks` Search through tasks in the account with flexible filtering options **Requires Confirmation:** No **Parameters:** * `folderId` (TEXT, Optional): Optional - Filter tasks by folder/project ID * `responsibles` (TEXT, Optional): Optional - Array of Contact IDs for assignees filter * `status` (TEXT, Optional): Optional - Filter by status (Active, Completed, Deferred, Cancelled) * `importance` (TEXT, Optional): Optional - Filter by importance (High, Normal, Low) * `startDate` (TEXT, Optional): Optional - JSON date range for start dates (YYYY-MM-DD format) * `dueDate` (TEXT, Optional): Optional - JSON date range for due dates (YYYY-MM-DD format) **Output:** Returns matching tasks *** ### Query workflows ##### `wrike.queryworkflows` Returns list of workflows with custom statuses **Requires Confirmation:** No **Parameters:** None **Output:** Returns list of workflows *** ### Update account metadata ##### `wrike.updateaccountmetadata` Update account metadata (key-value pairs). Note: This updates metadata only, not subscription settings. Requires admin privileges. **Requires Confirmation:** Yes **Parameters:** * `metadata(see example below)wrike.updateattachment` Update previously uploaded attachment with new version **Requires Confirmation:** No **Parameters:** * `attachmentId` (TEXT, Required): ID of the attachment to update * `fileContent` (TEXT, Optional): Optional - File content (base64 encoded or plain text) * `fileUrl` (TEXT, Optional): Optional - URL to download file from * `url` (TEXT, Optional): Optional - URL for Wrike to download the file from * `fileName` (TEXT, Optional): Optional - Name for the updated file * `contentType` (TEXT, Optional): Optional - MIME type of the file **Output:** Returns updated attachment details *** ### Update comment ##### `wrike.updatecomment` Update previously posted comment text **Requires Confirmation:** No **Parameters:** * `commentId` (TEXT, Required): ID of the comment to update * `text` (TEXT, Required): New comment text **Output:** Returns updated comment details *** ### Update user ##### `wrike.updateuser` Update user by ID (Admin access required) **Requires Confirmation:** Yes **Parameters:** * `userId` (TEXT, Required): ID of the user to update * `profile` (TEXT, Optional): Optional - JSON profile object with accountId and role * `userTypeId` (TEXT, Optional): Optional - ID of the new user type * `active` (TEXT, Optional): Optional - Whether user should be active (true/false) **Output:** Returns updated user details *** ## Common Use Cases Manage and organize your Wrike data Automate workflows with Wrike Generate insights and reports Connect Wrike with other tools ## Best Practices **Getting Started:** 1. Enable the Wrike integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Wrike integration, contact [support@langdock.com](mailto:support@langdock.com) # Zendesk Source: https://docs.langdock.com/administration/integrations/zendesk Customer support platform for managing tickets and service requests ## Overview Customer support platform for managing tickets and service requests. Through Langdock's integration, you can access and manage Zendesk directly from your conversations. **Authentication:** OAuth\ **Category:** CRM & Customer Support\ **Availability:** All workspace plans ## Available Actions ### Get Article ##### `zendesk.getArticle` Gets a specific article from the Zendesk Help Center by ID **Requires Confirmation:** No **Parameters:** * `articleId` (TEXT, Required): The unique identifier of the article to retrieve **Output:** Returns the article details *** ### Get Ticket ##### `zendesk.getTicket` Gets a specific ticket by ID with basic ticket information **Requires Confirmation:** No **Parameters:** * `ticketId` (TEXT, Required): The unique identifier of the ticket to retrieve **Output:** Returns the ticket details *** ### Get Ticket Conversation Log ##### `zendesk.getTicketConversationLog` Gets a specific ticket by ID along with its complete conversation history and logs **Requires Confirmation:** No **Parameters:** * `ticketId` (TEXT, Required): The unique identifier of the ticket to retrieve **Output:** Returns the ticket with complete conversation history *** ### Find Help Center Articles ##### `zendesk.findHelpCenterArticles` Find articles in the Zendesk Help Center **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): Search for articles containing specific text * `locales` (TEXT, Optional): Filter results by language locale * `categoryIds` (TEXT, Optional): Limit results to articles within a specific category * `sectionIds` (TEXT, Optional): Limit results to articles within a specific section * `tags` (TEXT, Optional): Filter articles by their label names * `updatedAfter` (TEXT, Optional): Filter articles updated after this date * `updatedBefore` (TEXT, Optional): Filter articles updated before this date * `sortBy` (SELECT, Optional): Choose how to sort the article results * `sortOrder` (SELECT, Optional): Choose the direction for sorting results **Output:** Returns matching articles from the Help Center *** ### Find tickets ##### `zendesk.findtickets` Finds existing tickets by searching **Requires Confirmation:** No **Parameters:** * `searchQuery` (TEXT, Optional): A text string for full-text search across all searchable properties * `sortOrder` (SELECT, Optional): Sort order for results * `sortBy` (SELECT, Optional): Sorting parameter for returned results **Output:** Returns matching tickets based on search criteria *** ### Find users ##### `zendesk.findusers` Finds users in Zendesk based on a query string or external ID **Requires Confirmation:** No **Parameters:** * `query` (TEXT, Optional): The search query to find users * `externalId` (TEXT, Optional): Search for a user by their external ID * `page` (TEXT, Optional): The page number for pagination * `perPage` (TEXT, Optional): The number of records to return per page **Output:** Returns matching users *** ### List users ##### `zendesk.listusers` Retrieves a list of users from Zendesk, with optional filtering by role, permission set, or external ID **Requires Confirmation:** No **Parameters:** * `role` (SELECT, Optional): Filters the results by a single role * `roles` (TEXT, Optional): Filters the results by multiple roles * `permissionSet` (TEXT, Optional): For custom roles on Enterprise plan and above * `externalId` (TEXT, Optional): List users by external ID * `page` (TEXT, Optional): The page number for pagination * `perPage` (TEXT, Optional): The number of records to return per page **Output:** Returns a list of users *** ### Create Help Center Article ##### `zendesk.createHelpCenterArticle` Creates a new article in the Zendesk Help Center knowledge base **Requires Confirmation:** Yes **Parameters:** * `sectionId` (TEXT, Required): The ID of the section where the article will be created * `title` (TEXT, Required): The title of the article * `body` (MULTI\_LINE\_TEXT, Required): The main content of the article in HTML format * `locale` (TEXT, Optional): The language/locale for the article * `userSegmentId` (TEXT, Optional): The ID of the user segment that can view this article * `permissionGroupId` (TEXT, Required): The ID of the permission group that can edit and publish this article * `draft` (SELECT, Optional): Whether the article should be created as a draft * `promoted` (SELECT, Optional): Whether the article should be promoted (featured) * `position` (TEXT, Optional): The position of this article within its section * `commentsDisabled` (SELECT, Optional): Whether to disable comments on this article * `labelNames` (TEXT, Optional): Labels/tags to associate with the article * `contentTagIds` (TEXT, Optional): Content tag IDs to attach to the article * `authorId` (TEXT, Optional): The ID of the user who should be credited as the article author * `notifySubscribers` (SELECT, Optional): Whether to send email notifications to article subscribers **Output:** Returns the created article details *** ### Create ticket ##### `zendesk.createticket` Creates a ticket in Zendesk **Requires Confirmation:** Yes **Parameters:** * `subject` (TEXT, Required): The subject line of the ticket * `description` (TEXT, Required): The main body content of the ticket * `isPublic` (SELECT, Optional): Determines whether the comment is visible to the end-user/requester * `priority` (TEXT, Optional): The urgency level of the ticket * `status` (TEXT, Optional): The current state of the ticket in the support workflow * `ticketType` (TEXT, Optional): The category of the ticket * `tags` (TEXT, Optional): Labels applied to the ticket for categorization * `customFields` (TEXT, Optional): Additional ticket fields specific to the organization's Zendesk configuration * `requesterId` (TEXT, Optional): The ID of the user who requested the ticket * `assigneeId` (TEXT, Optional): The ID of the agent the ticket should be assigned to * `groupId` (TEXT, Optional): The ID of the support group the ticket should be assigned to **Output:** Returns the created ticket details *** ### Update ticket ##### `zendesk.updateticket` Updates an existing Zendesk ticket with new information **Requires Confirmation:** Yes **Parameters:** * `ticketId` (TEXT, Required): The ID of the ticket to update * `status` (SELECT, Optional): The new status of the ticket * `customStatusId` (TEXT, Optional): The ID of a custom status to apply to the ticket * `priority` (SELECT, Optional): The new priority level of the ticket * `type` (SELECT, Optional): The new type of the ticket * `assigneeId` (TEXT, Optional): The ID of the agent to assign the ticket to * `groupId` (TEXT, Optional): The ID of the support group to assign the ticket to * `tags` (TEXT, Optional): The new tags to apply to the ticket * `customFields` (TEXT, Optional): The new custom field values to apply to the ticket * `comment` (MULTI\_LINE\_TEXT, Optional): A comment to add to the ticket with this update * `isPublic` (SELECT, Optional): Determines whether the comment is visible to the end-user/requester * `authorId` (TEXT, Optional): The ID of the user who is adding the comment **Output:** Returns the updated ticket details *** ### Reply to ticket ##### `zendesk.replytoticket` Adds a comment/reply to an existing Zendesk ticket **Requires Confirmation:** Yes **Parameters:** * `ticketId` (TEXT, Required): The ID of the ticket to reply to * `comment` (MULTI\_LINE\_TEXT, Required): The content of the reply/comment to add to the ticket * `isPublic` (SELECT, Optional): Determines whether the comment is visible to the end-user/requester **Output:** Returns the reply comment details *** ## Common Use Cases Manage and organize your Zendesk data Automate workflows with Zendesk Generate insights and reports Connect Zendesk with other tools ## Best Practices **Getting Started:** 1. Enable the Zendesk integration in your workspace settings 2. Authenticate using OAuth 3. Test the connection with a simple read operation 4. Explore available actions for your use case **Important Considerations:** * Ensure proper authentication credentials * Respect rate limits and API quotas * Review data privacy settings * Test operations in a safe environment first ## Troubleshooting | Issue | Solution | | --------------------- | --------------------------------------- | | Authentication failed | Verify your OAuth credentials | | Rate limit exceeded | Reduce request frequency | | Data not found | Check permissions and data availability | | Connection timeout | Verify network connectivity | ## Support For additional help with the Zendesk integration, contact [support@langdock.com](mailto:support@langdock.com) # Agent Configuration Source: https://docs.langdock.com/product/agents/configuration There are different tools you can use to configure the agent and tailor it to your specific use case. For more details you can read our detailed [agent creation guide](/resources/agent-creation) of how to build an agent. You have the following configuration options to customize your agent: ### Icon, Name, and Description Short descriptive information to identify the agent and describe how it works to other users. ### Input Type ## Prompt (Default) There are two ways to send user input to your agent. The first is the chat input field you already know from normal chat. This lets you send any message to the agent and receive a response. You can set conversation starters, which are saved prompts users can click instead of writing the first message. These help guide users and reduce the effort needed to get started. ## Form The other input type is the form input field. Forms collect information in a structured way, similar to a survey tool. This helps guide users to understand how much context is necessary for a quality response and collects it in a standardized format that the model can process more easily. ### Instructions Describe what you want to achieve with this agent and define clear instructions. Include as many relevant details and background information as possible. This enables the agent to answer better and more closely to your expectations. Check out our [agent creation guide](/resources/agent-creation) and our [prompting guide](/resources/prompt-elements) for more details. ### Knowledge Attach knowledge and files to your agent. You can either upload files from your computer or attach files from the [integrations](/resources/integrations/using-integrations) to the agent. ### Actions Actions are capabilities you can give to your agent. These can be capabilities of the chat, like [web search](/product/chat/web-search), [image generation](/product/chat/image-generation), or [data analysis](/product/chat/data-analysis). But it can also be requests the agent can send to other tools you use, to e.g. create an email draft, update an entry in your CRM or create a support ticket in your ticketing systems. You can find our integrations guides [here](/resources/integrations/using-integrations). Deep Research is only available in regular chats, not when using agents. To use [Deep Research](/de/product/chat/deep-research), switch to a regular chat session. ### Model Choose which model this agent will use. For details about choosing the right model, refer to our [model guide](/resources/models). ### Creativity AI models choose the next word or token using probabilistic calculations. You can influence how much randomness you allow in generation, which affects creativity levels. ### Sharing In the top right corner, you'll find options to share and use the agent. You can share it with anyone in the workspace or assign editing and usage permissions to specific groups or individuals. ### Usage Insights Click the three dots to find usage insights. This section helps agent creators optimize based on user feedback. There are two sections: Analytics shows quantitative insights like user numbers, messages, and conversations over time. The feedback tab lets you browse through user reactions (likes/dislikes) and comments about what needs improvement. Feedback is only shared with the agent creator when users actively choose to share it. # Introduction to Agents Source: https://docs.langdock.com/product/agents/introduction Agents are specialized chatbots you can configure for specific use cases or documents. They work like regular chat, but with saved context (documents and instructions) so you don't need to set up the same conversation repeatedly. We renamed Assistants to Agents. All features and configurations remain the same. You can find more information [here](https://www.langdock.com/changelog#assistants-are-now-agents). ## Purpose of agents Chat works great for one-time or quick requests. Agents are better when you want to share your setup with others or handle recurring tasks efficiently. Agents can: * Work with specific documents that stay attached to the conversation * Follow custom instructions to behave like a specialized chatbot for your use case * Be shared with colleagues to streamline everyone's workflow We have created a whole library of agents our customers set up and use every day. You can find it [here in our resource section](/resources/agent-templates). ## Internal agents Most agents are focused on internal usage to improve internal processes. Your team can use agents in three ways: * **Through the platform:** You can use/share agents and chat with them in the platform interface. * **Via Slack:** You can add the Slack App to your Slack account and use the Agent from within Slack. Our [guide for the Slack integration](/resources/chatbots/slack) describes this integration in detail. * **Via Teams (coming soon):** Similar to the Slack integration, we will release a Teams app that can be added to your Teams account so users can directly chat with agents in Teams. ## External agents External agents will be shareable outside of Langdock. As no Langdock license is required to use them, this feature will have usage-based pricing, similar to the pricing of model providers like OpenAI, Anthropic, etc. * **Via API:** For developer use cases and other situations, it makes sense to use attached documents but send messages to an agent outside the interface. This will allow you to build your chatbots for internal and external communication with your own interface. # Agent Usage Insights Source: https://docs.langdock.com/product/agents/usage-insights Agent Usage Insights shows data on agent usage and user feedback. Use this page to review activity metrics, analyze feedback, and export data for further analysis. ## Usage Insights Usage Insights provides comprehensive data about how your agent performs and how users interact with it. This section helps you optimize your agent based on both quantitative metrics and qualitative user feedback. Access Usage Insights by clicking the three dots menu next to your agent's Share button and selecting **Usage Insights**. Both Analytics and Feedback data are available to agent creators and editors, giving you the insights needed to continuously improve your agent's effectiveness. ### Analytics The Analytics tab provides quantitative insights into your agent's usage patterns and adoption metrics. This data helps you understand user engagement and identify trends over time. #### Overview Metrics You can view three key all-time statistics for your agent: * **All-time users**: Total number of unique users who have interacted with your agent * **All-time conversations**: Total number of conversation sessions initiated with your agent * **All-time messages**: Total number of messages exchanged with your agent #### Custom Timeframe Analysis For more detailed insights, you can set custom timeframes to analyze specific periods: 1. **Daily Active Users** 2. **Conversations per Day** 3. **Messages per Day** Use custom timeframes to compare performance before and after making changes to your agent's configuration, helping you measure the impact of your improvements. *** ### Feedback Feedback is automatically enabled for all agents with no additional setup required from you as the creator. This built-in system helps you understand how users interact with your agent and identify areas for improvement. Feedback collection runs automatically in the background. Users can provide feedback on any agent response without interrupting their workflow. #### How Users Provide Feedback When interacting with your agent, users have several options to share their experience: * **Quick Rating** Users can rate any agent response with a simple thumbs up or thumbs down directly in the chat interface. * **Optional Contact Information** Users can choose to share their name and email address with their feedback, making it easier for you to follow up on specific issues or suggestions. * **Chat Sharing** Users can decide to share the entire chat conversation with you. This works similarly to sharing a chat with a colleague, but only you as the creator of the agent will have access to view it. * **Detailed Comments** Users can add written comments explaining their feedback, providing specific context about what worked well or what needs improvement. #### Accessing Your Feedback You can review all feedback submissions through the Usage Insights section: 1. Open your agent 2. Click the three dots menu 3. Select **Usage Insights** 4. Navigate to the **Feedback** tab The Feedback tab organizes submissions into positive and negative categories, making it easy to identify patterns and prioritize improvements. In the feedback section, you'll see: * **Positive and negative feedback** organized separately * **User comments** when provided * **Shared chat conversations** for detailed context * **Contact information** when users choose to share it ### Data Export Both Analytics and Feedback data can be exported separately as CSV files for external analysis, reporting, or record-keeping purposes. * **Export Analytics** Download quantitative usage data including user metrics, conversation counts, and message volumes for your specified timeframe. * **Export Feedback**\ Download qualitative feedback data including ratings, comments, and user contact information when shared. # Actions in Chat Source: https://docs.langdock.com/product/chat/actions-in-chat Access any integration, Agent, Knowledge Folder, or saved prompt directly in chat using the @ symbol for seamless workflow integration. # Actions in Chat Actions in Chat transforms your Langdock experience by bringing all your tools directly into any conversation. Instead of switching between different interfaces, you can access integrations, Agents, Knowledge Folders, and saved prompts with a simple @ symbol, creating a unified Chat where everything you need is just a mention away. Actions in Chat works in both regular chats and Agent conversations, giving you consistent access to your tools regardless of where you're working. ## How Actions in Chat Works Type `@` in any chat input field to open the actions menu. This works in both regular chats and when conversing with specific Agents. The @ symbol acts as your universal access point to all Langdock resources, making it easy to remember and use consistently. Start typing to search through your available options, or browse through the first 20 items displayed. The search covers: * **Integrations**: Connect to external services and APIs * **Agents**: Access specialized AI helpers you've created or shared with you * **Knowledge Folders**: Reference specific document collections * **Saved Prompts**: Use templates from your prompt library Only the first 20 matching results appear initially. Type specific names to narrow down results and find exactly what you need. Either press Enter to select the highlighted option or click directly on the tool you want to use. The chat interface will update to show your selection. Once added, you'll see the tool's logo and name displayed in blue within the chat interface, confirming the active connection. The visual indicator ensures you always know which tools are active in your current conversation. ## Adding Multiple Tools After adding your first integration or tool, a **+** button appears in the chat interface. Click this button to add additional tools to the same conversation. This approach works well when you know you need multiple specific tools for a complex task. You can type `@` again at any point in the conversation to add more tools. This method feels natural when you discover you need additional resources mid-conversation. Both methods give you the same functionality, so choose whichever feels more intuitive for your workflow. ## Key Differences from Agent Integrations **Programmatic Control**: Integrations are pre-configured with specific actions and workflows defined during Agent creation. **Predictable Behavior**: The Agent knows exactly which actions to call and when, based on your setup. **AI-Driven Selection**: The model analyzes your request and chooses appropriate actions from available integrations dynamically. **Flexible Access**: You have the same integration capabilities as Agents, but with real-time decision making. Actions in Chat can only access integrations and tools that you could also use when creating an Agent. The available actions are determined by your permissions and the integrations configured in your workspace. ## Cross-Context Usage Actions in Chat works seamlessly across different conversation types: * **Regular Chats**: Access any tool to enhance your standard conversations * **Agent Conversations**: Add integrations or call other Agents while chatting with a specific Agent * **Mixed Workflows**: Combine multiple Agents, integrations, and knowledge sources in a single conversation This cross-context functionality is particularly powerful for complex workflows where you might need to consult multiple specialized Agents or access different data sources within the same conversation thread. ## Troubleshooting **Check permissions**: Ensure you have access to the integration, Agent, or Knowledge Folder you're looking for. **Verify spelling**: Double-check the name you're typing matches the actual resource name. **Try broader terms**: If searching for a specific name doesn't work, try searching for related keywords. **Confirm integration status**: Check that the integration is properly configured and active in your workspace. **Review permissions**: Ensure the integration has the necessary permissions to perform the requested actions. **Check connection**: Some integrations may require re-authentication or have temporary connectivity issues. ## Next Steps Now that you understand Actions in Chat, explore these related features: * **[Creating Integrations](/resources/integrations/create-integrations)**: Build custom integrations for your specific workflow needs * **[Agent Creation](/resources/agent-creation)**: Design specialized Agents that work seamlessly with Actions in Chat * **[Knowledge Folders](/resources/integrations/knowledge-folders)**: Organize your documents for easy access via @ mentions Actions in Chat creates a unified interface where all your Langdock tools work together, eliminating the need to switch contexts or remember different access methods. # Canvas for development Source: https://docs.langdock.com/product/chat/canvas-for-development Canvas gives you a dedicated editing screen alongside your chat where you can iterate on code or text much more easily. This page focuses specifically on Canvas for development tasks like adding debug logs, fixing bugs, or generating new code from scratch. ## How to select Canvas To use Canvas, open a new chat and select a model that supports Canvas. You'll see Canvas availability indicated by icons in the model selector if the Canvas icon is greyed out, that model doesn't support Canvas. Canvas works best with GPT-4.1 at the moment. Langdock Model selector with the model card When using models that support Canvas, activate it by clicking the Canvas button in the input bar at the bottom of your screen. Once you activate Canvas, the button will highlight to confirm it's active, and you can begin creating and editing in Canvas. Image shows how the input bar looks when canvas is selected ## How to use Canvas Canvas automatically opens on the right side after you send your prompt and the AI generates a response. You now have several options to continue: ### In-line editing You can edit the output directly in the Canvas editor on the right. You can type and modify text manually, or select specific sections to have the model reformat or rewrite just those parts. Canvas 10 New Pn Canvas 11 New Pn ### Previewing and Running code You can now execute your code directly in Canvas! This means you can preview React components or run Python scripts without switching back to your IDE. Look for the "Run Code" button or "Preview" toggle in the top right corner. Click either one to execute your code instantly. This works because Canvas now includes a sandboxed runtime environment that can handle both React rendering and Python execution, making your development workflow much smoother. Canvas 12 New Pn Canvas 13 New Pn ### Optimizing the whole text generally By clicking this button, the model will analyze your code structure and add inline comments explaining the logic, function purposes, and complex operations throughout your codebase. *** Canvas 14 New Pn By clicking this button, the model will automatically insert console.log statements at key execution points to help you debug your code. Canvas 15 New Pn By clicking this button, the model will analyze your code for common issues (syntax errors, logic bugs, security vulnerabilities) and automatically apply fixes where possible. Canvas 16 New Pn By clicking this button, the LLM will analyze your code structure, and provide specific suggestions for improvement (like refactoring opportunities, performance enhancements, or best practices). Canvas 17 New Pn ### Versioning On the top right, you'll find a version selector that automatically saves each iteration as you refine your text. Navigate between versions to compare changes and restore any previous version that better fits your needs. Canvas 18 New Pn ### Copy and Export When you're ready to use your content, click the copy button (top right) to copy the entire text to your clipboard for pasting directly into your IDE or elsewhere. Alternatively, click "Export" to download the file in its native format (.py for Python scripts, .html for HTML files, .js for JavaScript, etc.). Canvas 19 New Pn ### Multiple Canvas in one Chat You can open multiple Canvas instances in one chat session. Switch between them using the Canvas selector (top right, next to the share button) or scroll to find the specific Canvas in your chat history. Text Canvas display a the Canvas icon, while Dev Canvas show a code icon for easy identification. Image shows how multiple Canvas in one chat look like # Canvas for writing Source: https://docs.langdock.com/product/chat/canvas-for-writing Canvas gives you a dedicated editing screen alongside your chat where you can iterate on code or text much more easily. This page focuses specifically on the Canvas writing features for tasks like drafting emails, documents, or any text content. ## How to select Canvas To use Canvas, open a new chat and select a model that supports Canvas. You'll see Canvas availability indicated by icons in the model selector if the Canvas icon is greyed out, that model doesn't support Canvas. Canvas works best with GPT-4.1 at the moment. Langdock Model selector with the model card Models that support Canvas automatically launch the feature when it is considered suitable. If you want the model to explicitly use the tool, activate it by clicking the Canvas button in the input bar at the bottom of your screen. Once you activate Canvas, the button will highlight to confirm it's active, and you can begin creating and editing in Canvas. Image shows how the input bar looks when canvas is selected ## How to use Canvas Canvas automatically opens on the right side after you send your prompt and the AI generates a response. You now have several options to continue: ### In-line editing You can edit the output directly in the Canvas editor on the right. You can type and modify text manually, or select specific sections to have the model reformat or rewrite just those parts. Image shows in-line editing in Canvas Image shows AI assisted in-line editing in Canvas ### Optimizing the whole text generally At the bottom right corner you'll find three buttons to optimize your text: By clicking this button, the entire text in Canvas will be expanded with additional detail and context. Button to ask the Model to make the text longer By clicking this button, the entire text in Canvas will be condensed to its key points. Button to ask the Model to make the text shorter By clicking this button, the AI will analyze your text and provide improvement suggestions. Button to ask the Model to suggest edits ### Formatting You can manually format text in Canvas using the formatting toolbar in the top right. Available options include **bold**, *italic*, headings (H1-H3), and lists (bulleted and ordered). Image shows formatting options in Canvas ### Editing in the regular chat You can also give specific instructions in the regular chat if these formatting options don't cover what you need. ### Versioning On the top right, you'll see a version selector that lets you view previous iterations of your text. You can navigate between versions and restore whichever one works best for your needs. Image shows versioning options in Canvas ### Copy and Export When you're ready to use your content, you'll find a copy button on the top right that copies the entire text to your clipboard for pasting elsewhere. You can also choose from three export formats (PDF, Word, or Markdown) that will download your Canvas content in your preferred file format. Image shows exporting options from Canvas ### Multiple Canvas in one Chat You can open multiple Canvas instances in one chat session. Switch between them using the Canvas selector (top right, next to the share button) or scroll to find the specific Canvas in your chat history. Text Canvas display a the Canvas icon, while Dev Canvas show a code icon for easy identification. Image shows how multiple Canvas in one chat look like # Data Analysis Source: https://docs.langdock.com/product/chat/data-analysis To process tabular files like CSVs, Google Sheets or Excel Sheets, you can use the data analyst / python tool. Here is how to use it. The **more context and details** you add, the **better your response** because the model understands precisely what you expect. Do not miss our [Prompt Engineering Guide](/resources/prompt-elements) to learn how to write great prompts. The data analysis tool in Langdock enables users to (among other things) read and process CSV files, Excel or Google Sheets. You can use the data analysis tool to: * Read tabular data (CSVs, Excel sheets, and Google Sheets) * Perform mathematical operations, e.g., finding correlations, defining distributions or deviations, etc. * Create graphs and charts depicting data * Generating new files (Excel, CSV, PowerPoint, Word, etc.) Describe what you're trying to accomplish in the chat. Try to be as specific as possible. ## How it works 1. The data analyst is a tool the model can choose. It gets triggered when you prompt the model to use it ("use the data analyst") or when the according file is uploaded (GSheets, CSVs, Excel files). Here is an example of a file we will use in Langdock: Example Data Sheet To receive the best results, please use **GPT-4o** and ensure that the **column titles are in the first row**. 2. The model then generates Python code. Python is a programming language that can be used to analyze datasets and extract information. In the dark code block at the top you can see the generated Python code to analyze our example file: Model Generating Python code in Langdock to analyse the file 3. After the code has been generated, a separate instance runs the Python code and returns the result to the model. It is shown under the code block in the screenshot above. 4. The model uses the prompt and the result to answer the user's question. In our example, this looks like this: Text output from the user prompt and the attached data set 5. If you request a file or a diagram, the model generates code again to generate the file and executes it afterwards. The generated file or diagram is then displayed in the chat and can be downloaded. Model Generating a visualisation of the Data ## Differences to other documents The normal document search and the data analyst are different functionalities for different tasks with advantages and disadvantages. The document search is good at understanding a **whole document content**. It is not good at processing tabular data. The data analyst **can not understand the entire file**, but only the part that is extracted with Python. Everything else in the file has not been considered for the response. But this makes it powerful in working with large data sets and tabular data, as well as performing mathematical operations. ## Best practices and troubleshooting * In order to parse the file correctly, all column titles should have a descriptive name. When referring to the column name, ideally use the full column title and not “Column K”. This is relevant as the AI model creates Python code which can only reference the correct column if the name is the same. Giving the same column name reduces the risk of letting the model generate code that references an incorrect column. * Make sure to enable the data analysis functionality in your settings and (if you are using a sheet in an agent) also in the capabilities section at the bottom of the agent editor. * Try to describe what you expect as precisely as possible. You can use the prompt elements from our prompt engineering guide (especially task, context, response format) * If possible, avoid empty cells in a sheet. * When you expect complex operations and receive no result or incorrect results, try to break the instruction into different prompts. # Deep Research Source: https://docs.langdock.com/product/chat/deep-research Deep Research creates comprehensive, citable reports by conducting strategic web searches and synthesizing findings from multiple sources. ## What is Deep Research? Deep Research tackles complex research projects by intelligently planning multiple strategic web searches across different angles, then synthesizing findings into comprehensive reports with proper citations. It's designed for when you need thorough investigation rather than quick answers. ## When to use Deep Research Deep Research is particularly powerful for: * **Background research** - Comprehensive overviews of topics, companies, or industries * **Market analysis** - Understanding market trends, sizing, and competitive landscapes * **Competitive analysis** - In-depth competitor research and positioning * **Academic research** - Literature reviews and multi-source academic investigations * **Strategic planning** - Research to inform business decisions and strategy * **Industry trends** - Understanding emerging trends and their implications Use Deep Research when you need thorough, well-documented analysis rather than quick facts or casual conversation. The resulting report with citations can be downloaded as a PDF, saving you hours of manual research and compilation. ## How Deep Research works 1. **Intelligent planning** - Deep Research analyzes your query and creates a strategic research plan 2. **Multi-source searching** - It conducts multiple web searches from different angles to gather comprehensive information 3. **Real-time visibility** - You can watch the search activity in real-time and see sources as they are added 4. **Synthesis and analysis** - All findings are analyzed and synthesized into a structured report 5. **Citation and documentation** - Every claim is properly cited with source links for verification No matter which model you select in the chat, Deep Research always uses pre-configured models (specifically optimized for research tasks) to ensure the best possible quality and consistency. ## Usage limits Deep Research has a usage limit of **15 searches** **per user per month** to ensure optimal performance for all users. This limit resets monthly and applies across all workspaces. ## Getting started Deep Research is now available across all workspaces. To use it: ### 1. Select "Deep Research" from the tools in the chat ### 2. Enter your research query Be specific about what you need (e.g., "Compare pricing models for SaaS platforms" vs. "Tell me about SaaS") Deep Research activated in Chat ### 3. Answer the Follow up questions Deep Research follow up questions ### 4. Watch as Deep Research conducts its investigation in real-time Deep Research conducts its investigation in real-time And see what sources are being read at which moment. See what sources are being read at which moment for the Deep Research ### 5. Review the comprehensive report with citations Review the comprehensive report with citations View the Activity of the Deep Research. Deep Research 9 Pn And inspect all sources of the report. Deep Research 10 Pn ### 6. Download as PDF if needed for sharing or offline reference Download Deep Research ### Deep Research vs. Regular Chat | | **Deep Research** | Regular Chat | | --------- | --------------------------- | --------------- | | Speed | 5-30 minutes | Instant | | Sources | Multiple strategic searches | Limited | | Output | Structured reports | Conversational | | Citations | Comprehensive | Basic | | Best for | In-depth analysis | Quick questions | Deep Research transforms how you approach complex research tasks, providing the depth and rigor of manual research with the efficiency of AI automation. # Document Search Source: https://docs.langdock.com/product/chat/document-search To access specific knowledge in files, you can use the document search tool. Simply upload or connect a file and you will take the document into account. The **more context and details** you add, the **better your response** because the model understands precisely what you expect. Do not miss our [Prompt Engineering Guide](/resources/prompt-elements) to learn how to write great prompts. Document search is one tool the AI models have. You can add documents by either uploading them, through drag and drop or by selecting a file from an integration (how to set up integrations can be read [here](/resources/integrations/using-integrations). When you attach a document to a chat, document search automatically kicks in. Document search extracts text from files, such as PDFs, Word documents, or PowerPoint presentations. You will find a list of all supported file types [here](/resources/faq/supported-file-types). The document's text gets sent to the AI model along with your prompt, allowing it to answer questions based on the actual content. **Use cases for working with documents are:** * Summarizing texts * Asking questions about a document * Analyzing the files **Current limitations of document search:** * Table data extraction isn't reliable yet. For tables, try our [Data Analyst](/product/chat/data-analysis) with CSV/Excel files, Google Sheets integration, or screenshot the table and work with the image instead. * Images, graphs, and non-text symbols in the documents can't be processed # Basic Chat functionalities Source: https://docs.langdock.com/product/chat/functionalities To select a model and interact with the messages and responses in the chat, there are a few functionalities in the chat. These are the model selector in the top left corner and the buttons to interact with prompts and responses. ## Model Selector Langdock is model-agnostic, integrating the best AI models in a GDPR-compliant EU setting - regardless of provider. * **GPT-5 family** - GPT-5, GPT-5 mini, GPT-5 nano & GPT-5 Chat - **GPT-4.1** - OpenAI's 2024 flagship large model * **Claude Sonnet 4** - Anthropic's reasoning-focused model - **Gemini 2.5 Pro** - Google's multimodal model See our complete [model guide](/resources/models) for the full list of available models and their specific capabilities. To choose a model for your next response: 1. Click the model name in the top-left corner of the chat window 2. Pick the model that best fits your task - your next message will use it automatically You can learn more about the current models in Langdock in our [model guide](/resources/models). ## Prompt functionalities Hover over your prompt to see available actions. ### Edit prompt If you're unsatisfied with a response, edit the prompt by clicking the pen icon. Click save when ready. It's normal to iterate on your instructions when using AI models and add more context where needed. Edit a prompt by clicking on the pen icon ### Save prompt To reuse a prompt, save it by clicking the "+" icon. Choose a folder in your prompt library and give your prompt a name. Learn more about the prompt library [here](/product/chat/prompt-library). Save the prompt to the prompt library by pressing the little plus icon ## Response functionalities If you move the cursor of your mouse over the response, you can see the functionalities connected to the response. ### Copy response Click the copy button to save the response to your clipboard, then paste it into other tools and applications. Copy the response to your clipboard by clicking on the clipboard icon ### Regenerate response If you're unsatisfied with a response, click the circular arrow to regenerate it. This works because AI models are non-deterministic, meaning you'll get slightly different results for the same prompt. You can compare multiple responses and pick the best one. If responses are still insufficient, try editing your prompt with more specific details. Regenerate the answer and select a model by clicking on the circular arrow # Image Analysis (Vision) Source: https://docs.langdock.com/product/chat/image-analysis A few models are capable of processing images and taking them into account for their answer generation. This works because these models have multimodal capabilities, meaning they can understand both text and visual content simultaneously. You can use this to extract text from documents, describe what's in images, or analyze visual data. The **more context and details** you add, the **better your response** because the model understands precisely what you expect. Do not miss our [Prompt Engineering Guide](/resources/prompt-elements) to learn how to write great prompts. Apart from uploading text files, you can also upload images (JPG, PNG) to the chat and let the model analyze them. This capability is called “vision”. The following models support it: * GPT-5 * GPT-5 mini * GPT-5 nano * GPT-5 Chat * GPT-4.1 * GPT-4.1 mini * GPT-4.1 nano * GPT-4o * GPT-4o mini * o1 * o3 * o4 mini * Claude Sonnet 4.5 * Claude Sonnet 4 * Claude 3.7 Sonnet * Claude 3.5 Sonnet * Gemini 2.5 Pro * Gemini 2.5 Flash Image analysis is limited to images uploaded in the chat and not available in uploaded PDFs or presentations yet. # Image Generation Source: https://docs.langdock.com/product/chat/image-generation To generate images based on your text input, you can use the image generation tool. Here, the model you selected sends a prompt to an image generation model from our providers, which are specifically built for image generation. The **more context and details** you add, the **better your response** because the model understands precisely what you expect. Do not miss our [Prompt Engineering Guide](/resources/prompt-elements) to learn how to write great prompts. The image models currently available in Langdock include Flux1.1 Pro Ultra and Flux.1 Kontext from our partner Black Forest Labs. Additionally, you can access Imagen 4, Imagen 4 Fast, and Gemini 2.5 Flash Image (Nano Banana) from Google, as well as DALL-E 3 and GPT Image 1 from OpenAI. Image generation uses the following steps: 1. You can use image generation in Langdock via the "Image"-button in the chat field. This will use the default image model. You can also select a different model using the selector in the button. 2. The chat model will then choose the image generation tool and writes a prompt to the image model in the background. 3. The image model generates the image based on the prompt and returns it to the main model and you as the user. You can select any language model for image generation. Each model sends prompts to the underlying image generation model differently, so feel free to try different models and see how the generated images differ. Here's a known limitation we're working on: * **Text in images has mistakes / is written in non-existing letters:** This happens because the models are trained on real images that included text. The model generates objects that look similar to what it learned, but it can't write full, correct sentences yet. Instead, it tries to mimic letters from the alphabet, leading to incorrect spelling or non-existing letters. This is a current limitation of image generation models that OpenAI is actively improving in upcoming versions. # Memory Source: https://docs.langdock.com/product/chat/memory Memory offers deeper personal customization of the model's behavior, by allowing them to remember information from past interactions. ## What is Memory? Memory is a way to store information in the model's context. This information can be used improve the model's responses to questions or to perform tasks in the future. Additionally, it allows you to carry over context from one conversation to the next. Memory example image Some examples of how you can use memory: * Remember certain details about your job * Share a preference for a specific style of writing * Remember your name and other personal details All your memories are stored in your account, and are available to you in all your chats. However, memories are not available when using Agents. ### Usage To use memory, you need to enable it in your settings. Go to your account settings, then the "Preferences" tab. There you can enable chat memory in the capabilities section. ### Inspect and edit memories You can view and manage all your memories by going to the "Memory" tab in your account settings. There you'll also find an edit option if you want to adjust the wording without having to go through the memory creation process again. Edit memories in settings ### Limitations You can store a maximum of 50 memories at a time. If you want to store more, you can delete some of the older memories by visiting the "Memory" tab in your account settings. # Mermaid Diagrams Source: https://docs.langdock.com/product/chat/mermaid Create interactive flowcharts, process diagrams, and visualizations with AI-generated Mermaid code in Langdock # Generating Mermaid Diagrams Transform your ideas into clear, interactive diagrams using Langdock's AI-powered Mermaid generation. Whether you need flowcharts, process diagrams, or system architectures, our models create precise Mermaid code that renders instantly in an interactive frame. ## How Mermaid Generation Works When you request a diagram, Langdock's AI models analyze your requirements and generate Mermaid syntax that renders immediately in your chat. The process is conversational and iterative, allowing you to refine your diagram until it perfectly matches your vision. Describe the diagram you want to create. Be specific about the type (flowchart, sequence diagram, etc.) and include key elements you want to visualize. Create a flowchart showing the user authentication process The more specific your request, the better the initial result. Include details like decision points, process steps, and relationships between elements. The model creates Mermaid syntax based on your description. If your request is unclear, the model may ask follow-up questions to ensure accuracy. Different models may interpret your request slightly differently, so feel free to try various models if the first result doesn't match your expectations. Once the Mermaid code is generated, a new frame opens in your chat displaying the rendered diagram with full interactivity. You'll see your diagram rendered immediately with zoom controls and navigation options available. ## Interacting with Your Diagram The diagram frame provides several interaction options to help you examine and work with your visualization. ### Navigation Controls #### Top-left corner icons: * **Zoom In** : Magnify specific parts of your diagram for detailed examination * **Zoom Out** : Get a broader view of complex diagrams * **Reset View** : Return to the original zoom level and position Use zoom controls when working with large, complex diagrams to focus on specific sections without losing context. #### Navigate within the frame: * **Click and drag**: Move around large diagrams to examine different sections * **Responsive interaction**: The diagram responds immediately to your movements ### Export and Sharing Options The top-right corner of the frame contains three export options: Download a PNG file of your diagram, perfect for presentations, documentation, or sharing with stakeholders. Copy the raw Mermaid syntax to your clipboard for use in other tools, documentation systems, or version control. Save the diagram as a **.mermaid** file for editing in specialized tools or integration with development workflows. ## Refining Your Diagram If your diagram doesn't match your vision exactly, you can easily request modifications through natural conversation. * **Color changes**: "Make the decision nodes blue and the process steps green" * **Text adjustments**: "Change 'User Login' to 'Authentication Process'" * **Structure modifications**: "Add a step for password validation before the success path" * **Style updates**: "Use rounded rectangles instead of sharp corners" * **Layout improvements**: "Arrange the nodes vertically instead of horizontally" Tell the model exactly what you want to modify. Be specific about colors, text, structure, or layout changes. Change the color of the error handling boxes to red and add a retry loop The AI processes your feedback and creates updated Mermaid code incorporating your requested changes. A fresh diagram frame appears with your modifications, ready for further interaction or export. The updated diagram maintains all previous elements while incorporating your specific changes. Complex diagrams with many elements may take a moment to render. The interactive frame will appear once the diagram is fully processed. # Projects Source: https://docs.langdock.com/product/chat/projects Group related chats with shared files and custom instructions for better workflow organization # Projects Projects provide a flexible way to organize your chats around specific contexts, making it easier to work on larger initiatives while keeping all related conversations together. ## What are Projects? Projects are containers that group related chats in a specific context. Whether you're working on a marketing campaign, product launch, or research initiative, Projects help you: * **Group related chats** - Keep all conversations about a specific topic or initiative together * **Share files across chats** - Attach documents once and access them in all project chats without re-uploading * **Customize AI behavior** - Set project-specific instructions that apply to all chats within the project * **Maintain context** - Work on larger projects without losing track of relevant information ## How Projects Work Projects enhance your workflow through shared context: 1. **Create a project** for your specific purpose (e.g., "Q4 Marketing Campaign" or "Product Research") 2. **Upload relevant documents** that will be accessible across all project chats 3. **Set custom instructions** to guide the AI's behavior for this specific project 4. **Start chatting** with full access to the project context and files ## Creating a Project ### From the sidebar 1. **If you have existing projects**: Hover over the "Projects" header in the sidebar to reveal a **+** button, then click it 2. **If you have no projects yet**: Click the "New project" item that appears in the sidebar ### Using keyboard shortcuts Press `⌘/Ctrl + K` to open the command palette and type "new project" ## Setting Up Your Project When creating a project, you can configure: ### Project basics * **Name**: Choose a descriptive name that identifies the project's purpose * **Description** (optional): Add context about the project's goals or scope ### Attached files Upload documents, spreadsheets, presentations, or other files that are relevant to your project. These files will be automatically available in all chats within the project - no need to upload them repeatedly. ### Custom instructions Define project-specific instructions that customize how the AI responds within this project's chats. For example: * "Always use formal business language for this client project" * "Focus on technical accuracy and include code examples" * "Summarize responses in bullet points for easy scanning" ## Working with Projects ### Starting a chat in a project Once your project is set up, any new chat you create within it will automatically: * Have access to all project files * Apply your custom instructions * Be grouped with other project chats for easy navigation ### Managing project content * All chats within a project share the same context * You can update files or instructions at any time * Changes to project settings apply to all future chats ## Sharing Projects Share entire projects with your team to collaborate effectively. When you share a project, team members get access to all chats, files, and custom instructions within that project. Sharing a project will also share all chats inside it. New chats added to the project will automatically be shared with the same people or groups. ### Sharing a project 1. Open your project 2. Click the **Share** button in the top right corner 3. Search for users or groups within your workspace 4. Select the permission level for each collaborator 5. Optionally enable email notifications with a custom message ### Who you can share with Projects can be shared with: * **Individual users** within your workspace * **Groups** within your workspace (you must be an editor or admin of the group to share with it) Projects cannot be shared with the entire workspace or with API keys. ### Viewing shared projects When someone shares a project with you, it automatically appears in your sidebar under the "Projects" section alongside your own projects. Additionally, each chat card in the project overview shows the chat owner's name and profile picture, so you can easily see who created each chat. ### Permission levels Projects have three permission levels: | Permission | Owner | Editor | User | | -------------------------------------- | ----- | ------ | ---- | | View project settings and instructions | ✓ | ✓ | ✓ | | Read all chats in the project | ✓ | ✓ | ✓ | | View attached files | ✓ | ✓ | ✓ | | Add chats to the project | ✓ | ✓ | ✓ | | Remove own chats from the project | ✓ | ✓ | ✓ | | Manage files and instructions | ✓ | ✓ | ✗ | | Share project with others | ✓ | ✓ | ✗ | | Delete project | ✓ | ✗ | ✗ | * **Owner**: The person who created the project. Has full control including the ability to delete the project. * **Editor**: Can chat and edit knowledge and instructions. * **User**: Can chat and see knowledge and instructions. When sharing a project, you can assign either **Editor** or **User** permissions to collaborators. ### Chat ownership Regardless of project permissions, you always retain full control over your own chats: * Only you can edit, rename, or delete chats you created * Your chats remain yours even if the project is deleted * All chats added to a shared project are visible to all project members ### Filtering shared content To help you manage shared projects, you can filter chats within a project: * **All** - Show all chats * **By you** - Show only chats you created * **By others** - Show only chats created by team members ## Best Practices * **One project per initiative** - Create separate projects for distinct workflows or clients * **Keep files updated** - Regularly review and update project files to maintain relevance * **Use specific instructions** - Tailor AI behavior to match the project's communication style and requirements * **Archive completed projects** - Keep your workspace organized by archiving finished projects ## Use Cases Projects are particularly useful for: * **Marketing campaigns** - Group all campaign-related chats with brand guidelines and assets * **Research projects** - Keep research documents and discussions organized together * **Client work** - Maintain separate contexts for different clients with their specific requirements * **Product development** - Organize feature discussions with relevant specifications and documentation # Prompt Library Source: https://docs.langdock.com/product/chat/prompt-library If you've developed a good prompt and want to reuse it, the prompt library lets you store, edit, and share it with others. You can use saved prompts in any chat or with agents. All prompts are organized in folders that you can keep private or share with your workspace. ## Adding a prompt to the prompt library To reuse a prompt you've written, hover over it in any chat and click the **+** icon to save it. You'll need to choose a folder and give it a name. Save the prompt to the prompt library by pressing the little plus icon Alternatively, go directly to the library and click **"Add Prompts"** in the upper right corner. Here you can enter the prompt's name, the actual prompt text, and specify where to save it. Manually Add prompt in the library through the "Add Prompt" button You can add variables to make prompts more flexible using `{{ }}` with your variable name between the brackets. This creates placeholders that you (or others) can customize for specific situations. You can also click the button in the bottom left corner to add variables. ## Using a prompt in a chat: To use prompts from the library, click on any prompt to open a new chat with it already loaded in the input field. You can then modify it or fill in any placeholders. Another way is to type `@` in any chat. This opens a list of all your available prompts. Click on one you want to use, or start typing to filter the list. Filling out variables in chat Select a saved prompt via the "@" in the chat When using a prompt with variables, you'll be prompted to fill in the specific values for your situation. Advanced tip: You can combine agents with prompts from the library. If you have an agent that follows a series of steps, save those steps as prompts in the library and execute them one by one in the agent chat. # Web Search Source: https://docs.langdock.com/product/chat/web-search AI models have knowledge cutoffs because they can't learn new information after training. To access current information or web results, you can use the Web Search tool. The **more context and details** you add, the **better your response** because the model understands precisely what you expect. Do not miss our [Prompt Engineering Guide](/resources/prompt-elements) to learn how to write great prompts. Web search solves a core technical limitation of AI models. Large Language Models go through two phases: training (when they're "built") and then deployment (when you use them). Once training is complete, the model's knowledge is frozen at that cutoff date and can't be updated. This means even the newest models become outdated the moment they're released. The web search tool bridges this gap in two steps: 1. **Search**: A query is generated and searches the internet for relevant results 2. **Context**: Those results get sent to the AI along with your prompt to generate an informed answer **Perfect for:** * Gathering current information on any topic * Getting real-time data and recent developments * Searching specific websites (just include the URL in your prompt) Want to understand more about how AI training works? Check out our [guide about how AI works](/resources/basics). ## Selecting web search To use Web search, open a new chat and select a model that supports web search. You’ll see web search availability indicated by the icon in the model selector if the web search icon is greyed out, that model doesn’t support web search. Langdock Model selector with the model card When using models that support web search, activate it by clicking the web search button in the input bar at the bottom of your screen. Once you activate web search, the button will highlight to confirm it’s active, and you can begin searching the internet or accessing websites using web search. Websearch activated in Chat ## Using web search Web search automatically triggers when the AI detects that your prompt requires information beyond its training cutoff date. Your then prompt gets reformatted into an optimized search query, then our search model finds relevant results across the web. Once the search is complete, the model analyzes findings from multiple websites and synthesizes them into a comprehensive answer for you. The whole process happens seamlessly in the background, so you get current information without any extra steps on your end. ### Inspecting sources When you want to see what websites the AI used to write the response, click on *Searched for "your search query"* to view the complete list of websites that were analyzed. Inspecting sources used by the Websearch On this view, you can see the citations and search results from your web search. When you hover over a citation, it highlights exactly which paragraph quoted that specific website. Below the main response, you'll find all the other search results that were analyzed during the search but didn't make it into the final answer. This gives you full transparency into both what sources were used and what additional information was considered but not included. Hovering over sources will highlight for which section of the answer they were used. # Agent-to-Agent Protocol (A2A) Source: https://docs.langdock.com/product/integrations/a2a-protocol A2A is an open protocol enabling AI agents to communicate and collaborate across platforms. Learn how to build and connect A2A-compatible agents. ## What is A2A? A2A (Agent-to-Agent Protocol) is an open protocol that enables AI agents to discover and communicate with each other across different platforms and vendors. Originally launched by Google and now maintained by the Linux Foundation, A2A provides a standardized way for agents to collaborate on complex tasks. **A2A vs MCP — What's the difference?** * **MCP** connects agents to **tools** (databases, APIs, services) * **A2A** connects agents to **other agents** (delegation, collaboration) Use both together: MCP gives your agent capabilities, A2A lets it collaborate with specialized agents. ## Current Implementation | Feature | Status | | ------------------ | ------------------------------------------------------------ | | **Streaming** | A2A waits for the complete response before returning results | | **Authentication** | None or API key based | | **Discovery** | Via `agent-card.json` | ## Core Concepts ### AgentCards Every A2A agent exposes an **AgentCard** — a JSON file at `/.well-known/agent-card.json` that describes the agent's capabilities. This enables automatic discovery. ```json theme={null} { "name": "Research Assistant", "description": "Searches and summarizes academic papers", "url": "https://research-agent.example.com", "version": "1.0.0", "skills": [ { "id": "paper-search", "name": "Paper Search", "description": "Search academic databases for relevant papers" }, { "id": "summarize", "name": "Summarize Paper", "description": "Generate a concise summary of a research paper" } ] } ``` ### Communication Flow 1. **Discovery** — Client fetches `/.well-known/agent-card.json` to learn agent capabilities 2. **Task Creation** — Client sends a task request with input data 3. **Processing** — Agent processes the task and generates a complete response 4. **Response** — Agent returns the full result (no streaming) **Complete A2A Agent Example:** The [Langdock-A2A-Demo Repository](https://github.com/matsjfunke/Langdock-A2A-Demo) contains a TypeScript-based A2A agent (protocol v0.3.0) with Express server and Langdock API integration. ## When to Use A2A | Use Case | A2A | MCP | | ---------------------------------------- | --- | --- | | Query a database | | ✓ | | Call an API | | ✓ | | Delegate research to a specialized agent | ✓ | | | Coordinate multiple agents on a task | ✓ | | | Connect to external tools/services | | ✓ | | Agent-to-agent collaboration | ✓ | | ## Resources Official documentation and specification Protocol specification and reference implementations *** ## Related Documentation * [MCP Integration Guide](/resources/integrations/mcp) — Connect agents to tools * [MCP Server Directory](/product/integrations/mcp-directory) — Verified MCP servers * [Agent Configuration](/product/agents/configuration) — Configure your Langdock agents # Connections Source: https://docs.langdock.com/product/integrations/connections Learn how connections work in Langdock, including authentication types, ownership, and sharing options for agents and workflows. ## What Are Connections? A **connection** is a saved authentication link between Langdock and an external tool. When you connect your Google Calendar, HubSpot, or any other integration, you're creating a connection that stores the credentials needed to interact with that service. Each connection belongs to the user who created it. This ensures your credentials remain secure and actions are performed with your access rights. ## Authentication Types Langdock supports different authentication methods depending on the integration: | Auth Type | How It Works | Example Integrations | | ------------------- | ------------------------------------------------------------------- | ------------------------------------------- | | **OAuth** | You sign in directly with the service and grant Langdock permission | Google Suite, Microsoft 365, Slack, HubSpot | | **API Key** | You provide an API key from the service | OpenAI, Stripe, custom integrations | | **Service Account** | An admin sets up a service-level account | Some enterprise tools | | **None** | No authentication needed | Public APIs | ### OAuth Authentication Most popular integrations use OAuth, the industry-standard protocol for secure authorization. When you connect via OAuth: 1. **You're redirected** to the service's login page (e.g., Google, Microsoft) 2. **You sign in** with your own account 3. **You grant permissions** for Langdock to access specific data 4. **Tokens are stored** securely and refreshed automatically OAuth connections always act with your permissions. If you can't access a calendar in Google, the agent using your connection can't access it either. ### API Key & Service Account Authentication These authentication types require you to manually provide credentials: * **API Key**: Copy an API key from the service's settings and paste it into Langdock * **Service Account**: Provide service account credentials (often a JSON file or key pair) These are typically used for services that don't support OAuth or for admin-level integrations that need broader access. *** ## Connection Ownership By default, **connections are user-based and not shareable**. This means: * ✅ You can only see and use connections you created * ✅ Actions performed use your access rights and permissions * ✅ Your credentials are never exposed to other users * ❌ Other users cannot directly use your OAuth connections This design ensures security and compliance—your authorization remains yours. ### Why User-Based? When you authorize Langdock to access your Google Calendar, you're granting permission for actions to be performed as you. Sharing that connection with others would mean they could act on your behalf, which violates the trust relationship established during OAuth consent. *** ## Sharing Connections via Agents While connections are personal by default, there's a powerful way to share their capabilities: **attaching connections to agents**. ### How It Works When you create an agent and add actions: 1. **Add an action** to your agent (e.g., "Create Calendar Event") 2. **Select a connection** to use with that action 3. **Share the agent** with others Now anyone using that agent can trigger the action using your pre-configured connection—without ever seeing your credentials. **Example:** You create a "Team Calendar Agent" with a "Create Event" action linked to your Google Calendar connection. When a colleague uses this agent to schedule a meeting, the event is created in your calendar using your credentials—but they never see your OAuth tokens. ### Use Cases * **Team agents**: Create a shared agent that can add events to a team calendar using your connection * **Workflow automation**: Set up workflows where actions run with your credentials * **Departmental tools**: Build agents that interact with your CRM or project management tools When sharing agents with pre-configured connections, the actions will be performed using your account. Only attach connections you're comfortable having others trigger. *** ## Sharing Non-OAuth Connections Directly Connections that use **API Key**, **Service Account**, or **No Authentication** can be shared directly with other users, groups, or your entire workspace. ### Shareable Connection Types | Auth Type | Directly Shareable? | | --------------- | :-----------------: | | OAuth | ❌ No | | API Key | ✅ Yes | | Service Account | ✅ Yes | | None | ✅ Yes | ### Why OAuth Can't Be Shared Directly OAuth tokens represent a specific user's authorization and consent. Sharing them would: * Violate the user's agreement with the service provider * Create security risks if tokens are leaked * Make it impossible to track who performed which action ### How to Share Non-OAuth Connections If you have an API key connection (or another shareable type), workspace admins and connection owners can share it: 1. Go to **Integrations** in your settings 2. Find the connection you want to share 3. Click **Share** and select recipients: * **Specific users**: Share with individual team members * **Groups**: Share with entire teams or departments * **Workspace**: Make available to everyone This is great for shared API keys like translation services, analytics tools, or internal APIs that the whole team should be able to use. ### Who Can Share Connections? | Role | Can Share | | ---------------- | ------------------------------------------- | | Connection owner | ✅ Their own non-OAuth connections | | Workspace admin | ✅ Any non-OAuth connection in the workspace | | Regular user | ❌ Only through agents | *** ## Choosing the Right Sharing Method | Scenario | Recommended Approach | | -------------------------------------- | -------------------------------------------- | | Team needs access to your calendar/CRM | Create an agent with pre-configured actions | | Shared API key for a service | Share the connection directly (if non-OAuth) | | Personal workflow automation | Use your own connection in your agent | | Departmental tool access | Share via agent with specific groups | *** ## Summary | Feature | OAuth | API Key / Service Account | | ----------------------- | ----- | ------------------------------- | | User-owned | ✅ | ✅ | | Direct sharing | ❌ | ✅ (to users, groups, workspace) | | Share via agent | ✅ | ✅ | | Automatic token refresh | ✅ | N/A | | Admin can share | ❌ | ✅ | Understanding how connections work helps you build secure, collaborative workflows. Use agent-based sharing for OAuth connections, and direct sharing for API keys and service accounts when appropriate. # Introduction Source: https://docs.langdock.com/product/integrations/introduction Langdock focuses on company use cases and integrates with your existing tools to fully leverage AI. We do this in two ways: through native integrations and by offering an easy way to build custom integrations for your specific tools. ## Native integrations We want to make it easy to connect your tools with Langdock and leverage AI within your existing processes and workflows. That's why we built integrations to the tools our customers already use, including knowledge bases, major CRMs, Google and Microsoft Suites, and vector databases. These integrations handle authentication, data syncing, and API connections automatically, so you can focus on using AI rather than managing technical setup. You can find more information on this in [this guide](/resources/integrations/using-integrations). ## Build your own integrations If we don't have a native integration for your tool yet, or you want to connect an internal system, you can build your own integrations. Our integration builder includes a visual interface for common workflows plus custom JavaScript support for complex edge cases. This means you can connect virtually any tool that has an API, from legacy systems to modern SaaS platforms. You can find more information in the [guide on how to create integrations](/resources/integrations/create-integrations). # MCP Server Directory Source: https://docs.langdock.com/product/integrations/mcp-directory A curated directory of verified MCP servers you can connect to Langdock. All servers listed here are officially maintained by their respective companies. **What is this directory?** This is a curated list of **official, remotely-hosted MCP servers** that you can connect to Langdock. All servers here are maintained by the companies that created them, ensuring reliability, security, and ongoing support. ## Trust & Verification Maintained directly by the company that owns the product No local installation required - connect via URL Uses secure HTTP/SSE transport protocols *** ## All MCP Servers **30 official MCP servers available.** Click any server to see connection details. AmplitudeAmplitudeOfficial}> Behavior analytics and experimentation platform for product data insights **Server URL** ``` https://mcp.amplitude.com/mcp ``` * **Auth Type:** OAuth * **Transport:** Remote/HTTP * **Docs:** [amplitude.com/docs/amplitude-ai/amplitude-mcp ↗](https://amplitude.com/docs/amplitude-ai/amplitude-mcp) ApifyApifyOfficial}> Extract data from any website with thousands of scrapers, crawlers, and automations **Server URL** ``` https://mcp.apify.com ``` * **Auth Type:** API Key * **Transport:** Remote/HTTP * **Docs:** [docs.apify.com/platform/integrations/mcp ↗](https://docs.apify.com/platform/integrations/mcp) AstroAstroOfficial}> Access to the official Astro documentation **Server URL** ``` https://mcp.docs.astro.build/mcp ``` * **Auth Type:** None * **Transport:** Remote/HTTP * **Docs:** [docs.astro.build/en/guides/build-with-ai ↗](https://docs.astro.build/en/guides/build-with-ai/#astro-docs-mcp-server) AsanaAsanaOfficial}> Access to Asana via the official MCP server **Server URL** ``` https://mcp.asana.com/mcp ``` * **Auth Type:** OAuth * **Transport:** Remote/HTTP * **Docs:** [developers.asana.com ↗](https://developers.asana.com/docs/using-asanas-mcp-server) Atlassian RovoAtlassian RovoOfficial}> Search, create, and manage content across Jira, Confluence, and Compass using natural language **Server URL** ``` https://mcp.atlassian.com/v1/sse ``` * **Auth Type:** OAuth * **Transport:** Remote/SSE * **Docs:** [support.atlassian.com ↗](https://support.atlassian.com/atlassian-rovo-mcp-server/docs/getting-started-with-the-atlassian-remote-mcp-server/) BraintrustBraintrustOfficial}> Access to the documentation, experiments, and logs in Braintrust **Server URL** ``` https://api.braintrust.dev/mcp ``` * **Auth Type:** API Key * **Transport:** Remote/HTTP * **Docs:** [braintrust.dev/docs/deploy/mcp ↗](https://www.braintrust.dev/docs/deploy/mcp) Browser UseBrowser UseOfficial}> Provides agents access to browser-use documentation **Server URL** ``` https://api.browser-use.com/mcp ``` * **Auth Type:** API Key * **Transport:** Remote/HTTP * **Docs:** [docs.browser-use.com/customize/integrations/mcp-server ↗](https://docs.browser-use.com/customize/integrations/mcp-server) ClickUpClickUpOfficial}> Project management and collaboration for teams & agents **Server URL** ``` https://mcp.clickup.com/mcp ``` * **Auth Type:** OAuth * **Transport:** Remote/HTTP * **Docs:** [developer.clickup.com ↗](https://developer.clickup.com/docs/connect-an-ai-assistant-to-clickups-mcp-server) Context7Context7Official}> Up-to-date code documentation **Server URL** ``` https://mcp.context7.com/mcp ``` * **Auth Type:** API Key * **Transport:** Remote/HTTP * **Docs:** [context7.com/docs/resources/all-clients ↗](https://context7.com/docs/resources/all-clients) DeepWikiDeepWikiOfficial}> Automatically generates architecture diagrams, documentation, and links to source code to help you understand unfamiliar codebases quickly **Server URL** ``` https://mcp.deepwiki.com/mcp ``` * **Auth Type:** None * **Transport:** Remote/HTTP * **Docs:** [docs.devin.ai/work-with-devin/deepwiki-mcp ↗](https://docs.devin.ai/work-with-devin/deepwiki-mcp) GitHubGitHubOfficial}> Repository management, issues, PRs, and code analysis **Server URL** ``` https://api.githubcopilot.com/mcp/ ``` * **Auth Type:** Bearer Token (PAT) * **Transport:** Remote/HTTP * **Docs:** [docs.github.com ↗](https://docs.github.com/en/copilot/how-tos/provide-context/use-mcp/use-the-github-mcp-server) HoneycombHoneycombOfficial}> Query observability data and SLOs **Server URL** ``` https://mcp.honeycomb.io/mcp ``` * **Auth Type:** API Key * **Transport:** Remote/HTTP * **Docs:** [docs.honeycomb.io/integrations/mcp ↗](https://docs.honeycomb.io/integrations/mcp/#what-is-honeycomb-mcp) Hugging FaceHugging FaceOfficial}> Access the Hugging Face Hub and Gradio MCP Servers **Server URL** ``` https://hf.co/mcp ``` * **Auth Type:** None / Optional * **Transport:** Remote/HTTP * **Docs:** [huggingface.co/docs/hub/en/hf-mcp-server ↗](https://huggingface.co/docs/hub/en/hf-mcp-server) InstantDBInstantDBOfficial}> Query and manage InstantDB **Server URL** ``` https://mcp.instantdb.com/mcp ``` * **Auth Type:** OAuth * **Transport:** Remote/HTTP * **Docs:** [instantdb.com/docs/using-llms ↗](https://www.instantdb.com/docs/using-llms#instant-mcp-server) LinearLinearOfficial}> Issue tracking and project management for development teams **Server URL** ``` https://mcp.linear.app/sse ``` * **Auth Type:** SSE * **Transport:** Remote/SSE * **Docs:** [linear.app/docs/mcp ↗](https://linear.app/docs/mcp) MicrosoftMicrosoft Learn DocsOfficial}> Search Microsoft documentation **Server URL** ``` https://learn.microsoft.com/api/mcp ``` * **Auth Type:** None * **Transport:** Remote/HTTP * **Docs:** [learn.microsoft.com/en-us/training/support/mcp ↗](https://learn.microsoft.com/en-us/training/support/mcp) NotionNotionOfficial}> All-in-one workspace for notes, docs, and project management **Server URL** ``` https://mcp.notion.com/mcp ``` * **Auth Type:** OAuth * **Transport:** Remote/HTTP * **Docs:** [developers.notion.com/docs/mcp ↗](https://developers.notion.com/docs/mcp) PipedreamPipedreamOfficial}> Connect to APIs and workflows **Server URL** ``` https://mcp.pipedream.net// ``` * **Auth Type:** Custom * **Transport:** Remote/HTTP * **Docs:** [pipedream.com/docs/connect/mcp ↗](https://pipedream.com/docs/connect/mcp/) PostHogPostHogOfficial}> Analytics, error tracking, and feature flags **Server URL** ``` https://mcp.posthog.com/sse ``` * **Auth Type:** SSE with Bearer Token (API Key) * **Transport:** Remote/SSE * **Docs:** [posthog.com/docs/model-context-protocol ↗](https://posthog.com/docs/model-context-protocol) PostmanPostmanOfficial}> API collaboration and testing **Server URL** ``` https://mcp.postman.com/minimal ``` * **Auth Type:** Bearer Token (API Key) * **Transport:** Remote/HTTP * **Docs:** [github.com/postmanlabs/postman-mcp-server ↗](https://github.com/postmanlabs/postman-mcp-server/blob/main/README.md#remote-server) PrismaPrismaOfficial}> Manage Prisma Postgres databases, including creating new instances and running schema migrations **Server URL** ``` https://mcp.prisma.io/mcp ``` * **Auth Type:** OAuth * **Transport:** Remote/HTTP * **Docs:** [prisma.io/docs/postgres/integrations/mcp-server ↗](https://www.prisma.io/docs/postgres/integrations/mcp-server) RenderRenderOfficial}> Manage your Render services **Server URL** ``` https://mcp.render.com/mcp ``` * **Auth Type:** Bearer Token * **Transport:** Remote/HTTP * **Docs:** [render.com/docs/mcp-server ↗](https://render.com/docs/mcp-server) ReplicateReplicateOfficial}> Search, discover, compare, and run AI models with a cloud API **Server URL** ``` https://mcp.replicate.com/sse ``` * **Auth Type:** SSE * **Transport:** Remote/SSE * **Docs:** [replicate.com/docs/reference/mcp ↗](https://replicate.com/docs/reference/mcp) SanitySanityOfficial}> Create, query, and manage Sanity content, releases, datasets, and schemas **Server URL** ``` https://mcp.sanity.io ``` * **Auth Type:** OAuth * **Transport:** Remote/HTTP * **Docs:** [sanity.io/docs/compute-and-ai/mcp-server ↗](https://www.sanity.io/docs/compute-and-ai/mcp-server) SemgrepSemgrepOfficial}> Scan code for security vulnerabilities **Server URL** ``` https://mcp.semgrep.ai/mcp ``` * **Auth Type:** API Key * **Transport:** Remote/HTTP * **Docs:** [semgrep.dev/docs/mcp ↗](https://semgrep.dev/docs/mcp) SentrySentryOfficial}> Error tracking and performance monitoring **Server URL** ``` https://mcp.sentry.dev/mcp ``` * **Auth Type:** API Key * **Transport:** Remote/HTTP * **Docs:** [docs.sentry.io/product/sentry-mcp ↗](https://docs.sentry.io/product/sentry-mcp/) SupabaseSupabaseOfficial}> Create and manage Supabase projects **Server URL** ``` https://mcp.supabase.com/mcp ``` * **Auth Type:** OAuth * **Transport:** Remote/HTTP * **Docs:** [supabase.com/docs/guides/getting-started/mcp ↗](https://supabase.com/docs/guides/getting-started/mcp) SuperglueSuperglueOfficial}> Discover and execute pre-built tools **Server URL** ``` https://mcp.superglue.ai ``` * **Auth Type:** Bearer Token (API Key) * **Transport:** Remote/HTTP * **Docs:** [docs.superglue.cloud/mcp/using-the-mcp ↗](https://docs.superglue.cloud/mcp/using-the-mcp) WebflowWebflowOfficial}> Enhances an agent's understanding of your Webflow projects **Server URL** ``` https://mcp.webflow.com/sse ``` * **Auth Type:** SSE * **Transport:** Remote/SSE * **Docs:** [developers.webflow.com/mcp/reference/overview ↗](https://developers.webflow.com/mcp/reference/overview) WixWixOfficial}> Build and manage Wix sites **Server URL** ``` https://mcp.wix.com/mcp ``` * **Auth Type:** OAuth * **Transport:** Remote/HTTP * **Docs:** [dev.wix.com/docs/sdk/articles/use-the-wix-mcp ↗](https://dev.wix.com/docs/sdk/articles/use-the-wix-mcp/about-the-wix-mcp) *** ## How to Connect an MCP Server Go to **Integrations** in your workspace settings. Click **Add Integration** and select **MCP** as the integration type. Copy the **Server URL** from the directory above and configure the authentication method. Click **Save**, then **Add Connection** to authenticate with the service. Your MCP server is now available in agents, chats, and workflows. For detailed setup instructions, see the [MCP Integration Guide](/resources/integrations/mcp). *** ## Authentication Types Explained | Auth Type | Description | What You Need | | ----------- | --------------------------------------------------- | ------------------------------------ | | **OAuth** | Full OAuth 2.0 flow with automatic token management | Click "Add connection" and authorize | | **API Key** | Simple key-based authentication | API key from the service's dashboard | # Introduction Source: https://docs.langdock.com/product/introduction Welcome to the product section of our knowledge base! This section is designed for users of our platform and provides an in-depth understanding of each of our products. Hero ## Welcome to Langdock's Product Guide! We provide five distinct products in one platform: * [Chat:](/product/chat/functionalities) A simple interface where you can "chat" with an AI model. * [Assistants:](/product/assistants/introduction) Build your own chatbots for specific tasks or situations. * [API:](/api-endpoints/api-introduction) Use AI models in other applications or build your own products powered by Langdock AI models. * [Integrations:](/product/integrations/introduction) Integrate your existing toolstack into Langdock to use the full potential of AI with your company knowledge. * [Workflows:](/product/workflows/introduction) Build powerful AI-driven automations by connecting agents, integrations, and custom logic into multi-step workflows. If you have any questions or feedback, send us an email to [support@langdock.com](mailto:support@langdock.com) or use the support chat in the bottom right. # Core Concepts Source: https://docs.langdock.com/product/workflows/core-concepts Understand the fundamental building blocks of workflows including nodes, triggers, connections, and execution. ## Introduction Welcome to Workflows fundamentals. This guide covers everything you need to understand how workflows work - from individual nodes to execution patterns, versioning, and testing strategies. **First time here?** This is your roadmap. Read through to understand the core concepts, then check out the [Getting Started guide](/product/workflows/getting-started) to build your first workflow. ## What is a Node? A **node** is the fundamental building block of a workflow. Think of it like a step in a recipe - each node does one thing, and you chain them together to create your complete automation. Nodes can do all sorts of things: * Execute AI agents to analyze or generate content * Make HTTP requests to external APIs * Transform data with custom code * Route execution based on conditions * Send notifications to team members You connect nodes together to create a complete workflow that automates your process from start to finish. **Visual Programming**: Workflows use a visual canvas where you drag, drop, and connect nodes. No coding required (unless you want to use a Code node)! Nodes ## Understanding Node Structure Every node has a few common elements that make them easy to work with: ### The Node Header Shows you the node type and name. Click the play button here to test the node individually - super helpful for debugging! ### Input and Output Tabs After a node runs, you can click on it to see: * **Input tab**: What data the node received * **Output tab**: What data the node produced This data flows to the next nodes in your workflow. ### Configuration Panel Click any node to open its settings in the side panel. This is where you configure what the node does, select AI models, set up connections to external services, and more. Configuration panel ## Working with Variables **Data flows through variables.** When a node finishes running, its output becomes available as a variable that you can use in later nodes. This is how information moves through your workflow. ### The Basics Use double curly braces to reference variables: ```handlebars theme={null} {{form1.output.email}} {{analyze_data.output.structured.summary}} {{api_response.data.items[0].title}} ``` ### Configuring Fields with Variables Every node has fields that need configuration. You can use variables in most text fields, or choose from three field modes: * **Auto Mode**: Let the workflow automatically determine the best value * **Manual Mode**: Enter exact values or use variables like `{{form1.output.email}}` * **AI Prompt Mode**: Give instructions for AI to generate dynamic content Understand Auto, Manual, and AI Prompt modes and when to use each one **💡 Pro tip**: When you type `{{` in any field, you'll see a dropdown showing all available variables from previous nodes. *** ## How Workflows Execute **Understanding execution is key.** Workflows can run nodes sequentially (one after another) or in parallel (simultaneously). Knowing how execution works helps you build faster, more efficient automations. ### Sequential Execution By default, your workflow runs nodes one after another, following the connections you've drawn. Each node waits for the previous one to complete before starting. Simple and predictable! ### Parallel Execution When you connect multiple nodes to a single source node, they can run at the same time. This speeds up your workflow when nodes don't depend on each other. For example: ```text theme={null} → Send Email → Trigger → → Create Ticket → → Continue → Update Database → ``` All three nodes after the trigger can run in parallel since they're independent. Nodes ### Error Handling You control what happens when something goes wrong. For each node, you can choose: * **Fail workflow**: Stop everything and mark the run as failed (good for critical steps) * **Continue workflow**: Log the error but keep going (good for non-critical actions) * **Error callback**: Route to different nodes on error using the red error handle (good for fallback logic) You can configure error handling for each node individually using the node settings. Nodes *** ## Workflow Versions **Version control for workflows.** Every workflow has versions, similar to Git for code. This keeps production stable while you make changes safely in draft mode. ### Draft Version (v0) This is your sandbox. Make changes, test things out, and experiment without affecting anything in production. The draft version is always labeled **v0**. ### Published Versions When you're happy with your changes, publish them to create a new version (v1.0.0, v1.1.0, etc.). Published versions are: * **Immutable**: They can't be changed, which keeps production stable * **Activated for triggers**: Only active published versions respond to real triggers * **Documented**: Each includes a description of what changed * **Rollback-ready**: You can reactivate an older version if needed When publishing, you choose the bump type: * **Patch** (1.0.0 → 1.0.1): Bug fixes and small tweaks * **Minor** (1.0.0 → 1.1.0): New features or nodes * **Major** (1.0.0 → 2.0.0): Breaking changes Test everything in the draft version before publishing. You can run full workflow tests without affecting production triggers. *** ## Testing Your Workflow **Test early, test often.** Don't wait until your workflow is complete to start testing. Test each node as you build it to catch issues early. ### Testing Individual Nodes Click the play button on any node to test just that piece. This is great for: * Verifying an agent's output before building the rest of the workflow * Checking if an API call returns the expected data * Debugging issues in specific nodes ### Testing Complete Workflows Use the "Test run" button on the trigger node to execute the entire workflow with sample data. This runs through all nodes but doesn't mark events as processed, so you can test safely.