Live

ClockShark logo

ClockShark API and MCP server

clockshark.com

ClockShark has no public developer API or API docs (checked 10 Oct 2026). Cotlet is a hosted MCP server and REST API for ClockShark with 15 endpoints (7 read, 8 write): your AI agent signs in as you and does the work.

Endpoints
15 7 read, 8 write
Updated
How Cotlet connects your agent to ClockShark
  1. Your agent

    Claude Code, Codex, Cursor or a script

  2. Cotlet

    MCP server and REST API · 15 endpoints

    cotlet.dev/mcp/v1

  3. ClockShark logo

    ClockShark

    Signed in as you on clockshark.com

You sign in once. We never store your password.

Official API

Does ClockShark have an official API?

ClockShark has no public developer API or API docs (checked 10 Oct 2026). Admins can only generate a Zapier API key, which Zapier uses for 6 triggers and 2 actions: Create Job and Create Task.

What ClockShark's own tools do compared with Cotlet
Task ClockShark official Cotlet
Read time entries for a pay period Partly Zapier fires on new clock ins and outs, no history Yes
Approve timesheets No Yes
Add or edit time entries No Yes
Create jobs Yes Zapier action Create Job Yes
Build and publish schedules No Zapier only fires when a schedule is created Yes
Approve or decline time off No Yes
Export payroll hours as CSV Partly Built-in pushes to QuickBooks, ADP, Gusto and others only Yes
See who's clocked in now Partly Clock in and out triggers in Zapier Yes

Sources: ClockShark: How to use the Zapier integration · ClockShark integrations overview · ClockShark on Zapier: triggers and actions · ClockShark: How to use timesheet approvals · ClockShark: Approve or decline requested time off

Common use cases

What can an AI agent do in ClockShark?

Cotlet is best for contractors and field service managers who want their AI agent to approve timesheets, fix time, schedule crews and pull payroll hours without running or fixing a server.

  • Approve weekly timesheets before payroll Runs: Weekly

    Approve last week's ClockShark timesheets for everyone without alerts, hold back the rest, and give me the CSV Export totals for payroll. Your agent calls list_time_entries, approve_timesheets and export_time_csv.

  • Fix missed clock outs Runs: Daily

    Every morning, find yesterday's ClockShark shifts with a Missing Out alert, end them at the scheduled time and ask me about anyone with no schedule. Your agent calls list_time_entries, list_shifts, edit_time_entry and approve_timesheets.

  • Export payroll hours Runs: Weekly

    Download the payroll CSV for this pay period and tell me who has overtime. Your agent calls export_time_csv.

  • Schedule crew shifts on a new job Runs: Weekly

    Create a job for 42 Oak Street and put Ana and Luis on it Monday to Wednesday, 7:00 to 15:30. Check nobody is booked elsewhere and show me the drafts before you publish. Your agent calls list_jobs, create_job, list_shifts, list_time_off_requests, create_shift and publish_shifts.

  • Approve time off requests Runs: Daily

    Approve every pending ClockShark time off request that does not take someone off a scheduled shift, and ask me about the rest. Your agent calls list_time_off_requests, list_shifts and respond_time_off_request.

  • See who is clocked in

    Who is clocked in right now, and on which jobs? Your agent calls list_clocked_in.

Endpoints

What is the ClockShark API?

Cotlet's ClockShark API exposes 15 endpoints for your own ClockShark account: list time entries, list who's clocked in, list shifts, list jobs, get job, list time off requests, export time CSV, add time entry, edit time entry, approve timesheets, create job, create shift, publish shifts, respond to time off request and add job comment. The list_time_entries endpoint returns shifts from Time > View: employee, job, task, start, end, breaks, notes, alerts and approval status. Each endpoint takes simple JSON inputs like from, to or employee_ids and works both as an MCP tool for agents and as a REST call for scripts.

All endpoints · 15 total

