# Onedesk

```json
{
  "name": "Onedesk",
  "slug": "onedesk",
  "url": "https://composio.dev/toolkits/onedesk",
  "markdown_url": "https://composio.dev/toolkits/onedesk.md",
  "logo_url": "https://logos.composio.dev/api/onedesk",
  "categories": [
    "productivity & project management"
  ],
  "is_composio_managed": false,
  "updated_at": "2026-05-12T10:20:36.219Z"
}
```

![Onedesk logo](https://logos.composio.dev/api/onedesk)

## Description

Securely connect your AI agents and chatbots (Claude, ChatGPT, Cursor, etc) with Onedesk MCP or direct API to create tickets, update projects, fetch support conversations, and automate workflows through natural language.

## Summary

OneDesk is an all-in-one platform that combines help desk and project management tools. It lets teams manage customer support, tasks, and projects from a single workspace.

## Categories

- productivity & project management

## Toolkit Details

- Tools: 24

## Images

- Logo: https://logos.composio.dev/api/onedesk

## Authentication

- **Api Key**
  - Type: `api_key`
  - Description: Api Key authentication for Onedesk.
  - Setup:
    - Configure Api Key credentials for Onedesk.
    - Use the credentials when creating an auth config in Composio.

## Suggested Prompts

- Log two hours on today's support ticket
- Remove outdated attachment from project Alpha
- Delete task 'Update onboarding guide' from project
- Delete ticket resolved last Friday

## Supported Tools

| Tool slug | Name | Description |
|---|---|---|
| `ONEDESK_CREATE_WORKLOG` | Create Worklog Entry | Create a worklog entry to track time spent on a work item (task, ticket, project, etc.). Records the start and finish time, work hours, completion percentage, and billability. Use this after obtaining a valid item_id from actions like GET_TASK_DETAILS. |
| `ONEDESK_DELETE_ATTACHMENT` | Delete Attachment | Delete a specific attachment from OneDesk by its ID. To use this tool, provide the attachment_id. Note that the OneDesk Public API has limited attachment management capabilities. Attachments are typically associated with items (tickets/tasks) and can be viewed via GET_ATTACHMENTS when fetching item details. Returns deleted=True if the attachment was successfully deleted (200/202/204). Returns deleted=False if the attachment was not found (404). |
| `ONEDESK_DELETE_COMMENT` | Delete Comment | Deletes a comment from OneDesk by its ID. Use this tool to permanently remove a comment when it's no longer needed. Note: OneDesk's Public API has limited DELETE support for comments. This action tries multiple possible endpoints to maximize compatibility. Comments may be referred to as "conversations" in the API. Example: {'comment_id': 12345} Returns: Deletion status with context about success/failure (e.g., comment not found, permission denied) |
| `ONEDESK_DELETE_CUSTOMER` | Delete Customer | Deletes a customer from OneDesk using the DELETE /customers/{id} endpoint. This action permanently removes the customer record from the OneDesk account. Returns: - success=true: Customer was successfully deleted (HTTP 200/202/204) - success=false: Customer not found or already deleted (HTTP 404) Example usage: {'customer_id': '12345'} |
| `ONEDESK_DELETE_MESSAGE` | Delete Message | Deletes a message from OneDesk by its unique message ID. Returns success if the message is deleted or doesn't exist (idempotent operation). Use this when you need to permanently remove a message from the system. |
| `ONEDESK_DELETE_PROJECT` | Delete Project | Delete a project in OneDesk by its ID. **API LIMITATION**: The OneDesk Public API does not support DELETE operations. DELETE requests return 405 Method Not Allowed on /rest/public/items endpoints. The public API only supports: - POST /items/ (create) - GET /items/id/{id} (retrieve by ID) - GET /items/externalId/{externalId} (retrieve by external ID) - GET /organization/profileAndPolicy (organization info) **Alternatives**: - Use OneDesk web application to delete projects manually - Contact OneDesk support for private API access - Use ONEDESK_GET_ISSUE_DETAILS if you need to check item status This action will fail with a clear error explaining the limitation. |
| `ONEDESK_DELETE_REQUIREMENT` | Delete Requirement | Delete a requirement from OneDesk. Requirements in OneDesk are work items used for product development, feature requests, and specifications. They are one of the core work item types (tickets, tasks, requirements, issues). IMPORTANT: This operation may not be supported by all OneDesk Public API versions. If deletion fails, the API may only support soft-delete or archiving through status updates. Use when you need to permanently remove a requirement by its internal numeric ID. Example: {'requirement_id': 12345} |
| `ONEDESK_DELETE_TASK` | Delete Task | Tool to delete a specific task. Use when you need to remove an existing task by its ID after confirming its details. |
| `ONEDESK_DELETE_TICKET` | Delete Ticket | Deletes a ticket from OneDesk by its internal ID. Use this tool to permanently remove a ticket when it's no longer needed. The ticket will be moved to the 'Deleted Items' project and scheduled for permanent deletion after 7 days. Note: OneDesk's Public API has limited DELETE support. This action tries multiple possible endpoints to maximize compatibility. Example: {'ticket_id': 123} Returns: Deletion status with context about success/failure (e.g., ticket not found, rate limited, permission denied) |
| `ONEDESK_DELETE_TIMESHEET` | Delete Timesheet | Tool to delete a timesheet by its ID. Use when you need to remove a specific timesheet after confirming it's no longer needed. Example: {'timesheet_id': 123} |
| `ONEDESK_DELETE_USER` | Delete User | Deletes a user from OneDesk by their unique user ID. This action permanently removes the specified user from the OneDesk account. Use this only after confirming the user should be removed from the system. **Important Notes:** - The OneDesk Public API has limited user management capabilities - There is no public API endpoint to list or create users - User IDs must be obtained through other means (e.g., OneDesk web application, internal systems) **Returns:** - success=True with status_code 200/204 if user was successfully deleted - success=False with status_code 404 if user was not found - success=False with appropriate status_code for other errors (403 for permission denied, 429 for rate limited, etc.) Example: {'user_id': '12345'} |
| `ONEDESK_GET_ATTACHMENTS` | Get Attachments | Retrieve attachments for a specific item by its external ID. IMPORTANT: The OneDesk Public API (/rest/public) has limited functionality and does NOT provide: - A dedicated attachments list endpoint - Ability to list all attachments across items - Endpoints to retrieve items by internal ID This action retrieves attachments by fetching an item via its external ID and extracting attachment data from the item response. You must know the external ID of the item in advance. Supported endpoints: 1. GET /rest/public/items/externalId/{externalId} - Fetch item by external ID 2. POST /rest/public/items/ - Create new items (not used here) 3. GET /rest/public/organization/profileAndPolicy - Get organization info (not used here) |
| `ONEDESK_GET_COMMENT_DETAILS` | Get Comment Details | Retrieve detailed information for a specific comment by its ID. This action attempts to fetch comment details from OneDesk using the comment ID. It tries multiple endpoint patterns to maximize compatibility with different API versions. Note: The OneDesk Public REST API has limited support for retrieving comments. If the comment ID doesn't exist or the endpoint is not available, this action will fail. |
| `ONEDESK_GET_COMMENTS` | Get Comments | Attempts to retrieve comments (discussion posts) from OneDesk. **IMPORTANT LIMITATION**: The OneDesk Public REST API does not provide an endpoint to list or retrieve comments. According to OneDesk's API documentation, the public API only supports: - Creating items: POST /rest/public/items/ - Retrieving items by external ID: GET /rest/public/items/externalId/{externalId} - Getting organization info: GET /rest/public/organization/profileAndPolicy Comments can be created via the API but cannot be retrieved or listed through the public API. This action documents this limitation clearly. **Alternative approaches**: 1. Use the OneDesk web application directly to view comments 2. Request access to OneDesk's private/internal API from OneDesk support 3. Use OneDesk's webhook system to receive comment events in real-time 4. If you have a comment ID, try ONEDESK_GET_COMMENT_DETAILS For more information, visit: https://onedesk.com/dev/ |
| `ONEDESK_GET_FEEDBACK` | Get Feedback Items | Retrieve all feedback items from OneDesk. **IMPORTANT LIMITATION**: The OneDesk Public API does not provide a GET endpoint to list feedback items. The public API only supports: - Creating items via POST /rest/public/items/ - Retrieving specific items by external ID via GET /rest/public/items/externalId/{externalId} - Getting organization info This action will always fail with an informative error message explaining this API limitation. **Alternative approaches:** - Use the OneDesk web application for viewing feedback - Retrieve feedback by external ID if you have it - Use OneDesk webhooks to receive feedback data as events - Contact OneDesk for private/internal API access |
| `ONEDESK_GET_FEEDBACK_DETAILS` | Get Feedback Details | Retrieve detailed information about a specific item in OneDesk by its internal ID. This endpoint retrieves ANY type of item (Tickets, Tasks, Feedback, etc.), not just feedback items. Use this action when you have an item's internal ID and need comprehensive details including: - Basic info (title, description, status, priority) - Creator and assignee information - Project association - Timestamps and lifecycle state - Direct web URL to view the item The internal ID is the numeric ID shown in the OneDesk application. |
| `ONEDESK_GET_ISSUE_DETAILS` | Get Issue Details | Retrieve comprehensive details of a specific issue by its ID. This action fetches full information about an issue including its title, description, status, priority, creation/update timestamps, and other metadata. Use this when you need detailed information about a specific issue that you have the ID for. Returns essential issue information that can be used for reporting, tracking, or further processing. The response includes both basic fields (title, description) and advanced tracking information (status, priority, timestamps). |
| `ONEDESK_GET_ISSUES` | Get Issues | Retrieve a list of issues from OneDesk. **API LIMITATION**: The OneDesk Public API does not provide an endpoint to list or retrieve issues. The public API only supports: 1. Creating items via POST /rest/public/items/ 2. Retrieving specific items by external ID via GET /rest/public/items/externalId/{externalId} 3. Getting organization info via GET /rest/public/organization/profileAndPolicy **Alternatives**: - Use the OneDesk web application directly to view and manage issues - Request access to OneDesk's private API (contact OneDesk support) - Use OneDesk's webhook system for issue event notifications - Use ONEDESK_GET_ISSUE_DETAILS action if you have a specific issue's external ID This action will raise an ExecutionFailed error to document this limitation. |
| `ONEDESK_GET_MESSAGES` | Get Messages | Tool to retrieve a list of messages from OneDesk. **IMPORTANT LIMITATION**: The OneDesk Public API does not provide an endpoint to list or retrieve messages. The public API only supports: 1. Creating items via POST /rest/public/items/ 2. Retrieving specific items by ID via GET /rest/public/items/id/{id} 3. Retrieving specific items by external ID via GET /rest/public/items/externalId/{externalId} 4. Getting organization info via GET /rest/public/organization/profileAndPolicy **Alternatives**: - Use the OneDesk web application directly to view messages - Request access to OneDesk's private API (contact OneDesk support) - Use OneDesk's webhook system for message event notifications - Retrieve specific messages by ID if you have the message ID This action will raise an ExecutionFailed error to document this API limitation. |
| `ONEDESK_GET_REQUIREMENTS` | Get Requirements | Retrieve a list of requirements from OneDesk. **IMPORTANT LIMITATION**: This action cannot function as intended because the OneDesk Public API does not provide an endpoint to list or retrieve requirements. The OneDesk Public API (/rest/public) only supports: - Creating items: POST /rest/public/items/ - Get by external ID: GET /rest/public/items/externalId/{externalId} - Organization info: GET /rest/public/organization/profileAndPolicy There is no endpoint to: - List all requirements - Search for requirements - Query requirements by criteria - Get requirements by any identifier other than external ID Alternative approaches: 1. Use OneDesk web application for requirement management 2. Contact OneDesk support for private API access 3. Use webhooks to receive requirement data as events occur 4. Use ONEDESK_GET_REQUIREMENT_DETAILS if you have a specific requirement's external ID This action will always fail with a clear error message explaining the limitation. |
| `ONEDESK_GET_TASK_DETAILS` | Get Task Details | Retrieves comprehensive details of a specific task/item in OneDesk by its ID. Use this tool when you need complete information about a task including its title, description, status, assignee, priority, due date, and project association. OneDesk uses 'items' to represent various work units including tasks, tickets, issues, and requirements. Returns detailed task information if found, or raises an error if the task doesn't exist or you don't have permission to access it. |
| `ONEDESK_GET_TICKETS` | Get Tickets | Retrieve tickets from OneDesk by querying a range of item IDs. **API LIMITATION WORKAROUND**: The OneDesk Public API does not provide a direct endpoint to list all tickets. This action works around this by: 1. Querying individual items by ID within the specified range (start_id to end_id) 2. Filtering results to return only items with type='Ticket' 3. Limiting results to the max_tickets parameter **How it works**: - The action queries items sequentially from start_id to end_id - Only items with type='Ticket' are included in the results - Stops after collecting max_tickets tickets or reaching end_id - Non-existent IDs and non-ticket items (tasks, folders, etc.) are skipped **Best practices**: - Use smaller ranges (e.g., 1-50) for faster responses - Adjust start_id based on your known ticket ID ranges - Use max_tickets to limit the number of results The OneDesk Public API endpoint used: GET /rest/public/items/id/{id} |
| `ONEDESK_GET_TIMESHEET_DETAILS` | Get Timesheet Details | Tool to retrieve details of a specific timesheet entry. Use when you have the `timesheet_id` and need full metadata (user, project, hours, dates). Tries multiple endpoint/header variants and gracefully falls back in restricted environments. |
| `ONEDESK_GET_WORKLOGS` | Get Worklogs | Retrieve a list of worklogs from OneDesk with optional filtering and pagination. This action attempts to list worklogs by trying multiple candidate endpoints and parameter formats. Note: The OneDesk Public API has limited endpoint support. If no worklogs endpoint is available, this action will return an empty list. Consider using the OneDesk web interface or private API endpoints for full worklog access. Use this action to: - List all worklogs in your OneDesk organization - Filter worklogs by object (ticket/task/project), user, or date range - Paginate through large worklog lists using limit and offset parameters |

## Supported Triggers

None listed.

## Installation and MCP Setup

### Path 1: SDK Installation

#### Path 1, Step 1: Install Composio

Install the Composio SDK
```python
pip install composio_openai
```

```typescript
npm install @composio/openai
```

#### Path 1, Step 2: Initialize Composio and Create Tool Router Session

Import and initialize Composio client, then create a Tool Router session
```python
from openai import OpenAI
from composio import Composio
from composio_openai import OpenAIResponsesProvider

composio = Composio(provider=OpenAIResponsesProvider())
openai = OpenAI()
session = composio.create(user_id='your-user-id')
```

```typescript
import OpenAI from 'openai';
import { Composio } from '@composio/core';
import { OpenAIResponsesProvider } from '@composio/openai';

const composio = new Composio({
  provider: new OpenAIResponsesProvider(),
});
const openai = new OpenAI({});
const session = await composio.create('your-user-id');
```

#### Path 1, Step 3: Execute Onedesk Tools via Tool Router with Your Agent

Get tools from Tool Router session and execute Onedesk actions with your Agent
```python
tools = session.tools
response = openai.responses.create(
  model='gpt-4.1',
  tools=tools,
  input=[{
    'role': 'user',
    'content': 'Log 2 hours to ticket 12345 for user 6789'
  }]
)
result = composio.provider.handle_tool_calls(
  response=response,
  user_id='your-user-id'
)
print(result)
```

```typescript
const tools = session.tools;
const response = await openai.responses.create({
  model: 'gpt-4.1',
  tools: tools,
  input: [{
    role: 'user',
    content: 'Log 2 hours to ticket 12345 for user 6789'
  }],
});
const result = await composio.provider.handleToolCalls(
  'your-user-id',
  response.output
);
console.log(result);
```

### Path 2: MCP Server Setup

#### Path 2, Step 1: Install Composio

Install the Composio SDK and Claude Agent SDK
```python
pip install composio claude-agent-sdk
```

```typescript
npm install @composio/core ai @ai-sdk/openai @ai-sdk/mcp
```

#### Path 2, Step 2: Create Tool Router Session

Initialize the Composio client and create a Tool Router session
```python
from composio import Composio
from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions

composio = Composio(api_key='your-composio-api-key')
session = composio.create(user_id='your-user-id')
url = session.mcp.url
```

```typescript
import { Composio } from '@composio/core';

const composio = new Composio({ apiKey: 'your-api-key' });

console.log("Creating Tool Router session...");
const { mcp } = await composio.create('your-user-id');
console.log(`Tool Router session created: ${mcp.url}`);
```

#### Path 2, Step 3: Connect to AI Agent

Use the MCP server with your AI agent
```python
import asyncio

options = ClaudeAgentOptions(
    permission_mode='bypassPermissions',
    mcp_servers={
        'tool_router': {
            'type': 'http',
            'url': url,
            'headers': {
                'x-api-key': 'your-composio-api-key'
            }
        }
    },
    system_prompt='You are a helpful assistant with access to Onedesk tools.',
    max_turns=10
)

async def main():
    async with ClaudeSDKClient(options=options) as client:
        await client.query('Create a worklog entry for ticket 5678 with 2 hours logged')
        async for message in client.receive_response():
            if hasattr(message, 'content'):
                for block in message.content:
                    if hasattr(block, 'text'):
                        print(block.text)

asyncio.run(main())
```

```typescript
import { openai } from '@ai-sdk/openai';
import { experimental_createMCPClient as createMCPClient } from '@ai-sdk/mcp';
import { generateText, stepCountIs } from 'ai';

const client = await createMCPClient({
  transport: {
    type: 'http',
    url: mcp.url,
    headers: { 'x-api-key': 'your-composio-api-key' }
  }
});

const tools = await client.tools();

const { text } = await generateText({
  model: openai('gpt-4o'),
  tools,
  messages: [{ role: 'user', content: 'Create a worklog entry for ticket 5678 with 2 hours logged' }],
  stopWhen: stepCountIs( 5 )
});

console.log(`Agent: ${text}`);
```

## Why Use Composio?

### 1. AI Native Onedesk Integration

- Supports both Onedesk MCP and direct API based integrations
- Structured, LLM-friendly schemas for reliable tool execution
- Rich coverage for reading, writing, and querying your Onedesk data

### 2. Managed Auth

- Built-in OAuth handling with automatic token refresh and rotation
- Central place to manage, scope, and revoke Onedesk access
- Per user and per environment credentials instead of hard-coded keys

### 3. Agent Optimized Design

- Tools are tuned using real error and success rates to improve reliability over time
- Comprehensive execution logs so you always know what ran, when, and on whose behalf

### 4. Enterprise Grade Security

- Fine-grained RBAC so you control which agents and users can access Onedesk
- Scoped, least privilege access to Onedesk resources
- Full audit trail of agent actions to support review and compliance

## Use Onedesk with any AI Agent Framework

Choose a framework you want to connect Onedesk with:

- [OpenAI Agents SDK](https://composio.dev/toolkits/onedesk/framework/open-ai-agents-sdk)
- [Claude Agent SDK](https://composio.dev/toolkits/onedesk/framework/claude-agents-sdk)
- [Claude Code](https://composio.dev/toolkits/onedesk/framework/claude-code)
- [Claude Cowork](https://composio.dev/toolkits/onedesk/framework/claude-cowork)
- [Codex](https://composio.dev/toolkits/onedesk/framework/codex)
- [OpenClaw](https://composio.dev/toolkits/onedesk/framework/openclaw)
- [Hermes](https://composio.dev/toolkits/onedesk/framework/hermes-agent)
- [Google ADK](https://composio.dev/toolkits/onedesk/framework/google-adk)
- [LangChain](https://composio.dev/toolkits/onedesk/framework/langchain)
- [Vercel AI SDK](https://composio.dev/toolkits/onedesk/framework/ai-sdk)
- [Mastra AI](https://composio.dev/toolkits/onedesk/framework/mastra-ai)
- [LlamaIndex](https://composio.dev/toolkits/onedesk/framework/llama-index)
- [CrewAI](https://composio.dev/toolkits/onedesk/framework/crew-ai)
- [Pydantic AI](https://composio.dev/toolkits/onedesk/framework/pydantic-ai)
- [AutoGen](https://composio.dev/toolkits/onedesk/framework/autogen)

## Related Toolkits

- [Google Sheets](https://composio.dev/toolkits/googlesheets) - Google Sheets is a cloud-based spreadsheet tool for real-time collaboration and data analysis. It lets teams work together from anywhere, updating information instantly.
- [Notion](https://composio.dev/toolkits/notion) - Notion is a collaborative workspace for notes, docs, wikis, and tasks. It streamlines team knowledge, project tracking, and workflow customization in one place.
- [Airtable](https://composio.dev/toolkits/airtable) - Airtable combines the flexibility of spreadsheets with the power of a database for easy project and data management. Teams use Airtable to organize, track, and collaborate with custom views and automations.
- [Asana](https://composio.dev/toolkits/asana) - Asana is a collaborative work management platform for teams to organize and track projects. It streamlines teamwork, boosts productivity, and keeps everyone aligned on goals.
- [Google Tasks](https://composio.dev/toolkits/googletasks) - Google Tasks is a to-do list and task management tool integrated into Gmail and Google Calendar. It helps you organize, track, and complete tasks across your Google ecosystem.
- [Linear](https://composio.dev/toolkits/linear) - Linear is a modern issue tracking and project planning tool for fast-moving teams. It helps streamline workflows, organize projects, and boost productivity.
- [Jira](https://composio.dev/toolkits/jira) - Jira is Atlassian’s platform for bug tracking, issue tracking, and agile project management. It helps teams organize work, prioritize tasks, and deliver projects efficiently.
- [Clickup](https://composio.dev/toolkits/clickup) - ClickUp is an all-in-one productivity platform for managing tasks, docs, goals, and team collaboration. It streamlines project workflows so teams can work smarter and stay organized in one place.
- [Monday](https://composio.dev/toolkits/monday) - Monday.com is a customizable work management platform for project planning and collaboration. It helps teams organize tasks, automate workflows, and track progress in real time.
- [Addressfinder](https://composio.dev/toolkits/addressfinder) - Addressfinder is a data quality platform for verifying addresses, emails, and phone numbers. It helps you ensure accurate customer and contact data every time.
- [Agiled](https://composio.dev/toolkits/agiled) - Agiled is an all-in-one business management platform for CRM, projects, and finance. It helps you streamline workflows, consolidate client data, and manage business processes in one place.
- [Ascora](https://composio.dev/toolkits/ascora) - Ascora is a cloud-based field service management platform for service businesses. It streamlines scheduling, invoicing, and customer operations in one place.
- [Basecamp](https://composio.dev/toolkits/basecamp) - Basecamp is a project management and team collaboration tool by 37signals. It helps teams organize tasks, share files, and communicate efficiently in one place.
- [Beeminder](https://composio.dev/toolkits/beeminder) - Beeminder is an online goal-tracking platform that uses monetary pledges to keep you motivated. Stay accountable and hit your targets with real financial incentives.
- [Boxhero](https://composio.dev/toolkits/boxhero) - Boxhero is a cloud-based inventory management platform for SMBs, offering real-time updates, barcode scanning, and team collaboration. It helps businesses streamline stock tracking and analytics for smarter inventory decisions.
- [Breathe HR](https://composio.dev/toolkits/breathehr) - Breathe HR is cloud-based HR software for SMEs to manage employee data, absences, and performance. It simplifies HR admin, making it easy to keep employee records accurate and up to date.
- [Breeze](https://composio.dev/toolkits/breeze) - Breeze is a project management platform designed to help teams plan, track, and collaborate on projects. It streamlines workflows and keeps everyone on the same page.
- [Bugherd](https://composio.dev/toolkits/bugherd) - Bugherd is a visual feedback and bug tracking tool for websites. It helps teams and clients report website issues directly on live sites for faster fixes.
- [Canny](https://composio.dev/toolkits/canny) - Canny is a platform for managing customer feedback and feature requests. It helps teams prioritize product decisions based on real user insights.
- [Chmeetings](https://composio.dev/toolkits/chmeetings) - Chmeetings is a church management platform for events, members, donations, and volunteers. It streamlines church operations and improves community engagement.

## Frequently Asked Questions

### Do I need my own developer credentials to use Onedesk with Composio?

Yes, Onedesk requires you to configure your own API key credentials. Once set up, Composio handles secure credential storage and API request handling for you.

### Can I use multiple toolkits together?

Yes! Composio's Tool Router enables agents to use multiple toolkits. [Learn more](https://docs.composio.dev/tool-router/overview).

### Is Composio secure?

Composio is SOC 2 and ISO 27001 compliant with all data encrypted in transit and at rest. [Learn more](https://trust.composio.dev).

### What if the API changes?

Composio maintains and updates all toolkit integrations automatically, so your agents always work with the latest API versions.

---
[See all toolkits](https://composio.dev/toolkits) · [Composio docs](https://docs.composio.dev/llms.txt)
