@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.
Files changed (36) hide show
  1. package/README.md +120 -0
  2. package/dist/api-reference/generated.d.ts +3 -0
  3. package/dist/api-reference/generated.d.ts.map +1 -0
  4. package/dist/api-reference/types.d.ts +31 -0
  5. package/dist/api-reference/types.d.ts.map +1 -0
  6. package/dist/handlers/api-read.d.ts +14 -0
  7. package/dist/handlers/api-read.d.ts.map +1 -0
  8. package/dist/handlers/api-utils.d.ts +27 -0
  9. package/dist/handlers/api-utils.d.ts.map +1 -0
  10. package/dist/handlers/api-write.d.ts +10 -0
  11. package/dist/handlers/api-write.d.ts.map +1 -0
  12. package/dist/handlers/index.d.ts.map +1 -1
  13. package/dist/handlers-B9FASjNJ.js +41290 -0
  14. package/dist/handlers-B9FASjNJ.js.map +1 -0
  15. package/dist/handlers.js +1 -1
  16. package/dist/http-B3J8ZV4I.js +2534 -0
  17. package/dist/http-B3J8ZV4I.js.map +1 -0
  18. package/dist/http.js +1 -1
  19. package/dist/index.js +2 -2
  20. package/dist/schema.d.ts +32 -1
  21. package/dist/schema.d.ts.map +1 -1
  22. package/dist/server.js +2 -2
  23. package/dist/{stdio-BFK9AcdQ.js → stdio-BpKd5pcS.js} +2 -2
  24. package/dist/{stdio-BFK9AcdQ.js.map → stdio-BpKd5pcS.js.map} +1 -1
  25. package/dist/stdio.js +1 -1
  26. package/dist/tools.d.ts.map +1 -1
  27. package/dist/tools.js +193 -119
  28. package/dist/tools.js.map +1 -1
  29. package/dist/{version-Cy8UEAT1.js → version-Dm6m3p60.js} +3 -3
  30. package/dist/{version-Cy8UEAT1.js.map → version-Dm6m3p60.js.map} +1 -1
  31. package/package.json +3 -3
  32. package/skills/SKILL.md +113 -1
  33. package/dist/handlers-vtRpc-Lx.js +0 -4301
  34. package/dist/handlers-vtRpc-Lx.js.map +0 -1
  35. package/dist/http-CVE4qtko.js +0 -6541
  36. 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
- ## The `productive` Tool
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