missing one? request an endpoint

  • POST

    list_time_entries

    read

    Returns shifts for a date range, oldest first, with the alerts ClockShark raised on each, such as a missing clock out. Filter by employee, by approval status or to shifts with alerts only. Use entry_id and employee_id from here in the edit and approve tools.

    POST /api/v1/clockshark/list_time_entries

    Input

    Input: list_time_entries
    Parameter Type Description
    from required date First day of the range.
    to required date Last day of the range.
    employee_ids string[] Only these employees. Default: everyone you manage.
    approval_status enum all, approved or unapproved. Default: all.
    with_alerts_only boolean Only shifts with timesheet alerts, such as a missing clock out.

    Example response

    {
      "entries": [
        {
          "entry_id": "te_90412",
          "employee_id": "e_48213",
          "employee": "Mike Torres",
          "job": "42 Oak Street",
          "task": "Framing",
          "start": "2026-10-09T07:00:00-05:00",
          "end": null,
          "break_minutes": 30,
          "alerts": [
            "Missing clock out"
          ],
          "approved": false
        },
        {
          "entry_id": "te_90420",
          "employee_id": "e_48219",
          "employee": "Luis Ortega",
          "job": "42 Oak Street",
          "task": "Framing",
          "start": "2026-10-09T07:02:00-05:00",
          "end": "2026-10-09T15:31:00-05:00",
          "break_minutes": 30,
          "alerts": [],
          "approved": false
        }
      ]
    }
  • POST

    list_clocked_in

    read

    Returns employees with an open shift at the moment of the call. Each item has the job, the task, the clock in time and the location of the last punch. An employee with no open shift is not listed.

    POST /api/v1/clockshark/list_clocked_in

    Input

    No parameters.

    Example response

    {
      "clocked_in": [
        {
          "employee_id": "e_48219",
          "employee": "Luis Ortega",
          "job": "42 Oak Street",
          "task": "Framing",
          "since": "2026-10-11T07:02:00-05:00",
          "last_punch": {
            "lat": 41.8781,
            "lng": -87.6298
          }
        }
      ]
    }
  • POST

    list_shifts

    read

    Returns scheduled shifts for a date range, earliest first. Status shows whether crews can already see a shift in the mobile app (published) or not yet (draft). Use shift_id with publish_shifts.

    POST /api/v1/clockshark/list_shifts

    Input

    Input: list_shifts
    Parameter Type Description
    from required date First day of the range.
    to required date Last day of the range.
    employee_ids string[] Only these employees. Default: everyone you manage.
    status enum all, published or draft. Default: all.

    Example response

    {
      "shifts": [
        {
          "shift_id": "s_77120",
          "employee_id": "e_48213",
          "job_id": "j_3307",
          "start": "2026-10-12T07:00:00-05:00",
          "end": "2026-10-12T15:30:00-05:00",
          "status": "published",
          "notes": ""
        }
      ]
    }
  • POST

    list_jobs

    read

    Returns jobs your account can see. By default only active jobs are listed. Use job_id from here in time, schedule and comment tools.

    POST /api/v1/clockshark/list_jobs

    Input

    Input: list_jobs
    Parameter Type Description
    active boolean Only active jobs. Default: true.
    customer string Only jobs of this customer.
    search string Match on job name or number.

    Example response

    {
      "jobs": [
        {
          "job_id": "j_3307",
          "number": "2041",
          "name": "42 Oak Street",
          "stage": "Active",
          "customer": "Harlow Homes",
          "address": "42 Oak Street, Springfield"
        }
      ]
    }
  • POST

    get_job

    read

    Returns one job with its labor budget, the comment thread and the names of attached files. Attachments are listed, not downloaded.

    POST /api/v1/clockshark/get_job

    Input

    Input: get_job
    Parameter Type Description
    job_id required string Job ID from list_jobs.

    Example response

    {
      "job_id": "j_3307",
      "number": "2041",
      "name": "42 Oak Street",
      "stage": "Active",
      "customer": "Harlow Homes",
      "address": "42 Oak Street, Springfield",
      "description": "Wall framing, level 1.",
      "budget_hours": 320,
      "comments": [
        {
          "author": "Dana Reed",
          "body": "Lumber arrives Monday 6:30.",
          "created_at": "2026-10-08T16:10:00-05:00"
        }
      ],
      "attachments": [
        "floor-plan.pdf"
      ]
    }
  • POST

    list_time_off_requests

    read

    Returns time off requests, pending ones by default, newest first. Each has the policy, the dates and the hours requested. Time off requests are a Pro plan feature, so the call fails on other plans.

    POST /api/v1/clockshark/list_time_off_requests

    Input

    Input: list_time_off_requests
    Parameter Type Description
    status enum pending, approved, declined or all. Default: pending.

    Example response

    {
      "requests": [
        {
          "request_id": "r_20871",
          "employee_id": "e_48219",
          "employee": "Luis Ortega",
          "policy": "Vacation",
          "from": "2026-10-19",
          "to": "2026-10-20",
          "hours": 16,
          "status": "pending"
        }
      ]
    }
  • POST

    export_time_csv

    read

    Returns a download link to the CSV Export report for the range, plus the row count and totals in minutes, so your agent can answer without opening the file. Notes are left out unless include_notes is true. It reads the report and changes nothing.

    POST /api/v1/clockshark/export_time_csv

    Input

    Input: export_time_csv
    Parameter Type Description
    from required date First day of the range.
    to required date Last day of the range.
    employee_ids string[] Only these employees. Default: everyone you manage.
    include_notes boolean Add timesheet notes. Default: false.

    Example response

    {
      "download_url": "https://app.clockshark.com/exports/csv/2026-10-05_2026-10-11.csv",
      "rows": 3,
      "totals": {
        "paid_minutes": 1530,
        "regular_minutes": 1440,
        "overtime_minutes": 90,
        "double_time_minutes": 0
      }
    }
  • POST

    add_time_entry

    write

    Adds a shift for one employee against a job and a task, with start and end as ISO 8601 times with a time zone. It reaches no one and a wrong entry is fixed with edit_time_entry, so it runs without asking. The new entry is unapproved.

    POST /api/v1/clockshark/add_time_entry

    Input

    Input: add_time_entry
    Parameter Type Description
    employee_id required string Employee ID from list_time_entries.
    job_id required string Job ID from list_jobs.
    task_id required string Task to log the time against.
    start required datetime ISO 8601 with time zone.
    end required datetime ISO 8601 with time zone.
    notes string Timesheet note.

    Example response

    {
      "entry_id": "te_90433",
      "employee_id": "e_48213",
      "job_id": "j_3307",
      "start": "2026-10-09T07:00:00-05:00",
      "end": "2026-10-09T15:30:00-05:00",
      "approved": false
    }
  • POST

    edit_time_entry

    write

    Changes the fields you pass and leaves the rest. It works on unapproved shifts only, so unapprove the timesheet first if needed. Each edit is saved to the audit log. It reaches no one and is undone by editing again, so it runs without asking.

    POST /api/v1/clockshark/edit_time_entry

    Input

    Input: edit_time_entry
    Parameter Type Description
    entry_id required string Entry ID from list_time_entries.
    fields required object Any of start, end, job_id, task_id, notes.
    ignore_alerts boolean Mark the shift alerts as ignored.

    Example response

    {
      "entry_id": "te_90412",
      "start": "2026-10-09T07:00:00-05:00",
      "end": "2026-10-09T16:30:00-05:00",
      "alerts": [],
      "approved": false
    }
  • POST

    approve_timesheets

    write

    Approves every shift of the listed employees in the range and returns paid and overtime hours per employee. Timesheet approvals must be turned on in your account. It reaches no one and action unapprove reverses it, so it runs without asking.

    POST /api/v1/clockshark/approve_timesheets

    Input

    Input: approve_timesheets
    Parameter Type Description
    employee_ids required string[] Employees whose timesheets to approve.
    from required date First day of the range.
    to required date Last day of the range.
    action enum approve or unapprove. Default: approve.

    Example response

    {
      "approved": 2,
      "period": {
        "from": "2026-10-05",
        "to": "2026-10-11"
      },
      "timesheets": [
        {
          "employee_id": "e_48213",
          "paid_hours": 41.5,
          "overtime_hours": 1.5,
          "status": "approved"
        },
        {
          "employee_id": "e_48219",
          "paid_hours": 38,
          "overtime_hours": 0,
          "status": "approved"
        }
      ]
    }
  • POST

    create_job

    write

    Creates a job with an optional number, customer, address and description, and a labor budget in hours. The description shows to field employees in the mobile app. It reaches no one by itself and runs without asking.

    POST /api/v1/clockshark/create_job

    Input

    Input: create_job
    Parameter Type Description
    name required string Job name.
    number string Job number.
    customer string Existing customer name or ID.
    address string Job site address.
    description string Shown to field employees in the mobile app.
    budget_hours integer Total hours budgeted for the labor budget.

    Example response

    {
      "job_id": "j_3307",
      "number": "2041",
      "name": "42 Oak Street",
      "stage": "Active",
      "budget_hours": 320
    }
  • POST

    create_shift

    write

    Creates one shift per employee on a job with start and end as ISO 8601 times. Shifts are saved as drafts, so crews see nothing until publish_shifts. It runs without asking for that reason.

    POST /api/v1/clockshark/create_shift

    Input

    Input: create_shift
    Parameter Type Description
    employee_ids required string[] Employees to schedule.
    job_id required string Job ID from list_jobs.
    start required datetime ISO 8601 with time zone.
    end required datetime ISO 8601 with time zone.
    task_id string Task for the shift.
    notes string Shift notes for the crew.

    Example response

    {
      "shifts": [
        {
          "shift_id": "s_77201",
          "employee_id": "e_48213",
          "job_id": "j_3307",
          "start": "2026-10-12T07:00:00-05:00",
          "end": "2026-10-12T15:30:00-05:00",
          "status": "draft"
        },
        {
          "shift_id": "s_77202",
          "employee_id": "e_48219",
          "job_id": "j_3307",
          "start": "2026-10-12T07:00:00-05:00",
          "end": "2026-10-12T15:30:00-05:00",
          "status": "draft"
        }
      ]
    }
  • POST

    publish_shifts

    write

    Publishes the shifts you name, or all drafts in a date range, and returns how many went out. Employees see published shifts in their mobile app. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/clockshark/publish_shifts

    Input

    Input: publish_shifts
    Parameter Type Description
    shift_ids string[] Shifts to publish. Default: all drafts in the range.
    from date First day of the range.
    to date Last day of the range.

    Example response

    {
      "published": 2,
      "shift_ids": [
        "s_77201",
        "s_77202"
      ]
    }
  • POST

    respond_time_off_request

    write

    Approves or declines one pending request. ClockShark emails the employee, and a note is shown with a decline. A decline cannot be undone. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/clockshark/respond_time_off_request

    Input

    Input: respond_time_off_request
    Parameter Type Description
    request_id required string Request ID from list_time_off_requests.
    decision required enum approve or decline.
    note string Reason, shown with a decline.

    Example response

    {
      "request_id": "r_20871",
      "employee": "Luis Ortega",
      "decision": "approve",
      "status": "approved"
    }
  • POST

    add_job_comment

    write

    Posts a comment on the job thread under your name. Users you @mention get a notification. By default you confirm each call; you can switch that off for this tool.

    POST /api/v1/clockshark/add_job_comment

    Input

    Input: add_job_comment
    Parameter Type Description
    job_id required string Job ID from list_jobs.
    body required string Comment text. Mention users as @Name.

    Example response

    {
      "comment_id": "c_5521",
      "job_id": "j_3307",
      "body": "@Dana Reed lumber is confirmed for Monday 6:30.",
      "created_at": "2026-10-09T16:12:00-05:00"
    }

