clockify-python-115
clockify-python-115 is an independent community project. It is not affiliated
with, endorsed by, or sponsored by CAKE.com or Clockify. The project uses the
Clockify name only to identify the service that it supports.
The distribution contains:
clockify: a typed async SDK with all 168 known Clockify operations on 29 resources.clockify_mcp: a structurally read-only Model Context Protocol (MCP) server.
Documentation version: 0.1.2. The distribution is available from public
PyPI. The default MCP server registers 60 raw reads and five workflows. It
registers zero writes.
Install
Install the SDK or the SDK with the optional MCP server:
uv add clockify-python-115
uv add "clockify-python-115[mcp]"
Python 3.11, 3.12, 3.13, and 3.14 are supported and tested.
Read-only SDK quickstart
import asyncio
import os
from clockify import ClockifyClient
async def main() -> None:
async with ClockifyClient(
api_key=os.environ["CLOCKIFY_API_KEY"],
workspace_id=os.environ.get("CLOCKIFY_WORKSPACE_ID"),
) as clockify:
me = await clockify.users.me()
projects = await clockify.projects.list(archived=False, page_size=25)
print(me.name, len(projects))
asyncio.run(main())
See docs/quickstart.md and examples/sdk_list_projects.py.
MCP quickstart
clockify-mcp
Configure exactly one of CLOCKIFY_API_KEY or CLOCKIFY_ADDON_TOKEN. You can
also configure CLOCKIFY_WORKSPACE_ID.
The MCP contract is exact:
- 60 raw read tools;
- five workflows:
clockify_status,clockify_workspace_overview,clockify_review_day,clockify_review_week, andclockify_doctor; - 65 tools in total;
- zero registered writes.
The SDK exposes writes to explicit Python callers. MCP does not. See docs/mcp.md and examples/mcp_config.example.json.
SDK behavior
- Configure exactly one credential. The SDK rejects caller-supplied authority and Clockify credential headers before network access.
- Ordinary caller headers and
X-Request-Idare preserved. - Read retries support delay-seconds and HTTP-date
Retry-Aftervalues. - No write is automatically retried. An ambiguous write transport failure
raises
MutationOutcomeUnknownError. Read state before a manual retry. - Pagination names vary by operation. Use
iter_pagesoriter_alland honor the operation'sLast-Pagebehavior. - Reports and audit-log operations use their required service hosts automatically.
- Some
PUToperations replace the complete entity. Resend each field that must remain. See docs/api-deviations.md. - API errors expose bounded sanitized detail, status, operation ID, request ID, safe API code, and safe retry timing.
The direct write example is intentionally separate. It mutates only a verified sacrificial workspace and uses a unique name: examples/sdk_create_tag_sacrificial.py.
Develop
uv sync --all-extras --dev
uv run ruff check .
uv run ruff format --check .
uv run pyright
uv run pytest -q -m "not live"
uv build
See CONTRIBUTING.md, SECURITY.md, NOTICE.md, and LICENSE.
Release files for clockify-python-115 0.1.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| clockify_python_115-0.1.2.tar.gz | 354.5 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| clockify_python_115-0.1.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 546.3 kB
Release files / clockify_python_115-0.1.2.tar.gz
| Download URL | clockify_python_115-0.1.2.tar.gz |
|---|---|
| Size | 354.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2897db738c158a920256156622aac6bed1ef1c381977750286a82cf2ae11b3a7
|
|
BLAKE2b-256 checksum How to use checksums |
a37d3c87b7ef5df6257ce7f3df6a248d31b320a0dd2c9c0d882a57352518284d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 13, 2026.
Transparency logRelease files / clockify_python_115-0.1.2-py3-none-any.whl
| Download URL | clockify_python_115-0.1.2-py3-none-any.whl |
|---|---|
| Size | 191.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e5c92d2047ec80b8b9ccb41ebd85c4aa8ed175b979f93e711bcdce3c24d71825
|
|
BLAKE2b-256 checksum How to use checksums |
0770db10b13b18f87a3a2df9d8e3bf7f869c3ebabde1d674557d551ec374db34
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Aug 13, 2026.
Transparency log