@studiometa/productive-mcp 0.10.10 → 0.10.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +120 -0
- package/dist/api-reference/generated.d.ts +3 -0
- package/dist/api-reference/generated.d.ts.map +1 -0
- package/dist/api-reference/types.d.ts +31 -0
- package/dist/api-reference/types.d.ts.map +1 -0
- package/dist/handlers/api-read.d.ts +14 -0
- package/dist/handlers/api-read.d.ts.map +1 -0
- package/dist/handlers/api-utils.d.ts +27 -0
- package/dist/handlers/api-utils.d.ts.map +1 -0
- package/dist/handlers/api-write.d.ts +10 -0
- package/dist/handlers/api-write.d.ts.map +1 -0
- package/dist/handlers/index.d.ts.map +1 -1
- package/dist/handlers-B9FASjNJ.js +41290 -0
- package/dist/handlers-B9FASjNJ.js.map +1 -0
- package/dist/handlers.js +1 -1
- package/dist/http-B3J8ZV4I.js +2534 -0
- package/dist/http-B3J8ZV4I.js.map +1 -0
- package/dist/http.js +1 -1
- package/dist/index.js +2 -2
- package/dist/schema.d.ts +32 -1
- package/dist/schema.d.ts.map +1 -1
- package/dist/server.js +2 -2
- package/dist/{stdio-BFK9AcdQ.js → stdio-BpKd5pcS.js} +2 -2
- package/dist/{stdio-BFK9AcdQ.js.map → stdio-BpKd5pcS.js.map} +1 -1
- package/dist/stdio.js +1 -1
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +193 -119
- package/dist/tools.js.map +1 -1
- package/dist/{version-Cy8UEAT1.js → version-Dm6m3p60.js} +3 -3
- package/dist/{version-Cy8UEAT1.js.map → version-Dm6m3p60.js.map} +1 -1
- package/package.json +3 -3
- package/skills/SKILL.md +113 -1
- package/dist/handlers-vtRpc-Lx.js +0 -4301
- package/dist/handlers-vtRpc-Lx.js.map +0 -1
- package/dist/http-CVE4qtko.js +0 -6541
- package/dist/http-CVE4qtko.js.map +0 -1
package/skills/SKILL.md
CHANGED
|
@@ -11,7 +11,11 @@ MCP (Model Context Protocol) server for Productive.io. Provides a single unified
|
|
|
11
11
|
|
|
12
12
|
Before your first interaction with any resource, call `action=help` with that resource to discover valid filters, required fields, includes, and examples.
|
|
13
13
|
|
|
14
|
-
##
|
|
14
|
+
## MCP Tools
|
|
15
|
+
|
|
16
|
+
This server exposes one high-level tool and two low-level raw API tools.
|
|
17
|
+
|
|
18
|
+
### `productive`
|
|
15
19
|
|
|
16
20
|
Single unified tool with this signature:
|
|
17
21
|
|
|
@@ -878,6 +882,111 @@ Returns: deal details + services + comments + time entries
|
|
|
878
882
|
- 480 = 8 hours (full day)
|
|
879
883
|
- 240 = 4 hours (half day)
|
|
880
884
|
|
|
885
|
+
## Raw API Tools
|
|
886
|
+
|
|
887
|
+
Use raw API tools only as escape hatches when the unified `productive` tool does not support the documented endpoint you need.
|
|
888
|
+
|
|
889
|
+
### `api_read`
|
|
890
|
+
|
|
891
|
+
Read-only access to documented Productive `GET` endpoints.
|
|
892
|
+
|
|
893
|
+
**Use it for:** unsupported read endpoints, inspecting endpoint capabilities, or fetching raw shapes.
|
|
894
|
+
|
|
895
|
+
**Parameters**
|
|
896
|
+
|
|
897
|
+
- `path` — required relative API path starting with `/`
|
|
898
|
+
- `describe` — return endpoint documentation instead of executing
|
|
899
|
+
- `filter` — validated against the endpoint spec
|
|
900
|
+
- `include` — related resources to include
|
|
901
|
+
- `sort` — validated sort values
|
|
902
|
+
- `page`, `per_page` — page number and size (`per_page` max `200`)
|
|
903
|
+
- `paginate`, `max_pages` — safe auto-pagination (`max_pages` default `20`, max `50`)
|
|
904
|
+
|
|
905
|
+
**Safety model**
|
|
906
|
+
|
|
907
|
+
- `GET` only
|
|
908
|
+
- relative paths only; absolute URLs are rejected
|
|
909
|
+
- path traversal is rejected
|
|
910
|
+
- only documented Productive endpoints are allowed
|
|
911
|
+
- filter fields, operators, and sort values are validated
|
|
912
|
+
|
|
913
|
+
**Recommended workflow**
|
|
914
|
+
|
|
915
|
+
1. Call `api_read` with `describe=true`
|
|
916
|
+
2. Review allowed methods, filters, and sort values
|
|
917
|
+
3. Make the real read call with the validated path and params
|
|
918
|
+
|
|
919
|
+
**Examples**
|
|
920
|
+
|
|
921
|
+
```json
|
|
922
|
+
{ "path": "/invoices", "describe": true }
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
```json
|
|
926
|
+
{
|
|
927
|
+
"path": "/projects/123/tasks",
|
|
928
|
+
"filter": { "status": "open" },
|
|
929
|
+
"sort": ["due_date"],
|
|
930
|
+
"per_page": 50
|
|
931
|
+
}
|
|
932
|
+
```
|
|
933
|
+
|
|
934
|
+
### `api_write`
|
|
935
|
+
|
|
936
|
+
Raw write access to documented Productive endpoints.
|
|
937
|
+
|
|
938
|
+
**Use it only when:** the user explicitly wants a mutation and the higher-level `productive` tool cannot perform it.
|
|
939
|
+
|
|
940
|
+
**Parameters**
|
|
941
|
+
|
|
942
|
+
- `method` — required, one of `POST`, `PATCH`, `PUT`, `DELETE`
|
|
943
|
+
- `path` — required relative API path
|
|
944
|
+
- `body` — request payload
|
|
945
|
+
- `confirm` — required, must be `true`
|
|
946
|
+
- `dry_run` — preview the normalized request without executing it
|
|
947
|
+
|
|
948
|
+
**Safety model**
|
|
949
|
+
|
|
950
|
+
- disabled by default
|
|
951
|
+
- requires server env `PRODUCTIVE_MCP_ENABLE_API_WRITE=true`
|
|
952
|
+
- requires `confirm=true` on every call
|
|
953
|
+
- only documented Productive endpoints are allowed
|
|
954
|
+
- relative paths only; absolute URLs and traversal are rejected
|
|
955
|
+
- prefer `dry_run=true` before the real write
|
|
956
|
+
|
|
957
|
+
**Agent rules**
|
|
958
|
+
|
|
959
|
+
1. Do not use `api_write` for routine mutations already covered by `productive`
|
|
960
|
+
2. Always confirm intent with the user before using `api_write`
|
|
961
|
+
3. Prefer `dry_run=true` first, then execute only after approval
|
|
962
|
+
4. Preserve Productive payloads exactly; do not invent fields or IDs
|
|
963
|
+
|
|
964
|
+
**Examples**
|
|
965
|
+
|
|
966
|
+
```json
|
|
967
|
+
{
|
|
968
|
+
"method": "PATCH",
|
|
969
|
+
"path": "/tasks/123",
|
|
970
|
+
"body": {
|
|
971
|
+
"data": {
|
|
972
|
+
"type": "tasks",
|
|
973
|
+
"id": "123",
|
|
974
|
+
"attributes": { "name": "Updated title" }
|
|
975
|
+
}
|
|
976
|
+
},
|
|
977
|
+
"confirm": true,
|
|
978
|
+
"dry_run": true
|
|
979
|
+
}
|
|
980
|
+
```
|
|
981
|
+
|
|
982
|
+
```json
|
|
983
|
+
{
|
|
984
|
+
"method": "DELETE",
|
|
985
|
+
"path": "/attachments/456",
|
|
986
|
+
"confirm": true
|
|
987
|
+
}
|
|
988
|
+
```
|
|
989
|
+
|
|
881
990
|
## Configuration Tools (stdio mode only)
|
|
882
991
|
|
|
883
992
|
In local/stdio mode, additional configuration tools are available:
|
|
@@ -918,6 +1027,9 @@ Key points:
|
|
|
918
1027
|
5. **Check `people.me`** first to get the current user's ID for filters
|
|
919
1028
|
6. **Follow `_hints`** - When getting a resource, check the `_hints` field for suggestions on fetching related context
|
|
920
1029
|
7. **Act on `_suggestions`** - When present, `_suggestions` highlight data issues (overdue tasks, no time logged, etc.) that may need attention or should be surfaced to the user
|
|
1030
|
+
8. **Prefer `api_read` over `api_write`** when a raw endpoint is needed
|
|
1031
|
+
9. **Use `api_read.describe=true` first** before making raw API calls
|
|
1032
|
+
10. **Treat `api_write` as break-glass access** - confirm, dry-run, then execute
|
|
921
1033
|
|
|
922
1034
|
## Prompt Templates
|
|
923
1035
|
|