Setup

How do I connect ClockShark to Claude Code, Codex or Cursor?

Connecting ClockShark takes three steps: request access, sign in to ClockShark once, then add one MCP server or call the REST API with the same key.

Connect ClockShark over MCP

  1. 1

    Create an account

    Sign up and add ClockShark in the console. Your API key is there too.

  2. 2

    Sign in to ClockShark once

    Open the connect page from the console and sign in to ClockShark the way you always do. We keep the session, never your password, and you can revoke it anytime.

  3. 3

    Add Cotlet to your agent

    Claude Code
    claude mcp add --transport http cotlet \
      https://cotlet.dev/mcp/v1 \
      --header "Authorization: Bearer $COTLET_API_KEY"
    Cursor
    {
      "mcpServers": {
        "cotlet": {
          "url": "https://cotlet.dev/mcp/v1",
          "headers": {
            "Authorization": "Bearer ${COTLET_API_KEY}"
          }
        }
      }
    }
    Codex
    # ~/.codex/config.toml
    [mcp_servers.cotlet]
    url = "https://cotlet.dev/mcp/v1"
    bearer_token_env_var = "COTLET_API_KEY"

    Paste the snippet for your client. The same server and key serve every app you connect, so you do this once.

  4. 4

    Ask your agent

    Prompt

    Approve last week's ClockShark timesheets for everyone without alerts, hold back the rest, and give me the CSV Export totals for payroll.

    Ask in plain words. Your agent finds the ClockShark tools on the server and calls them for you; anything that reaches other people waits for your OK unless you switch that off for a tool.

