contextforge-mcp 0.1.76 → 0.1.78

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/dist/index.js CHANGED
@@ -184,7 +184,7 @@ const TOOLS = [
184
184
  {
185
185
  name: "memory_ingest",
186
186
  description: "Add content to the contextual memory. Use this to store code snippets, documentation, decisions, or any knowledge you want to remember.",
187
- annotations: { title: "Save to Memory", destructiveHint: true },
187
+ annotations: { title: "Save to Memory", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
188
188
  inputSchema: {
189
189
  type: "object",
190
190
  properties: {
@@ -225,7 +225,7 @@ const TOOLS = [
225
225
  {
226
226
  name: "memory_query",
227
227
  description: "Search the contextual memory using semantic search. Returns the most relevant stored content based on your query.",
228
- annotations: { title: "Search Memory", readOnlyHint: true },
228
+ annotations: { title: "Search Memory", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
229
229
  inputSchema: {
230
230
  type: "object",
231
231
  properties: {
@@ -280,7 +280,7 @@ const TOOLS = [
280
280
  {
281
281
  name: "memory_get_item",
282
282
  description: "Get the full content of a knowledge item by its ID. Use this when memory_query returns truncated previews and you need the complete content.",
283
- annotations: { title: "Get Memory Item", readOnlyHint: true },
283
+ annotations: { title: "Get Memory Item", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
284
284
  inputSchema: {
285
285
  type: "object",
286
286
  properties: {
@@ -296,7 +296,7 @@ const TOOLS = [
296
296
  {
297
297
  name: "memory_list_projects",
298
298
  description: "List all projects. Projects contain multiple spaces for organizing knowledge by project.",
299
- annotations: { title: "List Projects", readOnlyHint: true },
299
+ annotations: { title: "List Projects", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
300
300
  inputSchema: {
301
301
  type: "object",
302
302
  properties: {},
@@ -306,7 +306,7 @@ const TOOLS = [
306
306
  {
307
307
  name: "memory_create_project",
308
308
  description: "Create a new project to organize related spaces",
309
- annotations: { title: "Create Project", destructiveHint: true },
309
+ annotations: { title: "Create Project", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
310
310
  inputSchema: {
311
311
  type: "object",
312
312
  properties: {
@@ -326,7 +326,7 @@ const TOOLS = [
326
326
  {
327
327
  name: "memory_list_spaces",
328
328
  description: 'List knowledge spaces (workspaces). By default shows only knowledge spaces. Use space_type "git" for GitHub repos, or "all" to see everything.',
329
- annotations: { title: "List Spaces", readOnlyHint: true },
329
+ annotations: { title: "List Spaces", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
330
330
  inputSchema: {
331
331
  type: "object",
332
332
  properties: {
@@ -350,7 +350,7 @@ const TOOLS = [
350
350
  {
351
351
  name: "memory_create_space",
352
352
  description: "Create a new memory space (workspace) for organizing knowledge",
353
- annotations: { title: "Create Space", destructiveHint: true },
353
+ annotations: { title: "Create Space", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
354
354
  inputSchema: {
355
355
  type: "object",
356
356
  properties: {
@@ -377,7 +377,7 @@ const TOOLS = [
377
377
  {
378
378
  name: "memory_move_space",
379
379
  description: "Move a space to a different project",
380
- annotations: { title: "Move Space", destructiveHint: true },
380
+ annotations: { title: "Move Space", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
381
381
  inputSchema: {
382
382
  type: "object",
383
383
  properties: {
@@ -396,7 +396,7 @@ const TOOLS = [
396
396
  {
397
397
  name: "memory_delete_space",
398
398
  description: "Delete a space and all its items permanently. This action cannot be undone.",
399
- annotations: { title: "Delete Space", destructiveHint: true },
399
+ annotations: { title: "Delete Space", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
400
400
  inputSchema: {
401
401
  type: "object",
402
402
  properties: {
@@ -411,7 +411,7 @@ const TOOLS = [
411
411
  {
412
412
  name: "memory_delete_project",
413
413
  description: "Delete a project and all its spaces permanently. This will delete all spaces and their items within the project. This action cannot be undone.",
414
- annotations: { title: "Delete Project", destructiveHint: true },
414
+ annotations: { title: "Delete Project", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
415
415
  inputSchema: {
416
416
  type: "object",
417
417
  properties: {
@@ -426,7 +426,7 @@ const TOOLS = [
426
426
  {
427
427
  name: "memory_relate",
428
428
  description: "Create a relationship between two knowledge items",
429
- annotations: { title: "Relate Memory Items", destructiveHint: true },
429
+ annotations: { title: "Relate Memory Items", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
430
430
  inputSchema: {
431
431
  type: "object",
432
432
  properties: {
@@ -469,7 +469,7 @@ const TOOLS = [
469
469
  {
470
470
  name: "memory_list_relationships",
471
471
  description: "List all relationships for a knowledge item, showing both incoming and outgoing connections with related item details",
472
- annotations: { title: "List Relationships", readOnlyHint: true },
472
+ annotations: { title: "List Relationships", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
473
473
  inputSchema: {
474
474
  type: "object",
475
475
  properties: {
@@ -484,7 +484,7 @@ const TOOLS = [
484
484
  {
485
485
  name: "memory_delete",
486
486
  description: "Delete a knowledge item from memory by ID or title",
487
- annotations: { title: "Delete Memory Item", destructiveHint: true },
487
+ annotations: { title: "Delete Memory Item", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
488
488
  inputSchema: {
489
489
  type: "object",
490
490
  properties: {
@@ -511,7 +511,7 @@ const TOOLS = [
511
511
  {
512
512
  name: "memory_stats",
513
513
  description: "Get statistics about memory usage",
514
- annotations: { title: "Memory Stats", readOnlyHint: true },
514
+ annotations: { title: "Memory Stats", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
515
515
  inputSchema: {
516
516
  type: "object",
517
517
  properties: {
@@ -526,7 +526,7 @@ const TOOLS = [
526
526
  {
527
527
  name: "memory_list_items",
528
528
  description: "List all items stored in memory. Shows titles, previews, tags, and creation dates.",
529
- annotations: { title: "List Memory Items", readOnlyHint: true },
529
+ annotations: { title: "List Memory Items", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
530
530
  inputSchema: {
531
531
  type: "object",
532
532
  properties: {
@@ -549,7 +549,7 @@ const TOOLS = [
549
549
  {
550
550
  name: "memory_help",
551
551
  description: "Show help and usage instructions for ContextForge memory commands",
552
- annotations: { title: "Memory Help", readOnlyHint: true },
552
+ annotations: { title: "Memory Help", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
553
553
  inputSchema: {
554
554
  type: "object",
555
555
  properties: {},
@@ -560,7 +560,7 @@ const TOOLS = [
560
560
  {
561
561
  name: "memory_git_connect",
562
562
  description: "Connect a GitHub repository to automatically sync commits and PRs to memory",
563
- annotations: { title: "Connect GitHub Repo", destructiveHint: true },
563
+ annotations: { title: "Connect GitHub Repo", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
564
564
  inputSchema: {
565
565
  type: "object",
566
566
  properties: {
@@ -579,7 +579,7 @@ const TOOLS = [
579
579
  {
580
580
  name: "memory_git_list",
581
581
  description: "List all connected GitHub repositories",
582
- annotations: { title: "List GitHub Repos", readOnlyHint: true },
582
+ annotations: { title: "List GitHub Repos", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
583
583
  inputSchema: {
584
584
  type: "object",
585
585
  properties: {
@@ -594,7 +594,7 @@ const TOOLS = [
594
594
  {
595
595
  name: "memory_git_activate",
596
596
  description: "Activate or deactivate a connected repository webhook after setup",
597
- annotations: { title: "Activate GitHub Repo", destructiveHint: true },
597
+ annotations: { title: "Activate GitHub Repo", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
598
598
  inputSchema: {
599
599
  type: "object",
600
600
  properties: {
@@ -617,7 +617,7 @@ const TOOLS = [
617
617
  {
618
618
  name: "memory_git_disconnect",
619
619
  description: "Disconnect a GitHub repository and stop syncing",
620
- annotations: { title: "Disconnect GitHub Repo", destructiveHint: true },
620
+ annotations: { title: "Disconnect GitHub Repo", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
621
621
  inputSchema: {
622
622
  type: "object",
623
623
  properties: {
@@ -636,7 +636,7 @@ const TOOLS = [
636
636
  {
637
637
  name: "memory_git_sync",
638
638
  description: "Sync existing commits and PRs from a connected GitHub repository into memory",
639
- annotations: { title: "Sync GitHub Repo", destructiveHint: true },
639
+ annotations: { title: "Sync GitHub Repo", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: true },
640
640
  inputSchema: {
641
641
  type: "object",
642
642
  properties: {
@@ -664,7 +664,7 @@ const TOOLS = [
664
664
  {
665
665
  name: "memory_git_commits",
666
666
  description: "List commits stored in memory from connected repositories",
667
- annotations: { title: "List Git Commits", readOnlyHint: true },
667
+ annotations: { title: "List Git Commits", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
668
668
  inputSchema: {
669
669
  type: "object",
670
670
  properties: {
@@ -695,7 +695,7 @@ const TOOLS = [
695
695
  {
696
696
  name: "memory_git_prs",
697
697
  description: "List pull requests stored in memory from connected repositories",
698
- annotations: { title: "List Pull Requests", readOnlyHint: true },
698
+ annotations: { title: "List Pull Requests", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
699
699
  inputSchema: {
700
700
  type: "object",
701
701
  properties: {
@@ -727,7 +727,7 @@ const TOOLS = [
727
727
  {
728
728
  name: "memory_snapshot_create",
729
729
  description: "Create a snapshot (backup) of the current memory state",
730
- annotations: { title: "Create Snapshot", destructiveHint: true },
730
+ annotations: { title: "Create Snapshot", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
731
731
  inputSchema: {
732
732
  type: "object",
733
733
  properties: {
@@ -750,7 +750,7 @@ const TOOLS = [
750
750
  {
751
751
  name: "memory_snapshot_list",
752
752
  description: "List all available snapshots",
753
- annotations: { title: "List Snapshots", readOnlyHint: true },
753
+ annotations: { title: "List Snapshots", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
754
754
  inputSchema: {
755
755
  type: "object",
756
756
  properties: {
@@ -765,7 +765,7 @@ const TOOLS = [
765
765
  {
766
766
  name: "memory_snapshot_restore",
767
767
  description: "Restore memory to a previous snapshot state",
768
- annotations: { title: "Restore Snapshot", destructiveHint: true },
768
+ annotations: { title: "Restore Snapshot", readOnlyHint: false, destructiveHint: true, idempotentHint: false, openWorldHint: false },
769
769
  inputSchema: {
770
770
  type: "object",
771
771
  properties: {
@@ -785,7 +785,7 @@ const TOOLS = [
785
785
  {
786
786
  name: "memory_snapshot_delete",
787
787
  description: "Delete a snapshot",
788
- annotations: { title: "Delete Snapshot", destructiveHint: true },
788
+ annotations: { title: "Delete Snapshot", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
789
789
  inputSchema: {
790
790
  type: "object",
791
791
  properties: {
@@ -801,7 +801,7 @@ const TOOLS = [
801
801
  {
802
802
  name: "memory_export",
803
803
  description: "Export all items from a space to JSON, Markdown, or CSV format",
804
- annotations: { title: "Export Memory", readOnlyHint: true },
804
+ annotations: { title: "Export Memory", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
805
805
  inputSchema: {
806
806
  type: "object",
807
807
  properties: {
@@ -821,7 +821,7 @@ const TOOLS = [
821
821
  {
822
822
  name: "memory_import",
823
823
  description: "Import items from JSON, Markdown, Notion, or Obsidian format into a space",
824
- annotations: { title: "Import Memory", destructiveHint: true },
824
+ annotations: { title: "Import Memory", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
825
825
  inputSchema: {
826
826
  type: "object",
827
827
  properties: {
@@ -860,7 +860,7 @@ const TOOLS = [
860
860
  {
861
861
  name: "memory_ingest_batch",
862
862
  description: "Add multiple items to memory in a single operation. More efficient than multiple single ingests.",
863
- annotations: { title: "Batch Save to Memory", destructiveHint: true },
863
+ annotations: { title: "Batch Save to Memory", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
864
864
  inputSchema: {
865
865
  type: "object",
866
866
  properties: {
@@ -899,7 +899,7 @@ const TOOLS = [
899
899
  {
900
900
  name: "memory_delete_batch",
901
901
  description: "Delete multiple items from memory based on filters. Use dry_run=true first to preview what will be deleted.",
902
- annotations: { title: "Batch Delete Memory Items", destructiveHint: true },
902
+ annotations: { title: "Batch Delete Memory Items", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
903
903
  inputSchema: {
904
904
  type: "object",
905
905
  properties: {
@@ -955,7 +955,7 @@ const TOOLS = [
955
955
  {
956
956
  name: "memory_link_project",
957
957
  description: "Link the current directory to a ContextForge project. When linked, all queries will be automatically filtered to only search within that project's spaces. This creates a .contextforge file in the current directory.",
958
- annotations: { title: "Link Project", destructiveHint: true },
958
+ annotations: { title: "Link Project", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
959
959
  inputSchema: {
960
960
  type: "object",
961
961
  properties: {
@@ -974,7 +974,7 @@ const TOOLS = [
974
974
  {
975
975
  name: "memory_unlink_project",
976
976
  description: "Remove the project link from the current directory. This deletes the .contextforge file and queries will no longer be filtered by project.",
977
- annotations: { title: "Unlink Project", destructiveHint: true },
977
+ annotations: { title: "Unlink Project", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
978
978
  inputSchema: {
979
979
  type: "object",
980
980
  properties: {},
@@ -984,7 +984,7 @@ const TOOLS = [
984
984
  {
985
985
  name: "memory_current_project",
986
986
  description: "Show the currently linked project for this directory, including its spaces. Use this to see which project is linked and what spaces are available.",
987
- annotations: { title: "Current Linked Project", readOnlyHint: true },
987
+ annotations: { title: "Current Linked Project", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
988
988
  inputSchema: {
989
989
  type: "object",
990
990
  properties: {},
@@ -995,7 +995,7 @@ const TOOLS = [
995
995
  {
996
996
  name: "tasks_list",
997
997
  description: 'List tasks assigned to you. Shows pending tasks by default. Use status "all" to see everything, or "resolved" for completed tasks. IMPORTANT: Each task includes a dashboard URL (🔗). You MUST include these clickable links when presenting tasks to the user.',
998
- annotations: { title: "List Tasks", readOnlyHint: true },
998
+ annotations: { title: "List Tasks", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
999
999
  inputSchema: {
1000
1000
  type: "object",
1001
1001
  properties: {
@@ -1024,7 +1024,7 @@ const TOOLS = [
1024
1024
  {
1025
1025
  name: "tasks_start",
1026
1026
  description: 'Mark a task as "in_progress". Use this when you start working on a task. Accepts any identifier: UUID, short_id, or task title. The response includes a dashboard URL — always show it to the user.',
1027
- annotations: { title: "Start Task", destructiveHint: true },
1027
+ annotations: { title: "Start Task", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1028
1028
  inputSchema: {
1029
1029
  type: "object",
1030
1030
  properties: {
@@ -1039,7 +1039,7 @@ const TOOLS = [
1039
1039
  {
1040
1040
  name: "tasks_resolve",
1041
1041
  description: 'Mark a task as "resolved". Use this when you finish working on a task. Accepts any identifier: UUID, short_id, or task title. The response includes a dashboard URL — always show it to the user.',
1042
- annotations: { title: "Resolve Task", destructiveHint: true },
1042
+ annotations: { title: "Resolve Task", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1043
1043
  inputSchema: {
1044
1044
  type: "object",
1045
1045
  properties: {
@@ -1054,7 +1054,7 @@ const TOOLS = [
1054
1054
  {
1055
1055
  name: "tasks_what_next",
1056
1056
  description: "Get a recommendation of what task to work on next, based on priority and due dates. Use this when you want to know what task to focus on. The response includes a dashboard URL — always show it to the user.",
1057
- annotations: { title: "What Task is Next?", readOnlyHint: true },
1057
+ annotations: { title: "What Task is Next?", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1058
1058
  inputSchema: {
1059
1059
  type: "object",
1060
1060
  properties: {},
@@ -1065,7 +1065,7 @@ const TOOLS = [
1065
1065
  {
1066
1066
  name: "tasks_create",
1067
1067
  description: "Create a new task in a project. Optionally assign it to a collaborator by their email. The response includes a dashboard URL — always show it to the user.",
1068
- annotations: { title: "Create Task", destructiveHint: true },
1068
+ annotations: { title: "Create Task", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
1069
1069
  inputSchema: {
1070
1070
  type: "object",
1071
1071
  properties: {
@@ -1114,7 +1114,7 @@ const TOOLS = [
1114
1114
  {
1115
1115
  name: "tasks_update",
1116
1116
  description: "Update a task's title, description, status, priority, tags, due date, or assignee. Accepts any identifier: UUID, short_id, or task title. The response includes a dashboard URL — always show it to the user.",
1117
- annotations: { title: "Update Task", destructiveHint: true },
1117
+ annotations: { title: "Update Task", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1118
1118
  inputSchema: {
1119
1119
  type: "object",
1120
1120
  properties: {
@@ -1160,7 +1160,7 @@ const TOOLS = [
1160
1160
  {
1161
1161
  name: "tasks_assign",
1162
1162
  description: "Assign a task to a collaborator by their email address. Accepts any task identifier: UUID, short_id, or task title. The response includes a dashboard URL — always show it to the user.",
1163
- annotations: { title: "Assign Task", destructiveHint: true },
1163
+ annotations: { title: "Assign Task", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1164
1164
  inputSchema: {
1165
1165
  type: "object",
1166
1166
  properties: {
@@ -1179,7 +1179,7 @@ const TOOLS = [
1179
1179
  {
1180
1180
  name: "tasks_resolve_by_name",
1181
1181
  description: "Resolve a task by searching for it by title, short_id, or UUID. Use this when you have any identifier for the task. The response includes a dashboard URL — always show it to the user.",
1182
- annotations: { title: "Resolve Task by Name", destructiveHint: true },
1182
+ annotations: { title: "Resolve Task by Name", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1183
1183
  inputSchema: {
1184
1184
  type: "object",
1185
1185
  properties: {
@@ -1194,7 +1194,7 @@ const TOOLS = [
1194
1194
  {
1195
1195
  name: "tasks_delete",
1196
1196
  description: "Permanently delete a task. Accepts any identifier: UUID, short_id, or task title. Also deletes related comments, activity, and notifications.",
1197
- annotations: { title: "Delete Task", destructiveHint: true },
1197
+ annotations: { title: "Delete Task", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
1198
1198
  inputSchema: {
1199
1199
  type: "object",
1200
1200
  properties: {
@@ -1210,7 +1210,7 @@ const TOOLS = [
1210
1210
  {
1211
1211
  name: "tasks_list_comments",
1212
1212
  description: "List comments on a task. Accepts any identifier: UUID, short_id, or task title.",
1213
- annotations: { title: "List Task Comments", readOnlyHint: true },
1213
+ annotations: { title: "List Task Comments", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1214
1214
  inputSchema: {
1215
1215
  type: "object",
1216
1216
  properties: {
@@ -1225,7 +1225,7 @@ const TOOLS = [
1225
1225
  {
1226
1226
  name: "tasks_add_comment",
1227
1227
  description: "Add a comment to a task. Accepts any task identifier: UUID, short_id, or task title. The response includes the task dashboard URL — always show it to the user.",
1228
- annotations: { title: "Add Task Comment", destructiveHint: true },
1228
+ annotations: { title: "Add Task Comment", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
1229
1229
  inputSchema: {
1230
1230
  type: "object",
1231
1231
  properties: {
@@ -1245,7 +1245,7 @@ const TOOLS = [
1245
1245
  {
1246
1246
  name: "collaborators_list",
1247
1247
  description: "List collaborators on a shared project. Shows who has access and what tasks are assigned to them.",
1248
- annotations: { title: "List Collaborators", readOnlyHint: true },
1248
+ annotations: { title: "List Collaborators", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1249
1249
  inputSchema: {
1250
1250
  type: "object",
1251
1251
  properties: {
@@ -1265,7 +1265,7 @@ const TOOLS = [
1265
1265
  {
1266
1266
  name: "project_share",
1267
1267
  description: "Share a project with a collaborator by email. Creates an invitation and returns the invite URL. An email notification may also be sent.",
1268
- annotations: { title: "Share Project", destructiveHint: true },
1268
+ annotations: { title: "Share Project", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1269
1269
  inputSchema: {
1270
1270
  type: "object",
1271
1271
  properties: {
@@ -1292,7 +1292,7 @@ const TOOLS = [
1292
1292
  {
1293
1293
  name: "skills_list",
1294
1294
  description: "List all Skills in a project. Returns skills with their name, description, model, and prompt body.",
1295
- annotations: { title: "List Skills", readOnlyHint: true },
1295
+ annotations: { title: "List Skills", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1296
1296
  inputSchema: {
1297
1297
  type: "object",
1298
1298
  properties: {
@@ -1304,7 +1304,7 @@ const TOOLS = [
1304
1304
  {
1305
1305
  name: "skills_get",
1306
1306
  description: "Get a single Skill by ID with full body.",
1307
- annotations: { title: "Get Skill", readOnlyHint: true },
1307
+ annotations: { title: "Get Skill", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1308
1308
  inputSchema: {
1309
1309
  type: "object",
1310
1310
  properties: {
@@ -1316,7 +1316,7 @@ const TOOLS = [
1316
1316
  {
1317
1317
  name: "skills_create",
1318
1318
  description: "Create a new Skill in a project. The 'body' is a markdown prompt template that may use {{variable}} placeholders for input_params at run time.",
1319
- annotations: { title: "Create Skill", destructiveHint: false },
1319
+ annotations: { title: "Create Skill", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
1320
1320
  inputSchema: {
1321
1321
  type: "object",
1322
1322
  properties: {
@@ -1348,7 +1348,7 @@ const TOOLS = [
1348
1348
  {
1349
1349
  name: "skills_update",
1350
1350
  description: "Update an existing Skill.",
1351
- annotations: { title: "Update Skill", destructiveHint: true },
1351
+ annotations: { title: "Update Skill", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1352
1352
  inputSchema: {
1353
1353
  type: "object",
1354
1354
  properties: {
@@ -1367,7 +1367,7 @@ const TOOLS = [
1367
1367
  {
1368
1368
  name: "skills_delete",
1369
1369
  description: "Delete a Skill.",
1370
- annotations: { title: "Delete Skill", destructiveHint: true },
1370
+ annotations: { title: "Delete Skill", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
1371
1371
  inputSchema: {
1372
1372
  type: "object",
1373
1373
  properties: {
@@ -1379,7 +1379,7 @@ const TOOLS = [
1379
1379
  {
1380
1380
  name: "skills_run",
1381
1381
  description: "Execute a Skill on the configured LLM, optionally storing the output as a knowledge_item, and returns the result. Available to all project members.",
1382
- annotations: { title: "Run Skill", destructiveHint: false },
1382
+ annotations: { title: "Run Skill", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: true },
1383
1383
  inputSchema: {
1384
1384
  type: "object",
1385
1385
  properties: {
@@ -1395,7 +1395,7 @@ const TOOLS = [
1395
1395
  {
1396
1396
  name: "routines_list",
1397
1397
  description: "List all Routines in a project. Returns routines with their schedule, last/next run, and enabled flag.",
1398
- annotations: { title: "List Routines", readOnlyHint: true },
1398
+ annotations: { title: "List Routines", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1399
1399
  inputSchema: {
1400
1400
  type: "object",
1401
1401
  properties: {
@@ -1407,7 +1407,7 @@ const TOOLS = [
1407
1407
  {
1408
1408
  name: "routines_get",
1409
1409
  description: "Get a single Routine by ID, including its cron expression, input_params, and last/next run.",
1410
- annotations: { title: "Get Routine", readOnlyHint: true },
1410
+ annotations: { title: "Get Routine", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1411
1411
  inputSchema: {
1412
1412
  type: "object",
1413
1413
  properties: { id: { type: "string", description: "Routine UUID" } },
@@ -1417,7 +1417,7 @@ const TOOLS = [
1417
1417
  {
1418
1418
  name: "routines_create",
1419
1419
  description: "Create a new Routine. Schedules a Skill to run on a cron expression. Pass either schedule_preset (hourly/daily/weekly/monthly) OR a custom cron_expression. timezone defaults to UTC.",
1420
- annotations: { title: "Create Routine", destructiveHint: false },
1420
+ annotations: { title: "Create Routine", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
1421
1421
  inputSchema: {
1422
1422
  type: "object",
1423
1423
  properties: {
@@ -1447,7 +1447,7 @@ const TOOLS = [
1447
1447
  {
1448
1448
  name: "routines_update",
1449
1449
  description: "Update an existing Routine (name, schedule, timezone, input_params).",
1450
- annotations: { title: "Update Routine", destructiveHint: false },
1450
+ annotations: { title: "Update Routine", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1451
1451
  inputSchema: {
1452
1452
  type: "object",
1453
1453
  properties: {
@@ -1467,7 +1467,7 @@ const TOOLS = [
1467
1467
  {
1468
1468
  name: "routines_toggle",
1469
1469
  description: "Enable or disable a Routine without deleting it. Pass enabled=false to pause.",
1470
- annotations: { title: "Toggle Routine", destructiveHint: false },
1470
+ annotations: { title: "Toggle Routine", readOnlyHint: false, destructiveHint: false, idempotentHint: true, openWorldHint: false },
1471
1471
  inputSchema: {
1472
1472
  type: "object",
1473
1473
  properties: {
@@ -1480,7 +1480,7 @@ const TOOLS = [
1480
1480
  {
1481
1481
  name: "routines_run_now",
1482
1482
  description: "Fire a Routine immediately, ahead of its schedule. Creates a skill_executions row with trigger_type=scheduled and routine_id set, just like the cron tick would.",
1483
- annotations: { title: "Run Routine Now", destructiveHint: false },
1483
+ annotations: { title: "Run Routine Now", readOnlyHint: false, destructiveHint: false, idempotentHint: false, openWorldHint: false },
1484
1484
  inputSchema: {
1485
1485
  type: "object",
1486
1486
  properties: { id: { type: "string" } },
@@ -1490,7 +1490,7 @@ const TOOLS = [
1490
1490
  {
1491
1491
  name: "routines_delete",
1492
1492
  description: "Permanently delete a Routine. Execution history rows are retained.",
1493
- annotations: { title: "Delete Routine", destructiveHint: true },
1493
+ annotations: { title: "Delete Routine", readOnlyHint: false, destructiveHint: true, idempotentHint: true, openWorldHint: false },
1494
1494
  inputSchema: {
1495
1495
  type: "object",
1496
1496
  properties: { id: { type: "string" } },
@@ -3223,7 +3223,7 @@ Remove the project link from this directory.
3223
3223
  - **Link projects** to keep context separate between codebases
3224
3224
 
3225
3225
  ## More Info
3226
- https://github.com/contextforge/contextforge-mcp
3226
+ https://github.com/alfredoizdev/contextforge-mcp
3227
3227
  `;
3228
3228
  return {
3229
3229
  content: [