# Timer

## timer_status

`TOOL timer_status`

Get the current timer status for the authenticated user

Authentication: no security requirement declared for this operation.

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "timer_status",
    "arguments": {}
  }
}
```

### TypeScript

```typescript
const result = await client.callTool({
  "name": "timer_status",
  "arguments": {}
});
```

### Python

```python
result = await session.call_tool("timer_status", arguments={})
```


## start_timer

`TOOL start_timer`

Start a timer for the authenticated user

Authentication: no security requirement declared for this operation.

Parameters:

- `projectId` (argument, string, uuid, optional) - The project ID to track time for
  Type: string, uuid
  
  The project ID to track time for
  
  pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"

- `taskId` (argument, string, uuid, optional) - The task ID to track time for
  Type: string, uuid
  
  The task ID to track time for
  
  pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"

- `organizationContactId` (argument, string, uuid, optional) - The contact associated with this timer
  Type: string, uuid
  
  The contact associated with this timer
  
  pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"

- `organizationTeamId` (argument, string, uuid, optional) - The team associated with this timer
  Type: string, uuid
  
  The team associated with this timer
  
  pattern: "^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$"

- `description` (argument, string, optional) - Description for the time entry
  Type: string
  
  Description for the time entry

- `logType` (argument, string, optional) - Type of time log
  Type: string
  
  Type of time log
  
  enum: ["TRACKED","MANUAL","RESUMED","IDLE","VISITED"]

- `source` (argument, string, optional) - Source of the timer
  Type: string
  
  Source of the timer
  
  enum: ["BROWSER","DESKTOP","MOBILE","UPWORK","HUBSTAFF","TEAMS","BROWSER_EXTENSION","CLOC"]

- `isBillable` (argument, boolean, optional) - Whether the time is billable
  Type: boolean
  
  Whether the time is billable

- `tags` (argument, array, optional) - Tags for the time entry
  Type: array
  
  Tags for the time entry
  
  Items:
    Type: string

- `manualTimeSlot` (argument, boolean, optional) - Whether to use manual time slot
  Type: boolean
  
  Whether to use manual time slot

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "start_timer",
    "arguments": {
        "projectId": "550e8400-e29b-41d4-a716-446655440000",
        "taskId": "550e8400-e29b-41d4-a716-446655440000",
        "organizationContactId": "550e8400-e29b-41d4-a716-446655440000",
        "organizationTeamId": "550e8400-e29b-41d4-a716-446655440000",
        "description": "string",
        "logType": "TRACKED",
        "source": "BROWSER",
        "isBillable": true,
        "tags": [
          "string"
        ],
        "manualTimeSlot": true
      }
  }
}
```

### TypeScript

```typescript
const result = await client.callTool({
  "name": "start_timer",
  "arguments": {
    "projectId": "550e8400-e29b-41d4-a716-446655440000",
    "taskId": "550e8400-e29b-41d4-a716-446655440000",
    "organizationContactId": "550e8400-e29b-41d4-a716-446655440000",
    "organizationTeamId": "550e8400-e29b-41d4-a716-446655440000",
    "description": "string",
    "logType": "TRACKED",
    "source": "BROWSER",
    "isBillable": true,
    "tags": [
      "string"
    ],
    "manualTimeSlot": true
  }
});
```

### Python

```python
result = await session.call_tool("start_timer", arguments={
  "projectId": "550e8400-e29b-41d4-a716-446655440000",
  "taskId": "550e8400-e29b-41d4-a716-446655440000",
  "organizationContactId": "550e8400-e29b-41d4-a716-446655440000",
  "organizationTeamId": "550e8400-e29b-41d4-a716-446655440000",
  "description": "string",
  "logType": "TRACKED",
  "source": "BROWSER",
  "isBillable": true,
  "tags": [
    "string"
  ],
  "manualTimeSlot": true
})
```


## stop_timer

`TOOL stop_timer`

Stop the running timer for the authenticated user

Authentication: no security requirement declared for this operation.

Parameters:

- `description` (argument, string, optional) - Description for the time entry
  Type: string
  
  Description for the time entry

- `source` (argument, string, optional) - Source of the timer
  Type: string
  
  Source of the timer
  
  enum: ["BROWSER","DESKTOP","MOBILE","UPWORK","HUBSTAFF","TEAMS","BROWSER_EXTENSION","CLOC"]

- `manualTimeSlot` (argument, boolean, optional) - Whether to use manual time slot
  Type: boolean
  
  Whether to use manual time slot

## Examples

### JSON-RPC

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "stop_timer",
    "arguments": {
        "description": "string",
        "source": "BROWSER",
        "manualTimeSlot": true
      }
  }
}
```

### TypeScript

```typescript
const result = await client.callTool({
  "name": "stop_timer",
  "arguments": {
    "description": "string",
    "source": "BROWSER",
    "manualTimeSlot": true
  }
});
```

### Python

```python
result = await session.call_tool("stop_timer", arguments={
  "description": "string",
  "source": "BROWSER",
  "manualTimeSlot": true
})
```