Call ClockShark over REST

  1. 1

    Export your API key

    Shell

    export COTLET_API_KEY="cotlet_..."

    Your scripts use the same API key as your agent. Keep it in an environment variable, never in your code.

  2. 2

    Call a tool

    curl

    curl https://cotlet.dev/api/v1/clockshark/approve_timesheets \
      -H "Authorization: Bearer $COTLET_API_KEY" \
      -H "Content-Type: application/json" \
      -d '{"employee_ids":["e_48213","e_48219"],"from":"2026-10-05","to":"2026-10-11","action":"approve"}'

    Every tool is a POST endpoint at /api/v1/clockshark/{tool}. Send its parameters as JSON, exactly as listed in the endpoints above.

  3. 3

    Read the result

    Example response · approve_timesheets

    {
      "approved": 2,
      "period": {
        "from": "2026-10-05",
        "to": "2026-10-11"
      },
      "timesheets": [
        {
          "employee_id": "e_48213",
          "paid_hours": 41.5,
          "overtime_hours": 1.5,
          "status": "approved"
        },
        {
          "employee_id": "e_48219",
          "paid_hours": 38,
          "overtime_hours": 0,
          "status": "approved"
        }
      ]
    }

    You get plain JSON back, ready for your script. A failed call costs nothing.

