{
  "markdown": "# tidee-life-mcp\n\nAn [MCP](https://modelcontextprotocol.io) server for tidee. It lets an\nassistant add items to your workspace, read what is there, and mark\nthings done — without you switching to the app to write it down.\n\n## Which one do you want?\n\nThere are two ways to connect, and most people want the hosted one.\n\n**Hosted** — point your client at `https://app.tidee.com/mcp`. Nothing to\ninstall, and no token to copy: your client registers itself, tidee asks\nyou to approve it in the browser, and that is the whole setup. In Claude\nCode that is one line:\n\n```sh\nclaude mcp add --transport http tidee https://app.tidee.com/mcp\n```\n\n**This package** — a local server over stdio, for clients that do not\nspeak HTTP MCP, or when you want to point at a development server. It\nneeds Node and a token you paste into a config file.\n\n## Setup\n\n1. In tidee, open **Application Settings → Integrations** and create a\n   token. Give it only the access the assistant needs:\n\n   | Access | Tools it enables |\n   |---|---|\n   | Add new items | `capture`, `create_item` |\n   | Read items | `list_boxes`, `list_items` |\n   | Edit and complete existing items | `complete_item` |\n\n   The token is shown once. Copy it then.\n\n2. Add the server to your MCP client's config:\n\n   ```json\n   {\n     \"mcpServers\": {\n       \"tidee\": {\n         \"command\": \"npx\",\n         \"args\": [\"-y\", \"tidee-mcp\"],\n         \"env\": { \"TIDEE_API_TOKEN\": \"tdl_…\" }\n       }\n     }\n   }\n   ```\n\n3. Restart the client.\n\n## Environment\n\n| Variable | Required | Default |\n|---|---|---|\n| `TIDEE_API_TOKEN` | yes | — |\n| `TIDEE_API_URL` | no | `https://app.tidee.com` |\n\n`TIDEE_API_URL` exists for pointing at a local server during\ndevelopment. Leave it unset otherwise.\n\n## Releasing\n\n```sh\npnpm run mcp:release                   # from the repo root\ncd packages/tidee-life-mcp && npm publish\n```\n\n`mcp:release` bumps the patch version and records a fingerprint of\neverything that determines what gets published — this package's source,\n`tidee-life-core/mcp`, and the runtime dependencies. CI verifies that\nrecord on every pipeline.\n\nThat check exists because there are two of these in the wild: the hosted\nendpoint at `app.tidee.com/mcp`, which updates on every deploy, and this\npackage, which updates only when somebody remembers. Sharing the tool\ndefinitions stops the source drifting; nothing stops the artefacts\ndrifting, and when they do it is silent — package users just get older\ntools than URL users. Editing a tool description in\n`tidee-life-core/mcp` is enough to cause it, and that file is nowhere\nnear this package.\n\nPublishing stays manual: it needs credentials and a 2FA code, the\nversion is claimed forever, and unpublishing is heavily restricted after\n72 hours.\n\n## The MCP registry\n\n`server.json` is the registry entry. It lists BOTH ways to connect —\nthe hosted endpoint under `remotes`, and this package under `packages` —\nso a client can prefer whichever suits it. The hosted one needs no token;\nthis one does, which is why only the package entry declares\n`TIDEE_API_TOKEN`.\n\nThree things must agree, or publishing is rejected:\n\n| | |\n|---|---|\n| `server.json` → `name` | `package.json` → `mcpName` |\n| `server.json` → `version` | `package.json` → `version` |\n| `server.json` → `packages[0].version` | `package.json` → `version` |\n\n`mcpName` is how the registry verifies ownership: it checks that the npm\npackage claims the same name the registry entry does, which stops anyone\nregistering a server pointing at a package they do not own. It therefore\nhas to be inside the published tarball — bump and republish before\npublishing to the registry, not after.\n\nThe `com.tidee/` namespace needs DNS authentication (a TXT record on\ntidee.com) rather than the GitHub flow, so that a listing carries the\nproduct's own name rather than a personal account's:\n\n```sh\nbrew install mcp-publisher\nmcp-publisher login dns --domain tidee.com\nmcp-publisher publish\n```\n\nThe registry is in preview and warns about breaking changes, so check\nthe current docs at modelcontextprotocol.io/registry before running it.\n\n## Building\n\n```sh\npnpm run build\n```\n\nType-checks, then bundles to a single `dist/index.js` with esbuild.\n\nThe bundling is not an optimisation. The tool definitions — names,\nschemas, descriptions, and the sentences returned to the model — live in\n`tidee-life-core/mcp`, shared with the hosted server so the two cannot\ndrift. That is a private workspace package, so it cannot be a dependency\nof anything published; inlining it means what ships depends only on\n`@modelcontextprotocol/sdk` and `zod`, while there is still exactly one\ndefinition of the tools.\n\n## Tools\n\n- **`capture`** — the one to reach for. Takes a whole thought in ordinary\n  language and lets tidee work out the separate items, which box each\n  belongs in, and any dates. \"Book the MOT and call Sam about Friday\"\n  becomes two items, filed.\n- **`create_item`** — one item with an exact title, for when the wording\n  is already decided.\n- **`list_boxes`** — the boxes items are filed in, with their ids.\n- **`list_items`** — read or search items.\n- **`complete_item`** — mark one done.\n\n## Notes\n\nEvery tool is a single call to tidee's public API. Planning, filing and\nthe never-lose fallback all happen server-side, which is why this server\nholds no logic worth configuring: it is a client, not a second copy of\nthe app.\n\nA capture that cannot be interpreted is never discarded — it is stored\nverbatim as one item, and the tool says so.\n\nCaptures made through this server count towards the account's capture\nallowance, exactly as they would in the app.\n\nIf a token is revoked or expires the tools stop working immediately and\nsay why. Create a new one in Settings and update the config.",
  "bytes": 5730,
  "sha": "b44943ebe9711fc3b66a05e5cb8995ab77134c2640aa0ddab2a790e2189330fc",
  "repo_slug": "",
  "fonte": "npm",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_com_tidee_tidee_61a39249/readme"
}