Interact with TimeDoctor API for employee time tracking, activity logs, productivity statistics, and workforce analytics using simple Python CLI commands.
Provides direct access to TimeDoctor's time tracking API through a Python CLI tool. Execute commands, get JSON data, present formatted results to users.
Option 1: Easy Setup (Recommended)
Just provide your TimeDoctor email and password:
python3 timedoctor.py login --email "your-email@company.com" --password "your-password"
This returns a JWT token valid for 6 months. Copy the token and set it:
export TIMEDOCTOR_TOKEN="your-jwt-token-from-login-response"
Option 2: Manual Token Setup
If you already have a token or prefer manual setup:
# Required
export TIMEDOCTOR_TOKEN="your-jwt-token"
# Optional (can be discovered via get_authorization)
export TIMEDOCTOR_COMPANY_ID="your-company-id"
For Multiple Accounts: Users can switch accounts by changing the token:
# Account 1
export TIMEDOCTOR_TOKEN="token-for-account-1"
export TIMEDOCTOR_COMPANY_ID="company-id-1"
# Account 2
export TIMEDOCTOR_TOKEN="token-for-account-2"
export TIMEDOCTOR_COMPANY_ID="company-id-2"
Quick Setup Workflow:
# 1. Login to get token
python3 timedoctor.py login --email "user@company.com" --password "password"
# 2. Copy token from response and set it
export TIMEDOCTOR_TOKEN="1jxExVs9WGsWccrq2ysMKMZVZlTVyTZc15tlgcWF_Qns"
# 3. Discover available companies
python3 timedoctor.py get_authorization
# 4. Set company ID (optional)
export TIMEDOCTOR_COMPANY_ID="aFtR8crWxHTeLzIm"
# 5. Start using commands
python3 timedoctor.py get_today_worklog --company-id $TIMEDOCTOR_COMPANY_ID
All commands follow this pattern:
python3 timedoctor.py COMMAND [--company-id ID] [OPTIONS]
The script is located in the skill directory and returns JSON output.
Login (Get JWT Token):
python3 timedoctor.py login --email "user@company.com" --password "password"
Returns: JWT token valid for 6 months
Discover Available Companies:
python3 timedoctor.py get_authorization
Returns: User info and list of accessible companies with IDs
Today's Activity:
python3 timedoctor.py get_today_worklog --company-id COMPANY_ID
This Week's Stats:
python3 timedoctor.py get_this_week_stats --company-id COMPANY_ID
This Month's Stats:
python3 timedoctor.py get_this_month_stats --company-id COMPANY_ID
Custom Date Range:
python3 timedoctor.py get_worklog \
--company-id COMPANY_ID \
--from-date "2024-03-01T00:00:00Z" \
--to-date "2024-03-31T00:00:00Z"
List Users:
python3 timedoctor.py get_users --company-id COMPANY_ID
List Projects:
python3 timedoctor.py get_projects --company-id COMPANY_ID
Filter by Users:
python3 timedoctor.py get_today_worklog --company-id COMPANY_ID --user-ids "123,456,789"
TimeDoctor User Account (requires TIMEDOCTOR_TOKEN)
└── Company A (ID: 12345)
├── User 1
├── User 2
└── Projects...
└── Company B (ID: 67890)
├── User 3
├── User 4
└── Projects...
└── Company C (ID: 11111)
└── Users...
--company-idScenario 1: User with Multiple Companies
User: "Show my companies"
Agent: Runs get_authorization
Response shows:
- Acme Corp (12345)
- Beta Startup (67890)
- Gamma LLC (11111)
Agent: "You have access to 3 companies. Which one?"
User: "Acme Corp"
Agent: Uses --company-id 12345 for all subsequent requests
Scenario 2: Switching Companies
User: "Now show me Beta Startup's data"
Agent: Remembers Beta Startup = 67890 from earlier
Agent: Uses --company-id 67890
No token change needed!
Scenario 3: Switching User Accounts
User: "I want to use my other TimeDoctor account"
Agent: "You need to update your token. Run:
export TIMEDOCTOR_TOKEN='your-other-token'"
User: Updates token
Agent: Runs get_authorization with new token
Agent: Shows new list of companies for that account
Follow this workflow:
TIMEDOCTOR_TOKEN is not set, help them login:```
"To get started, I need your TimeDoctor credentials.
I'll run: python3 timedoctor.py login --email YOUR_EMAIL --password YOUR_PASSWORD
What's your TimeDoctor email and password?"
```
export TIMEDOCTOR_TOKEN="extracted-token"get_authorization first if company_id is not known```
You have access to these TimeDoctor companies:
Which company would you like to use?
```
--company-id parameter with the selected company{"error": "..."} first"TIMEDOCTOR_TOKEN environment variable not set" → Help user login with email/password"company_id required" → Run get_authorization to discover companies"401 Unauthorized" → Token expired, user needs to login again (6-month validity)ALWAYS use ISO 8601 format: YYYY-MM-DDTHH:MM:SSZ
Examples:
2024-03-22T00:00:00Z2024-03-23T00:00:00Z2024-03-22T00:00:00Z to 2024-03-23T00:00:00ZCalculating Dates:
get_today_worklog (automatic)get_this_week_stats (automatic, Monday to today)get_this_month_stats (automatic, 1st to today)get_worklog or get_stats_totalFor Worklogs:
For Statistics:
For Lists (users, projects, tasks):
User: "I want to use TimeDoctor"
Steps:
1. Check if TIMEDOCTOR_TOKEN is set
2. If not, ask for credentials:
"To get started, I need your TimeDoctor login credentials.
What's your TimeDoctor email and password?"
3. User provides: "email@company.com" and "password123"
4. Run: python3 timedoctor.py login --email "email@company.com" --password "password123"
5. Parse response and extract token
6. Tell user:
"Great! I got your token. It's valid for 6 months (until September 2026).
Please set it in your environment:
export TIMEDOCTOR_TOKEN='1jxExVs9WGsWccrq2ysMKMZVZlTVyTZc15tlgcWF_Qns'
Once set, I can pull your TimeDoctor data."
7. After user confirms, proceed to Workflow 1 to discover companies
User: "Show me today's activity"
Steps:
1. Check if you know the company_id for this session
2. If not, run: python3 timedoctor.py get_authorization
3. Parse response and present companies:
"I found these TimeDoctor companies you have access to:
1. Acme Corp (ID: 12345) - 45 users
2. Beta Inc (ID: 67890) - 12 users
3. Gamma LLC (ID: 11111) - 8 users
Which company would you like to check?"
4. User responds: "Acme Corp" or "1" or "12345"
5. Remember company_id = 12345 for this session
6. Run: python3 timedoctor.py get_today_worklog --company-id 12345
7. Parse JSON and create table:
| User | Hours Worked | Productive % | Projects |
8. Add summary: "Total: X hours across Y users"
User: "Show today's activity for the team"
Steps:
1. Use remembered company_id from session
2. Run: python3 timedoctor.py get_today_worklog --company-id COMPANY_ID
3. Parse JSON and create table:
| User | Hours Worked | Productive % | Projects |
4. Add summary: "Total: X hours across Y users"
User: "Show me stats for Beta Inc instead"
Steps:
1. Run: python3 timedoctor.py get_authorization
2. Find "Beta Inc" in the companies list
3. Extract company_id (67890)
4. Update session to remember new company_id
5. Confirm: "Switched to Beta Inc (ID: 67890)"
6. Run requested command with new company_id
User: "Show today's activity for the team"
Steps:
1. Check if TIMEDOCTOR_COMPANY_ID is set in environment
2. If not, run: python3 timedoctor.py get_authorization
3. Extract company_id from response
4. Run: python3 timedoctor.py get_today_worklog --company-id COMPANY_ID
5. Parse JSON and create table:
| User | Hours Worked | Productive % | Projects |
6. Add summary: "Total: X hours across Y users"
User: "How much did John work this week?"
Steps:
1. Run: python3 timedoctor.py get_users --company-id COMPANY_ID
2. Find John's user_id in response
3. Run: python3 timedoctor.py get_this_week_stats --company-id COMPANY_ID --user-ids "JOHN_ID"
4. Parse and present:
- Total hours: X
- Productive time: Y (Z%)
- Top projects: ...
- Daily breakdown: Mon: X hrs, Tue: Y hrs, ...
User: "How much time was spent on Project Alpha last month?"
Steps:
1. Run: python3 timedoctor.py get_projects --company-id COMPANY_ID
2. Find "Project Alpha" and get its project_id
3. Calculate last month's date range (1st to last day)
4. Run: python3 timedoctor.py get_stats_total \
--company-id COMPANY_ID \
--from-date "YYYY-MM-01T00:00:00Z" \
--to-date "YYYY-MM-31T23:59:59Z" \
--project-id PROJECT_ID
5. Present breakdown by user and total
User: "I want to use my other TimeDoctor account"
Steps:
1. Explain: "To switch to a different TimeDoctor user account, you need to update your token."
2. Provide instructions:
"Please run these commands with your other account's token:
export TIMEDOCTOR_TOKEN="your-other-account-token"
Then let me know when you're ready."
3. After they confirm, run: python3 timedoctor.py get_authorization
4. Present available companies for the new account:
"Now connected as [User Name]. You have access to:
1. Company X (ID: 99999)
2. Company Y (ID: 88888)
Which company would you like to use?"
5. Remember the selected company_id for this session
Once a user selects a company, remember it for the entire conversation session:
Session State:
- current_company_id: 12345
- current_company_name: "Acme Corp"
- current_token_user: "john@acme.com"
Ask user to select company again when:
You have access to these TimeDoctor companies:
1. Acme Corporation (ID: 12345)
- 45 active users
- Role: Admin
2. Beta Startup (ID: 67890)
- 12 active users
- Role: Manager
3. Gamma Consulting (ID: 11111)
- 8 active users
- Role: User
Which company would you like to use? (Enter number, name, or ID)
Available companies:
• Acme Corporation (12345)
• Beta Startup (67890)
• Gamma Consulting (11111)
Which one?
You have access to: Acme Corporation (ID: 12345)
I'll use this company for your requests.
Accept any of these formats:
Match flexibly:
login - Login with email/password to get JWT token (valid 6 months)get_authorization - Get user info and available companiesget_companies - List all accessible companiesget_company - Get specific company detailsget_users - List users in companyget_user - Get specific user detailsget_managed_users - Get users managed by a managerget_activity_worklog - Detailed work activity logget_activity_timeuse_stats - Time usage statisticsget_disconnectivity - Offline/disconnected periodsget_today_worklog - Today's worklog (convenience)get_stats_total - Aggregated total statisticsget_stats_category - Stats by productivity category (4=Productive, 3=Neutral, 2=Unproductive, 0=Unrated)get_stats_summary - Summary stats over timeget_stats_work_life - Work-life balance statsget_stats_shift - Shift compliance statsget_stats_outliers - Unusual activity patternsget_this_week_stats - This week's stats (convenience)get_this_month_stats - This month's stats (convenience)get_timesheet_total - Timesheet totalsget_timesheet_summary - Timesheet summaryget_projects - List projectsget_project - Get project detailsget_tasks - List tasksget_task - Get task detailsget_groups - List groups/teamsget_group - Get group detailsget_work_schedules - List work schedulesget_work_schedule - Get schedule detailsget_work_schedule_issues - Schedule violationsget_leave_stats - Leave/time-off statsget_users_payroll - User payroll infoget_company_payroll_settings - Company payroll settingsget_files - Screenshots/screencastsget_categories - Productivity categoriesget_unrated_categories_count - Count of unrated itemsCommon options across commands:
--company-id COMPANY_ID - Required for most commands--user-ids "123,456" - Filter by specific users (comma-separated)--from-date "2024-03-01T00:00:00Z" - Start date (ISO 8601)--to-date "2024-03-31T00:00:00Z" - End date (ISO 8601)--project-id PROJECT_ID - Filter by project--page 1 - Page number for pagination--limit 100 - Results per page (max 1000){"error": "..."} in JSON outputget_today_worklog is easier than calculating today's dates--page and --limit| Error | Cause | Solution |
|---|---|---|
| ------- | ------- | ---------- |
TIMEDOCTOR_TOKEN environment variable not set | Token not configured | User needs to set export TIMEDOCTOR_TOKEN="..." |
company_id required | Missing company ID | Run get_authorization to discover company_id |
401 Unauthorized | Token expired or invalid | User needs new token (6-month validity) |
httpx module not found | Dependencies not installed | Run pip3 install -r requirements.txt |
| No data returned | No activity in date range | Check date range and verify users have activity |
JehadurRE (Jehadur Rahman Emran)
MIT
共 1 个版本