Why Cotlet

Why use Cotlet for ClockShark? Hosted, safe and kept working.

  • Built for agents

    • One MCP server for every app you connect.
    • The same tools as a REST API for scripts and cron jobs.
    • Works with Claude Code, Codex and Cursor.
  • Your login stays yours

    • You sign in to ClockShark yourself. We keep only the session, encrypted with AES-256.
    • The model never sees a login.
    • No stored passwords, no CAPTCHA solving, no MFA bypass.
  • You stay in control

    • Pick read only, or read and write.
    • Anything that reaches other people waits for your OK, unless you switch it off per tool.
    • Revoke access in one click.
  • Kept working for you

    • We test every integration daily.
    • When ClockShark changes, the tool pauses until we fix it.
    • Failed calls cost nothing.

Alternatives

Is there a ClockShark MCP server on GitHub?

Zapier is the one official route: it reacts to clock ins, new jobs and new schedules, and can create jobs and tasks. It cannot approve, edit, schedule or answer time off. Cotlet does those, and works next to Zapier, n8n and Make.

Cotlet compared with a Zapier
Zapier Cotlet
Setup Generate a Zapier API key in ClockShark, connect it in Zapier, build a Zap per job Request access, sign in to ClockShark once, add one MCP server or API key
What it can do 6 triggers (clock in, clock out, new job, notification, new schedule, new task) and 2 actions (create job, create task) Also approve timesheets, edit time, build and publish schedules, answer time off, export payroll hours
Reading history Fires on new events only Reads any date range, on demand
When ClockShark changes Maintained by Zapier and ClockShark Our team tests it daily and fixes it for you; failed calls are free
Your ClockShark session An API key you can revoke Encrypted in an EU vault, limited to the actions you allow, revoked in one click
When the session expires Not applicable, the key stays valid until revoked If ClockShark logs you out, your agent gets a link to sign in again
Price Zapier plan, per task Free 7-day trial with 5,000 credits, then credits per call

