Skip to content

Commit 7f8a266

Browse files
committed
README: absolute links and images, so they also work on PyPI
1 parent b504bba commit 7f8a266

1 file changed

Lines changed: 16 additions & 16 deletions

File tree

‎README.md‎

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,13 @@ Tradify has no public API, no API keys, no webhooks and no official MCP server.
88

99
- **MCP server** for Claude Code, Claude Desktop, Cursor, Codex and any MCP client, over stdio or HTTP. [Setup](#mcp-server)
1010
- **REST API** on `http://127.0.0.1:8787/api/v1/tradify`, with OpenAPI docs at `/docs`. [Setup](#rest-api)
11-
- **Python**: `call("list_invoices", {"status": "overdue"})`, plus 9 ready scripts in [`examples/`](examples/).
11+
- **Python**: `call("list_invoices", {"status": "overdue"})`, plus 9 ready scripts in [`examples/`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/).
1212

1313
It is for technical people who want to run it themselves, **for noncommercial use only** ([license](#license)). If you want it running 24/7 on a server, kept working when Tradify changes its web app, for a team or a business, use the [hosted version at cotlet.dev](https://cotlet.dev/integrations/tradify-api-mcp-server).
1414

1515
[![Tradify MCP server](https://img.shields.io/badge/Tradify%20MCP-15%20tools-6d4aef)](#all-15-tools)
1616
[![Python 3.11+](https://img.shields.io/badge/python-3.11%2B-141318)](#requirements)
17-
[![License: PolyForm Noncommercial 1.0.0](https://img.shields.io/badge/license-PolyForm%20Noncommercial-141318)](LICENSE)
17+
[![License: PolyForm Noncommercial 1.0.0](https://img.shields.io/badge/license-PolyForm%20Noncommercial-141318)](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/LICENSE)
1818
[![MCP Badge](https://lobehub.com/badge/mcp/cotletdev-tradify-api-mcp-server)](https://lobehub.com/mcp/cotletdev-tradify-api-mcp-server)
1919

2020
```bash
@@ -76,7 +76,7 @@ tradify-mcp --version
7676

7777
With [uv](https://docs.astral.sh/uv/): `uv venv && uv pip install -e .`, then `uv run tradify-mcp ...`.
7878

79-
Setting it up with an AI agent (Claude Code, Codex, Cursor)? Open it in this folder and ask it to set up the repo: [`AGENTS.md`](AGENTS.md) tells it every step, and it asks you only for the steps in Chrome.
79+
Setting it up with an AI agent (Claude Code, Codex, Cursor)? Open it in this folder and ask it to set up the repo: [`AGENTS.md`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/AGENTS.md) tells it every step, and it asks you only for the steps in Chrome.
8080

8181
To update: `git pull && pip install -e .`. We copy every change of the hosted Tradify tools into this repo.
8282

@@ -167,7 +167,7 @@ claude mcp add tradify -- /path/to/tradify-api-mcp-server/.venv/bin/tradify-mcp
167167

168168
### Cursor
169169

170-
`~/.cursor/mcp.json`, the same block as Claude Desktop. A ready copy is in [`mcp.json`](mcp.json).
170+
`~/.cursor/mcp.json`, the same block as Claude Desktop. A ready copy is in [`mcp.json`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/mcp.json).
171171

172172
### Codex
173173

@@ -250,19 +250,19 @@ Or one tool from the shell: `tradify-mcp call list_quotes status=accepted since=
250250

251251
Times are wall clock in your company's time zone (Settings > Company). `2026-10-29T08:00` means 8:00 there. A time with an offset is converted to it, and answers carry the company's offset.
252252

253-
Ready scripts in [`examples/`](examples/). Each prints a short list or JSON, takes `--out file.csv` or `--out file.json` where it makes sense, and `--help`. The ones that change Tradify only show their plan until you pass `--apply` or `--send`:
253+
Ready scripts in [`examples/`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/). Each prints a short list or JSON, takes `--out file.csv` or `--out file.json` where it makes sense, and `--help`. The ones that change Tradify only show their plan until you pass `--apply` or `--send`:
254254

255255
| Script | What it does |
256256
|---|---|
257-
| [`overdue_invoices.py`](examples/overdue_invoices.py) | Every overdue invoice, totalled per customer, oldest first, with the ones past your last reminder marked. A call list. |
258-
| [`record_payments.py`](examples/record_payments.py) | Records the payments of a CSV bank export against invoices by number. Skips an unknown or closed invoice and a payment above the amount due. `--apply`. |
259-
| [`pay_and_close.py`](examples/pay_and_close.py) | Records a payment on one invoice and sets its jobs to complete once nothing is due. |
260-
| [`job_from_call.py`](examples/job_from_call.py) | Finds or adds the caller, creates the job, and with `--start` books staff after checking their day for overlaps. |
261-
| [`quote_from_notes.py`](examples/quote_from_notes.py) | A draft quote from a text file of time and misc lines; `--send` emails it. |
262-
| [`deposit_invoices.py`](examples/deposit_invoices.py) | A percentage deposit invoice for every quote accepted lately whose job has no invoice yet. `--apply`, `--send`. |
263-
| [`tomorrows_schedule.py`](examples/tomorrows_schedule.py) | Tomorrow's Scheduler grouped by staff member, with job, customer and crew notes. |
264-
| [`export_jobs.py`](examples/export_jobs.py) | Jobs to CSV or JSON. `--status`, `--search`. |
265-
| [`export_customers.py`](examples/export_customers.py) | Every customer to CSV or JSON, with sites. `--archived`. |
257+
| [`overdue_invoices.py`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/overdue_invoices.py) | Every overdue invoice, totalled per customer, oldest first, with the ones past your last reminder marked. A call list. |
258+
| [`record_payments.py`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/record_payments.py) | Records the payments of a CSV bank export against invoices by number. Skips an unknown or closed invoice and a payment above the amount due. `--apply`. |
259+
| [`pay_and_close.py`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/pay_and_close.py) | Records a payment on one invoice and sets its jobs to complete once nothing is due. |
260+
| [`job_from_call.py`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/job_from_call.py) | Finds or adds the caller, creates the job, and with `--start` books staff after checking their day for overlaps. |
261+
| [`quote_from_notes.py`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/quote_from_notes.py) | A draft quote from a text file of time and misc lines; `--send` emails it. |
262+
| [`deposit_invoices.py`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/deposit_invoices.py) | A percentage deposit invoice for every quote accepted lately whose job has no invoice yet. `--apply`, `--send`. |
263+
| [`tomorrows_schedule.py`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/tomorrows_schedule.py) | Tomorrow's Scheduler grouped by staff member, with job, customer and crew notes. |
264+
| [`export_jobs.py`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/export_jobs.py) | Jobs to CSV or JSON. `--status`, `--search`. |
265+
| [`export_customers.py`](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/examples/export_customers.py) | Every customer to CSV or JSON, with sites. `--archived`. |
266266

267267
```bash
268268
python examples/overdue_invoices.py
@@ -415,7 +415,7 @@ No. The source is public, but the license allows noncommercial use only: no busi
415415

416416
## License
417417

418-
[PolyForm Noncommercial License 1.0.0](LICENSE). In short:
418+
[PolyForm Noncommercial License 1.0.0](https://github.com/cotletdev/tradify-api-mcp-server/blob/main/LICENSE). In short:
419419

420420
- **Allowed:** noncommercial use: you, for your own personal purposes with your own Tradify account, or a charity, school, public research or government body. Changing the code, and sharing it under the same license.
421421
- **Not allowed:** any commercial use, your own business included; client work; selling or offering it, or a service built on it.
@@ -426,7 +426,7 @@ No. The source is public, but the license allows noncommercial use only: no busi
426426
<a href="https://cotlet.dev">
427427
<picture>
428428
<source media="(prefers-color-scheme: dark)" srcset="assets/logo-white.svg">
429-
<img src="assets/logo.svg" alt="Cotlet" width="120">
429+
<img src="https://raw.githubusercontent.com/cotletdev/tradify-api-mcp-server/main/assets/logo.svg" alt="Cotlet" width="120">
430430
</picture>
431431
</a>
432432
</p>

0 commit comments

Comments
 (0)