Which one fits you

Pick Cotlet if

  • you are not a developer, or you do not want to maintain a server
  • you need it to keep working when ClockShark changes, without checking it yourself
  • your agent or a script should run it on a schedule, also while your computer is off

Pick an open-source server if

  • you are comfortable installing, updating and fixing it yourself
  • you want the session to stay on your own computer
  • you only need it now and then, from one MCP client

For AI agents

Cotlet for ClockShark in plain text The facts on this page in one block: status, endpoints, access, pricing, contact.

Endpoint health

verified 2h ago

  • list_time_entries passing
  • list_clocked_in passing
  • list_shifts passing
  • list_jobs passing
  • get_job passing

+ 10 more endpoints

15/15 passing latest check self-healing

clockshark.txt

ClockShark has no public developer API or API docs (checked 10 Oct 2026). Admins can only generate a Zapier API key, which Zapier uses for 6 triggers and 2 actions: Create Job and Create Task.
Cotlet provides a hosted MCP server and REST API for ClockShark: 15 tools (7 read, 8 write).
Access       Request access at https://cotlet.dev/app/signup?app=clockshark; we email the API key.

MCP server   https://cotlet.dev/mcp/v1
REST base    https://cotlet.dev/api/v1/clockshark
Auth         Authorization: Bearer <COTLET_API_KEY>. Listing endpoints and schemas needs no key; calling an endpoint needs one.
Tools        list_time_entries, list_clocked_in, list_shifts, list_jobs, get_job, list_time_off_requests, export_time_csv, add_time_entry, edit_time_entry, approve_timesheets, create_job, create_shift, publish_shifts, respond_time_off_request, add_job_comment
Confirm      publish_shifts, respond_time_off_request, add_job_comment (by default the user approves each call; the user can switch this off per tool, e.g. for scheduled automations)
Markdown     https://cotlet.dev/integrations/clockshark-api-mcp-server.md

How access works:
1. The user requests access at https://cotlet.dev/app/signup?app=clockshark (ClockShark is pre-selected). Each request is reviewed and the API key is sent by email.
2. The user signs in to ClockShark once in a browser. An agent cannot do this step.
3. The API key goes into the MCP client or the REST call as a bearer token.

Fits: people who want a hosted ClockShark server that someone else maintains, including non-developers.

Policy: Cotlet never stores passwords, never solves CAPTCHAs, never bypasses MFA.
Company: legal details in the Terms of service at https://cotlet.dev/terms. Contact contact@cotlet.dev.
Session: the user signs in to ClockShark in a browser; Cotlet keeps only the session, AES-256 encrypted, revocable in the dashboard at any time.
Terms: the user stays responsible for following ClockShark's terms; Cotlet is not affiliated with ClockShark.
Full page as Markdown

Automations

Can ClockShark automations run on a schedule in n8n, Make or Zapier?

Yes. Cotlet does not replace your automation platform: it gives it a ClockShark connection it does not have, with the same API key as your agent. Write actions ask for your OK by default; switch that off in your dashboard for the tools you choose, for example to approve weekly timesheets before payroll, and the schedule runs on its own. Cotlet runs in the cloud, so it keeps going while your computer is off.

Where to run ClockShark automations through Cotlet, and how to schedule them
Where How to connect How to schedule
Your AI agent Add https://cotlet.dev/mcp/v1 with your API key. A scheduled agent run, for example a Claude Code routine.
n8n MCP Client node with https://cotlet.dev/mcp/v1, or an HTTP Request node to https://cotlet.dev/api/v1/clockshark/{tool}. Schedule Trigger node.
Make HTTP module: POST https://cotlet.dev/api/v1/clockshark/{tool} with an Authorization: Bearer header and a JSON body. Scenario schedule.
Zapier Webhooks by Zapier: POST https://cotlet.dev/api/v1/clockshark/{tool} with the same header and body. Schedule by Zapier trigger.
Your own script POST https://cotlet.dev/api/v1/clockshark/{tool} with your API key. cron or GitHub Actions.

Pricing & limits

How much does the ClockShark API cost?

Free 7-day trial with 5,000 credits, no card needed. After that, the ClockShark API comes with the Cotlet plan, from $29 a month for 3,000 credits, with no limit on apps. Each month's credits stay valid for 3 months, so unused credits add up.

Cotlet plan sizes: price, monthly credits and price per credit
Size Price Credits / month Per credit
Solo $29/mo 3,000 about $0.0097
Pro $99/mo 12,000 about $0.0083
Agency $299/mo 40,000 $0.0075

Each successful call uses credits for the work it takes; failed calls and timeouts cost nothing. A hard spend cap is on by default. Authenticate with the Authorization: Bearer header.

About Cotlet

How Cotlet holds your access

Cotlet hosts MCP servers and REST APIs for apps with no usable API. Your agent works in your own ClockShark account.

Company details
The legal name, address and registration numbers of the company behind Cotlet are in the Terms of service. Terms
Your session
You sign in to ClockShark yourself, in your browser. We keep only the session, never your password: encrypted with AES-256 in an EU vault, isolated to your account and used only when your agent calls a ClockShark tool you allowed. When it expires, your agent gives you a link to sign in again. Security
Revoking access
Disconnect ClockShark in your dashboard: the session is deleted and access ends at once. Actions that reach other people wait for your OK unless you switch that off per tool.
What we never do
Store passwords, solve CAPTCHAs or bypass MFA.
ClockShark's terms
You use your own ClockShark account and stay responsible for following ClockShark's terms. Cotlet is independent and not affiliated with ClockShark. Terms
Contact
Questions about the company, security or an app: contact@cotlet.dev
About Cotlet

Frequently asked questions

How do I get access?

Request access and pick ClockShark. Cotlet reviews each request and emails you your API key.

Do I need to be technical?

No. You sign in to ClockShark once in your browser and paste one command into your agent, or one URL into n8n. Your agent can walk you through it. There is no server to install, update or fix.

Is a hosted server safe? My ClockShark session would leave my computer.

Cotlet keeps your ClockShark session encrypted with AES-256 in an EU vault, isolated to your account and used only for the tools you allow: read only, or read and write. The AI model never sees it, and you revoke it in one click. A local server keeps the same session in a file on your computer, readable by any program you run, and needs a fresh sign-in whenever it expires.

Do I need Zapier or a special ClockShark plan?

No. Cotlet works in your own ClockShark admin or manager account and does not use the Zapier API key. Time off requests are a Pro plan feature in ClockShark, and approving timesheets needs timesheet approvals turned on.

Can it change a timesheet that is already approved?

Not directly. edit_time_entry works on unapproved shifts, so your agent first calls approve_timesheets with action unapprove for that range, edits the shift, then approves again.

Can my agent post or send messages in ClockShark without asking me?

No. Every call to publish_shifts, respond_time_off_request or add_job_comment waits for your OK by default. For scheduled automations you can switch confirmation off per tool in your dashboard, for example only for approvals. add_time_entry, edit_time_entry, approve_timesheets, create_job, create_shift runs without asking, because it sends nothing to anyone and one call undoes it.

Can I use the ClockShark API in n8n?

Yes. Add https://cotlet.dev/mcp/v1 with your API key in n8n's MCP Client node, or call https://cotlet.dev/api/v1/clockshark/{tool} from the HTTP Request node.

Give your agent access to ClockShark.

Request access and pick it. We review each request and email you your API key. Free 7-day trial with 5,000 credits, no card needed.