@pulsarinteractive/geniusfitness 0.1.0-beta.3 → 0.1.0-beta.5
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/CHANGELOG.md +14 -0
- package/docs/CHATGPT.md +38 -0
- package/docs/OPENAI.md +14 -0
- package/docs/PROGRESS.md +46 -0
- package/docs/WORKFLOWS.md +36 -0
- package/examples/codex.toml +1 -1
- package/examples/mcp.json +1 -1
- package/mcp.json +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/remote/tool-catalog.json +893 -3
- package/remote/workflows.json +70 -0
- package/skills/geniusfitness/SKILL.md +22 -3
- package/skills/geniusfitness/references/training.md +6 -3
- package/skills/geniusfitness-catalogue/SKILL.md +25 -0
- package/skills/geniusfitness-catalogue/agents/openai.yaml +4 -0
- package/skills/geniusfitness-planning/SKILL.md +24 -0
- package/skills/geniusfitness-planning/agents/openai.yaml +4 -0
- package/skills/geniusfitness-progress/SKILL.md +31 -21
- package/src/cli.mjs +16 -1
- package/src/client.mjs +1 -0
- package/src/fitness.mjs +12 -0
- package/src/mcp.mjs +20 -4
- package/src/presentation.d.mts +1 -0
- package/src/presentation.mjs +12 -0
- package/src/session-analysis.d.mts +24 -0
- package/src/session-analysis.mjs +152 -0
- package/src/workflows.mjs +9 -0
package/remote/tool-catalog.json
CHANGED
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
{
|
|
48
48
|
"name": "fitness_resources",
|
|
49
49
|
"title": "Read records",
|
|
50
|
-
"description": "Read a bounded page or exact record before modifying it. Preserve epoch/revision. Never crawl all collections. Use personal scope only for the connected owner; revoked access is unavailable.",
|
|
50
|
+
"description": "Read a bounded page or exact record before modifying it. Preserve epoch/revision. Never crawl all collections. Use personal scope only for the connected owner; revoked access is unavailable. Prefer the permission-specific read tools for new calls.",
|
|
51
51
|
"inputSchema": {
|
|
52
52
|
"type": "object",
|
|
53
53
|
"properties": {
|
|
@@ -95,7 +95,7 @@
|
|
|
95
95
|
},
|
|
96
96
|
"archive": {
|
|
97
97
|
"type": "string",
|
|
98
|
-
"enum": ["
|
|
98
|
+
"enum": ["active", "archived", "all"]
|
|
99
99
|
}
|
|
100
100
|
},
|
|
101
101
|
"required": ["scope", "collection"],
|
|
@@ -148,6 +148,40 @@
|
|
|
148
148
|
"scopes": ["exercises:read"],
|
|
149
149
|
"route": "catalog"
|
|
150
150
|
},
|
|
151
|
+
{
|
|
152
|
+
"name": "fitness_session_analysis",
|
|
153
|
+
"title": "Analyze a training session",
|
|
154
|
+
"description": "Read recorded time per set and exercise, actual rest and measurement coverage for one session. Long timers may include interruptions; do not assume continuous effort or invent wearable measurements. Sets page at 50; continue with nextSetOffset as offset and the same revision.",
|
|
155
|
+
"inputSchema": {
|
|
156
|
+
"type": "object",
|
|
157
|
+
"properties": {
|
|
158
|
+
"scope": {
|
|
159
|
+
"type": "string",
|
|
160
|
+
"pattern": "^project:[A-Za-z0-9_-]{1,128}$",
|
|
161
|
+
"maxLength": 160
|
|
162
|
+
},
|
|
163
|
+
"id": {
|
|
164
|
+
"type": "string",
|
|
165
|
+
"pattern": "^[A-Za-z0-9_-]{1,128}$",
|
|
166
|
+
"maxLength": 128
|
|
167
|
+
},
|
|
168
|
+
"offset": {
|
|
169
|
+
"type": "integer",
|
|
170
|
+
"minimum": 0,
|
|
171
|
+
"maximum": 1000
|
|
172
|
+
},
|
|
173
|
+
"revision": {
|
|
174
|
+
"type": "string",
|
|
175
|
+
"pattern": "^(0|[1-9][0-9]{0,15})$",
|
|
176
|
+
"maxLength": 16
|
|
177
|
+
}
|
|
178
|
+
},
|
|
179
|
+
"required": ["scope", "id"],
|
|
180
|
+
"additionalProperties": false
|
|
181
|
+
},
|
|
182
|
+
"scopes": ["metrics:read"],
|
|
183
|
+
"route": "session-analysis"
|
|
184
|
+
},
|
|
151
185
|
{
|
|
152
186
|
"name": "fitness_metrics",
|
|
153
187
|
"title": "Training progress",
|
|
@@ -316,7 +350,7 @@
|
|
|
316
350
|
{
|
|
317
351
|
"name": "fitness_execute_command",
|
|
318
352
|
"title": "Apply the approved edit",
|
|
319
|
-
"description": "Execute the exact command returned by prepare_command after user approval. This changes account data and may delete records. After timeout retry the SAME command; after conflict read the current record and ask before preparing a replacement. Permissions, subscription and quotas are checked on the server.",
|
|
353
|
+
"description": "Execute the exact command returned by prepare_command after user approval. This changes account data and may delete records. After timeout retry the SAME command; after conflict read the current record and ask before preparing a replacement. Permissions, subscription and quotas are checked on the server. Prefer the permission-specific edit tools for new calls; this generic entry point remains for existing clients.",
|
|
320
354
|
"inputSchema": {
|
|
321
355
|
"type": "object",
|
|
322
356
|
"properties": {
|
|
@@ -415,5 +449,861 @@
|
|
|
415
449
|
"route": "commands",
|
|
416
450
|
"write": true,
|
|
417
451
|
"destructive": true
|
|
452
|
+
},
|
|
453
|
+
{
|
|
454
|
+
"name": "fitness_edit_exercises",
|
|
455
|
+
"title": "Apply approved exercises changes",
|
|
456
|
+
"description": "Apply an exact immutable command returned by prepare_command for exercises, after user approval. Only the listed command kinds are accepted. Preserve operationId and all fields for retries. Existing account, resource, subscription and quota checks apply.",
|
|
457
|
+
"inputSchema": {
|
|
458
|
+
"type": "object",
|
|
459
|
+
"properties": {
|
|
460
|
+
"operationId": {
|
|
461
|
+
"type": "string",
|
|
462
|
+
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
|
|
463
|
+
},
|
|
464
|
+
"issuedAt": {
|
|
465
|
+
"type": "integer",
|
|
466
|
+
"minimum": 0
|
|
467
|
+
},
|
|
468
|
+
"kind": {
|
|
469
|
+
"type": "string",
|
|
470
|
+
"enum": ["exercise.create", "exercise.delete", "exercise.import", "exercise.update"]
|
|
471
|
+
},
|
|
472
|
+
"scope": {
|
|
473
|
+
"type": "string",
|
|
474
|
+
"minLength": 1,
|
|
475
|
+
"maxLength": 256
|
|
476
|
+
},
|
|
477
|
+
"id": {
|
|
478
|
+
"type": "string",
|
|
479
|
+
"minLength": 1,
|
|
480
|
+
"maxLength": 128
|
|
481
|
+
},
|
|
482
|
+
"epoch": {
|
|
483
|
+
"type": "string",
|
|
484
|
+
"minLength": 1,
|
|
485
|
+
"maxLength": 128
|
|
486
|
+
},
|
|
487
|
+
"expectedRevision": {
|
|
488
|
+
"anyOf": [
|
|
489
|
+
{
|
|
490
|
+
"type": "string",
|
|
491
|
+
"minLength": 1,
|
|
492
|
+
"maxLength": 32
|
|
493
|
+
},
|
|
494
|
+
{
|
|
495
|
+
"type": "null"
|
|
496
|
+
}
|
|
497
|
+
]
|
|
498
|
+
},
|
|
499
|
+
"data": {
|
|
500
|
+
"type": "object",
|
|
501
|
+
"maxProperties": 40
|
|
502
|
+
}
|
|
503
|
+
},
|
|
504
|
+
"required": [
|
|
505
|
+
"operationId",
|
|
506
|
+
"issuedAt",
|
|
507
|
+
"kind",
|
|
508
|
+
"scope",
|
|
509
|
+
"id",
|
|
510
|
+
"epoch",
|
|
511
|
+
"expectedRevision",
|
|
512
|
+
"data"
|
|
513
|
+
],
|
|
514
|
+
"additionalProperties": false
|
|
515
|
+
},
|
|
516
|
+
"scopes": ["exercises:write"],
|
|
517
|
+
"route": "commands",
|
|
518
|
+
"write": true,
|
|
519
|
+
"destructive": true
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"name": "fitness_edit_health",
|
|
523
|
+
"title": "Apply approved health changes",
|
|
524
|
+
"description": "Apply an exact immutable command returned by prepare_command for health, after user approval. Only the listed command kinds are accepted. Preserve operationId and all fields for retries. Existing account, resource, subscription and quota checks apply.",
|
|
525
|
+
"inputSchema": {
|
|
526
|
+
"type": "object",
|
|
527
|
+
"properties": {
|
|
528
|
+
"operationId": {
|
|
529
|
+
"type": "string",
|
|
530
|
+
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
|
|
531
|
+
},
|
|
532
|
+
"issuedAt": {
|
|
533
|
+
"type": "integer",
|
|
534
|
+
"minimum": 0
|
|
535
|
+
},
|
|
536
|
+
"kind": {
|
|
537
|
+
"type": "string",
|
|
538
|
+
"enum": ["health.create", "health.delete", "health.update"]
|
|
539
|
+
},
|
|
540
|
+
"scope": {
|
|
541
|
+
"type": "string",
|
|
542
|
+
"minLength": 1,
|
|
543
|
+
"maxLength": 256
|
|
544
|
+
},
|
|
545
|
+
"id": {
|
|
546
|
+
"type": "string",
|
|
547
|
+
"minLength": 1,
|
|
548
|
+
"maxLength": 128
|
|
549
|
+
},
|
|
550
|
+
"epoch": {
|
|
551
|
+
"type": "string",
|
|
552
|
+
"minLength": 1,
|
|
553
|
+
"maxLength": 128
|
|
554
|
+
},
|
|
555
|
+
"expectedRevision": {
|
|
556
|
+
"anyOf": [
|
|
557
|
+
{
|
|
558
|
+
"type": "string",
|
|
559
|
+
"minLength": 1,
|
|
560
|
+
"maxLength": 32
|
|
561
|
+
},
|
|
562
|
+
{
|
|
563
|
+
"type": "null"
|
|
564
|
+
}
|
|
565
|
+
]
|
|
566
|
+
},
|
|
567
|
+
"data": {
|
|
568
|
+
"type": "object",
|
|
569
|
+
"maxProperties": 40
|
|
570
|
+
}
|
|
571
|
+
},
|
|
572
|
+
"required": [
|
|
573
|
+
"operationId",
|
|
574
|
+
"issuedAt",
|
|
575
|
+
"kind",
|
|
576
|
+
"scope",
|
|
577
|
+
"id",
|
|
578
|
+
"epoch",
|
|
579
|
+
"expectedRevision",
|
|
580
|
+
"data"
|
|
581
|
+
],
|
|
582
|
+
"additionalProperties": false
|
|
583
|
+
},
|
|
584
|
+
"scopes": ["health:write"],
|
|
585
|
+
"route": "commands",
|
|
586
|
+
"write": true,
|
|
587
|
+
"destructive": true
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
"name": "fitness_edit_metrics",
|
|
591
|
+
"title": "Apply approved metrics changes",
|
|
592
|
+
"description": "Apply an exact immutable command returned by prepare_command for metrics, after user approval. Only the listed command kinds are accepted. Preserve operationId and all fields for retries. Existing account, resource, subscription and quota checks apply.",
|
|
593
|
+
"inputSchema": {
|
|
594
|
+
"type": "object",
|
|
595
|
+
"properties": {
|
|
596
|
+
"operationId": {
|
|
597
|
+
"type": "string",
|
|
598
|
+
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
|
|
599
|
+
},
|
|
600
|
+
"issuedAt": {
|
|
601
|
+
"type": "integer",
|
|
602
|
+
"minimum": 0
|
|
603
|
+
},
|
|
604
|
+
"kind": {
|
|
605
|
+
"type": "string",
|
|
606
|
+
"enum": [
|
|
607
|
+
"run.create",
|
|
608
|
+
"run.delete",
|
|
609
|
+
"run.update",
|
|
610
|
+
"session.create",
|
|
611
|
+
"session.delete",
|
|
612
|
+
"session.update"
|
|
613
|
+
]
|
|
614
|
+
},
|
|
615
|
+
"scope": {
|
|
616
|
+
"type": "string",
|
|
617
|
+
"minLength": 1,
|
|
618
|
+
"maxLength": 256
|
|
619
|
+
},
|
|
620
|
+
"id": {
|
|
621
|
+
"type": "string",
|
|
622
|
+
"minLength": 1,
|
|
623
|
+
"maxLength": 128
|
|
624
|
+
},
|
|
625
|
+
"epoch": {
|
|
626
|
+
"type": "string",
|
|
627
|
+
"minLength": 1,
|
|
628
|
+
"maxLength": 128
|
|
629
|
+
},
|
|
630
|
+
"expectedRevision": {
|
|
631
|
+
"anyOf": [
|
|
632
|
+
{
|
|
633
|
+
"type": "string",
|
|
634
|
+
"minLength": 1,
|
|
635
|
+
"maxLength": 32
|
|
636
|
+
},
|
|
637
|
+
{
|
|
638
|
+
"type": "null"
|
|
639
|
+
}
|
|
640
|
+
]
|
|
641
|
+
},
|
|
642
|
+
"data": {
|
|
643
|
+
"type": "object",
|
|
644
|
+
"maxProperties": 40
|
|
645
|
+
}
|
|
646
|
+
},
|
|
647
|
+
"required": [
|
|
648
|
+
"operationId",
|
|
649
|
+
"issuedAt",
|
|
650
|
+
"kind",
|
|
651
|
+
"scope",
|
|
652
|
+
"id",
|
|
653
|
+
"epoch",
|
|
654
|
+
"expectedRevision",
|
|
655
|
+
"data"
|
|
656
|
+
],
|
|
657
|
+
"additionalProperties": false
|
|
658
|
+
},
|
|
659
|
+
"scopes": ["metrics:write"],
|
|
660
|
+
"route": "commands",
|
|
661
|
+
"write": true,
|
|
662
|
+
"destructive": true
|
|
663
|
+
},
|
|
664
|
+
{
|
|
665
|
+
"name": "fitness_coach_metrics",
|
|
666
|
+
"title": "Coach: apply approved metrics changes",
|
|
667
|
+
"description": "Apply an approved metrics command to another athlete's authorized program. Requires an active Coach subscription, explicit coaching permission and current program membership. Prepare the exact command first; preserve it for retries. Never use this to widen access.",
|
|
668
|
+
"inputSchema": {
|
|
669
|
+
"type": "object",
|
|
670
|
+
"properties": {
|
|
671
|
+
"operationId": {
|
|
672
|
+
"type": "string",
|
|
673
|
+
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
|
|
674
|
+
},
|
|
675
|
+
"issuedAt": {
|
|
676
|
+
"type": "integer",
|
|
677
|
+
"minimum": 0
|
|
678
|
+
},
|
|
679
|
+
"kind": {
|
|
680
|
+
"type": "string",
|
|
681
|
+
"enum": [
|
|
682
|
+
"run.create",
|
|
683
|
+
"run.delete",
|
|
684
|
+
"run.update",
|
|
685
|
+
"session.create",
|
|
686
|
+
"session.delete",
|
|
687
|
+
"session.update"
|
|
688
|
+
]
|
|
689
|
+
},
|
|
690
|
+
"scope": {
|
|
691
|
+
"type": "string",
|
|
692
|
+
"minLength": 1,
|
|
693
|
+
"maxLength": 256
|
|
694
|
+
},
|
|
695
|
+
"id": {
|
|
696
|
+
"type": "string",
|
|
697
|
+
"minLength": 1,
|
|
698
|
+
"maxLength": 128
|
|
699
|
+
},
|
|
700
|
+
"epoch": {
|
|
701
|
+
"type": "string",
|
|
702
|
+
"minLength": 1,
|
|
703
|
+
"maxLength": 128
|
|
704
|
+
},
|
|
705
|
+
"expectedRevision": {
|
|
706
|
+
"anyOf": [
|
|
707
|
+
{
|
|
708
|
+
"type": "string",
|
|
709
|
+
"minLength": 1,
|
|
710
|
+
"maxLength": 32
|
|
711
|
+
},
|
|
712
|
+
{
|
|
713
|
+
"type": "null"
|
|
714
|
+
}
|
|
715
|
+
]
|
|
716
|
+
},
|
|
717
|
+
"data": {
|
|
718
|
+
"type": "object",
|
|
719
|
+
"maxProperties": 40
|
|
720
|
+
}
|
|
721
|
+
},
|
|
722
|
+
"required": [
|
|
723
|
+
"operationId",
|
|
724
|
+
"issuedAt",
|
|
725
|
+
"kind",
|
|
726
|
+
"scope",
|
|
727
|
+
"id",
|
|
728
|
+
"epoch",
|
|
729
|
+
"expectedRevision",
|
|
730
|
+
"data"
|
|
731
|
+
],
|
|
732
|
+
"additionalProperties": false
|
|
733
|
+
},
|
|
734
|
+
"scopes": ["metrics:write", "coaching:write"],
|
|
735
|
+
"route": "commands",
|
|
736
|
+
"write": true,
|
|
737
|
+
"destructive": true
|
|
738
|
+
},
|
|
739
|
+
{
|
|
740
|
+
"name": "fitness_edit_planning",
|
|
741
|
+
"title": "Apply approved planning changes",
|
|
742
|
+
"description": "Apply an exact immutable command returned by prepare_command for planning, after user approval. Only the listed command kinds are accepted. Preserve operationId and all fields for retries. Existing account, resource, subscription and quota checks apply.",
|
|
743
|
+
"inputSchema": {
|
|
744
|
+
"type": "object",
|
|
745
|
+
"properties": {
|
|
746
|
+
"operationId": {
|
|
747
|
+
"type": "string",
|
|
748
|
+
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
|
|
749
|
+
},
|
|
750
|
+
"issuedAt": {
|
|
751
|
+
"type": "integer",
|
|
752
|
+
"minimum": 0
|
|
753
|
+
},
|
|
754
|
+
"kind": {
|
|
755
|
+
"type": "string",
|
|
756
|
+
"enum": [
|
|
757
|
+
"goal.create",
|
|
758
|
+
"goal.delete",
|
|
759
|
+
"goal.update",
|
|
760
|
+
"planning.create",
|
|
761
|
+
"planning.delete",
|
|
762
|
+
"planning.update",
|
|
763
|
+
"schedule.create",
|
|
764
|
+
"schedule.delete",
|
|
765
|
+
"schedule.update"
|
|
766
|
+
]
|
|
767
|
+
},
|
|
768
|
+
"scope": {
|
|
769
|
+
"type": "string",
|
|
770
|
+
"minLength": 1,
|
|
771
|
+
"maxLength": 256
|
|
772
|
+
},
|
|
773
|
+
"id": {
|
|
774
|
+
"type": "string",
|
|
775
|
+
"minLength": 1,
|
|
776
|
+
"maxLength": 128
|
|
777
|
+
},
|
|
778
|
+
"epoch": {
|
|
779
|
+
"type": "string",
|
|
780
|
+
"minLength": 1,
|
|
781
|
+
"maxLength": 128
|
|
782
|
+
},
|
|
783
|
+
"expectedRevision": {
|
|
784
|
+
"anyOf": [
|
|
785
|
+
{
|
|
786
|
+
"type": "string",
|
|
787
|
+
"minLength": 1,
|
|
788
|
+
"maxLength": 32
|
|
789
|
+
},
|
|
790
|
+
{
|
|
791
|
+
"type": "null"
|
|
792
|
+
}
|
|
793
|
+
]
|
|
794
|
+
},
|
|
795
|
+
"data": {
|
|
796
|
+
"type": "object",
|
|
797
|
+
"maxProperties": 40
|
|
798
|
+
}
|
|
799
|
+
},
|
|
800
|
+
"required": [
|
|
801
|
+
"operationId",
|
|
802
|
+
"issuedAt",
|
|
803
|
+
"kind",
|
|
804
|
+
"scope",
|
|
805
|
+
"id",
|
|
806
|
+
"epoch",
|
|
807
|
+
"expectedRevision",
|
|
808
|
+
"data"
|
|
809
|
+
],
|
|
810
|
+
"additionalProperties": false
|
|
811
|
+
},
|
|
812
|
+
"scopes": ["planning:write"],
|
|
813
|
+
"route": "commands",
|
|
814
|
+
"write": true,
|
|
815
|
+
"destructive": true
|
|
816
|
+
},
|
|
817
|
+
{
|
|
818
|
+
"name": "fitness_coach_planning",
|
|
819
|
+
"title": "Coach: apply approved planning changes",
|
|
820
|
+
"description": "Apply an approved planning command to another athlete's authorized program. Requires an active Coach subscription, explicit coaching permission and current program membership. Prepare the exact command first; preserve it for retries. Never use this to widen access.",
|
|
821
|
+
"inputSchema": {
|
|
822
|
+
"type": "object",
|
|
823
|
+
"properties": {
|
|
824
|
+
"operationId": {
|
|
825
|
+
"type": "string",
|
|
826
|
+
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
|
|
827
|
+
},
|
|
828
|
+
"issuedAt": {
|
|
829
|
+
"type": "integer",
|
|
830
|
+
"minimum": 0
|
|
831
|
+
},
|
|
832
|
+
"kind": {
|
|
833
|
+
"type": "string",
|
|
834
|
+
"enum": [
|
|
835
|
+
"goal.create",
|
|
836
|
+
"goal.delete",
|
|
837
|
+
"goal.update",
|
|
838
|
+
"planning.create",
|
|
839
|
+
"planning.delete",
|
|
840
|
+
"planning.update",
|
|
841
|
+
"schedule.create",
|
|
842
|
+
"schedule.delete",
|
|
843
|
+
"schedule.update"
|
|
844
|
+
]
|
|
845
|
+
},
|
|
846
|
+
"scope": {
|
|
847
|
+
"type": "string",
|
|
848
|
+
"minLength": 1,
|
|
849
|
+
"maxLength": 256
|
|
850
|
+
},
|
|
851
|
+
"id": {
|
|
852
|
+
"type": "string",
|
|
853
|
+
"minLength": 1,
|
|
854
|
+
"maxLength": 128
|
|
855
|
+
},
|
|
856
|
+
"epoch": {
|
|
857
|
+
"type": "string",
|
|
858
|
+
"minLength": 1,
|
|
859
|
+
"maxLength": 128
|
|
860
|
+
},
|
|
861
|
+
"expectedRevision": {
|
|
862
|
+
"anyOf": [
|
|
863
|
+
{
|
|
864
|
+
"type": "string",
|
|
865
|
+
"minLength": 1,
|
|
866
|
+
"maxLength": 32
|
|
867
|
+
},
|
|
868
|
+
{
|
|
869
|
+
"type": "null"
|
|
870
|
+
}
|
|
871
|
+
]
|
|
872
|
+
},
|
|
873
|
+
"data": {
|
|
874
|
+
"type": "object",
|
|
875
|
+
"maxProperties": 40
|
|
876
|
+
}
|
|
877
|
+
},
|
|
878
|
+
"required": [
|
|
879
|
+
"operationId",
|
|
880
|
+
"issuedAt",
|
|
881
|
+
"kind",
|
|
882
|
+
"scope",
|
|
883
|
+
"id",
|
|
884
|
+
"epoch",
|
|
885
|
+
"expectedRevision",
|
|
886
|
+
"data"
|
|
887
|
+
],
|
|
888
|
+
"additionalProperties": false
|
|
889
|
+
},
|
|
890
|
+
"scopes": ["planning:write", "coaching:write"],
|
|
891
|
+
"route": "commands",
|
|
892
|
+
"write": true,
|
|
893
|
+
"destructive": true
|
|
894
|
+
},
|
|
895
|
+
{
|
|
896
|
+
"name": "fitness_edit_programs",
|
|
897
|
+
"title": "Apply approved programs changes",
|
|
898
|
+
"description": "Apply an exact immutable command returned by prepare_command for programs, after user approval. Only the listed command kinds are accepted. Preserve operationId and all fields for retries. Existing account, resource, subscription and quota checks apply.",
|
|
899
|
+
"inputSchema": {
|
|
900
|
+
"type": "object",
|
|
901
|
+
"properties": {
|
|
902
|
+
"operationId": {
|
|
903
|
+
"type": "string",
|
|
904
|
+
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
|
|
905
|
+
},
|
|
906
|
+
"issuedAt": {
|
|
907
|
+
"type": "integer",
|
|
908
|
+
"minimum": 0
|
|
909
|
+
},
|
|
910
|
+
"kind": {
|
|
911
|
+
"type": "string",
|
|
912
|
+
"enum": [
|
|
913
|
+
"exercise.document.create",
|
|
914
|
+
"exercise.document.delete",
|
|
915
|
+
"exercise.document.update",
|
|
916
|
+
"program.create",
|
|
917
|
+
"program.delete",
|
|
918
|
+
"program.update",
|
|
919
|
+
"workout.create",
|
|
920
|
+
"workout.delete",
|
|
921
|
+
"workout.exercise.create",
|
|
922
|
+
"workout.exercise.delete",
|
|
923
|
+
"workout.exercise.update",
|
|
924
|
+
"workout.update"
|
|
925
|
+
]
|
|
926
|
+
},
|
|
927
|
+
"scope": {
|
|
928
|
+
"type": "string",
|
|
929
|
+
"minLength": 1,
|
|
930
|
+
"maxLength": 256
|
|
931
|
+
},
|
|
932
|
+
"id": {
|
|
933
|
+
"type": "string",
|
|
934
|
+
"minLength": 1,
|
|
935
|
+
"maxLength": 128
|
|
936
|
+
},
|
|
937
|
+
"epoch": {
|
|
938
|
+
"type": "string",
|
|
939
|
+
"minLength": 1,
|
|
940
|
+
"maxLength": 128
|
|
941
|
+
},
|
|
942
|
+
"expectedRevision": {
|
|
943
|
+
"anyOf": [
|
|
944
|
+
{
|
|
945
|
+
"type": "string",
|
|
946
|
+
"minLength": 1,
|
|
947
|
+
"maxLength": 32
|
|
948
|
+
},
|
|
949
|
+
{
|
|
950
|
+
"type": "null"
|
|
951
|
+
}
|
|
952
|
+
]
|
|
953
|
+
},
|
|
954
|
+
"data": {
|
|
955
|
+
"type": "object",
|
|
956
|
+
"maxProperties": 40
|
|
957
|
+
}
|
|
958
|
+
},
|
|
959
|
+
"required": [
|
|
960
|
+
"operationId",
|
|
961
|
+
"issuedAt",
|
|
962
|
+
"kind",
|
|
963
|
+
"scope",
|
|
964
|
+
"id",
|
|
965
|
+
"epoch",
|
|
966
|
+
"expectedRevision",
|
|
967
|
+
"data"
|
|
968
|
+
],
|
|
969
|
+
"additionalProperties": false
|
|
970
|
+
},
|
|
971
|
+
"scopes": ["programs:write"],
|
|
972
|
+
"route": "commands",
|
|
973
|
+
"write": true,
|
|
974
|
+
"destructive": true
|
|
975
|
+
},
|
|
976
|
+
{
|
|
977
|
+
"name": "fitness_coach_programs",
|
|
978
|
+
"title": "Coach: apply approved programs changes",
|
|
979
|
+
"description": "Apply an approved programs command to another athlete's authorized program. Requires an active Coach subscription, explicit coaching permission and current program membership. Prepare the exact command first; preserve it for retries. Never use this to widen access.",
|
|
980
|
+
"inputSchema": {
|
|
981
|
+
"type": "object",
|
|
982
|
+
"properties": {
|
|
983
|
+
"operationId": {
|
|
984
|
+
"type": "string",
|
|
985
|
+
"pattern": "^[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}$"
|
|
986
|
+
},
|
|
987
|
+
"issuedAt": {
|
|
988
|
+
"type": "integer",
|
|
989
|
+
"minimum": 0
|
|
990
|
+
},
|
|
991
|
+
"kind": {
|
|
992
|
+
"type": "string",
|
|
993
|
+
"enum": [
|
|
994
|
+
"exercise.document.create",
|
|
995
|
+
"exercise.document.delete",
|
|
996
|
+
"exercise.document.update",
|
|
997
|
+
"program.create",
|
|
998
|
+
"program.delete",
|
|
999
|
+
"program.update",
|
|
1000
|
+
"workout.create",
|
|
1001
|
+
"workout.delete",
|
|
1002
|
+
"workout.exercise.create",
|
|
1003
|
+
"workout.exercise.delete",
|
|
1004
|
+
"workout.exercise.update",
|
|
1005
|
+
"workout.update"
|
|
1006
|
+
]
|
|
1007
|
+
},
|
|
1008
|
+
"scope": {
|
|
1009
|
+
"type": "string",
|
|
1010
|
+
"minLength": 1,
|
|
1011
|
+
"maxLength": 256
|
|
1012
|
+
},
|
|
1013
|
+
"id": {
|
|
1014
|
+
"type": "string",
|
|
1015
|
+
"minLength": 1,
|
|
1016
|
+
"maxLength": 128
|
|
1017
|
+
},
|
|
1018
|
+
"epoch": {
|
|
1019
|
+
"type": "string",
|
|
1020
|
+
"minLength": 1,
|
|
1021
|
+
"maxLength": 128
|
|
1022
|
+
},
|
|
1023
|
+
"expectedRevision": {
|
|
1024
|
+
"anyOf": [
|
|
1025
|
+
{
|
|
1026
|
+
"type": "string",
|
|
1027
|
+
"minLength": 1,
|
|
1028
|
+
"maxLength": 32
|
|
1029
|
+
},
|
|
1030
|
+
{
|
|
1031
|
+
"type": "null"
|
|
1032
|
+
}
|
|
1033
|
+
]
|
|
1034
|
+
},
|
|
1035
|
+
"data": {
|
|
1036
|
+
"type": "object",
|
|
1037
|
+
"maxProperties": 40
|
|
1038
|
+
}
|
|
1039
|
+
},
|
|
1040
|
+
"required": [
|
|
1041
|
+
"operationId",
|
|
1042
|
+
"issuedAt",
|
|
1043
|
+
"kind",
|
|
1044
|
+
"scope",
|
|
1045
|
+
"id",
|
|
1046
|
+
"epoch",
|
|
1047
|
+
"expectedRevision",
|
|
1048
|
+
"data"
|
|
1049
|
+
],
|
|
1050
|
+
"additionalProperties": false
|
|
1051
|
+
},
|
|
1052
|
+
"scopes": ["programs:write", "coaching:write"],
|
|
1053
|
+
"route": "commands",
|
|
1054
|
+
"write": true,
|
|
1055
|
+
"destructive": true
|
|
1056
|
+
},
|
|
1057
|
+
{
|
|
1058
|
+
"name": "fitness_read_exercises",
|
|
1059
|
+
"title": "Read exercises records",
|
|
1060
|
+
"description": "Read one authorized page or exact record from the listed exercises collections. Preserve epoch/revision and follow nextAfter only when needed. This tool cannot change data. Existing resource access and quotas apply.",
|
|
1061
|
+
"inputSchema": {
|
|
1062
|
+
"type": "object",
|
|
1063
|
+
"properties": {
|
|
1064
|
+
"scope": {
|
|
1065
|
+
"type": "string",
|
|
1066
|
+
"minLength": 1,
|
|
1067
|
+
"maxLength": 256
|
|
1068
|
+
},
|
|
1069
|
+
"collection": {
|
|
1070
|
+
"type": "string",
|
|
1071
|
+
"enum": ["exercises"]
|
|
1072
|
+
},
|
|
1073
|
+
"id": {
|
|
1074
|
+
"type": "string",
|
|
1075
|
+
"minLength": 1,
|
|
1076
|
+
"maxLength": 128
|
|
1077
|
+
},
|
|
1078
|
+
"after": {
|
|
1079
|
+
"type": "string",
|
|
1080
|
+
"minLength": 1,
|
|
1081
|
+
"maxLength": 4096
|
|
1082
|
+
},
|
|
1083
|
+
"epoch": {
|
|
1084
|
+
"type": "string",
|
|
1085
|
+
"minLength": 1,
|
|
1086
|
+
"maxLength": 128
|
|
1087
|
+
},
|
|
1088
|
+
"checkpoint": {
|
|
1089
|
+
"type": "string",
|
|
1090
|
+
"minLength": 1,
|
|
1091
|
+
"maxLength": 128
|
|
1092
|
+
},
|
|
1093
|
+
"archive": {
|
|
1094
|
+
"type": "string",
|
|
1095
|
+
"enum": ["active", "archived", "all"]
|
|
1096
|
+
}
|
|
1097
|
+
},
|
|
1098
|
+
"required": ["scope", "collection"],
|
|
1099
|
+
"additionalProperties": false
|
|
1100
|
+
},
|
|
1101
|
+
"scopes": ["exercises:read"],
|
|
1102
|
+
"route": "resources"
|
|
1103
|
+
},
|
|
1104
|
+
{
|
|
1105
|
+
"name": "fitness_read_health",
|
|
1106
|
+
"title": "Read health records",
|
|
1107
|
+
"description": "Read one authorized page or exact record from the listed health collections. Preserve epoch/revision and follow nextAfter only when needed. This tool cannot change data. Existing resource access and quotas apply.",
|
|
1108
|
+
"inputSchema": {
|
|
1109
|
+
"type": "object",
|
|
1110
|
+
"properties": {
|
|
1111
|
+
"scope": {
|
|
1112
|
+
"type": "string",
|
|
1113
|
+
"minLength": 1,
|
|
1114
|
+
"maxLength": 256
|
|
1115
|
+
},
|
|
1116
|
+
"collection": {
|
|
1117
|
+
"type": "string",
|
|
1118
|
+
"enum": ["health"]
|
|
1119
|
+
},
|
|
1120
|
+
"id": {
|
|
1121
|
+
"type": "string",
|
|
1122
|
+
"minLength": 1,
|
|
1123
|
+
"maxLength": 128
|
|
1124
|
+
},
|
|
1125
|
+
"after": {
|
|
1126
|
+
"type": "string",
|
|
1127
|
+
"minLength": 1,
|
|
1128
|
+
"maxLength": 4096
|
|
1129
|
+
},
|
|
1130
|
+
"epoch": {
|
|
1131
|
+
"type": "string",
|
|
1132
|
+
"minLength": 1,
|
|
1133
|
+
"maxLength": 128
|
|
1134
|
+
},
|
|
1135
|
+
"checkpoint": {
|
|
1136
|
+
"type": "string",
|
|
1137
|
+
"minLength": 1,
|
|
1138
|
+
"maxLength": 128
|
|
1139
|
+
},
|
|
1140
|
+
"archive": {
|
|
1141
|
+
"type": "string",
|
|
1142
|
+
"enum": ["active", "archived", "all"]
|
|
1143
|
+
}
|
|
1144
|
+
},
|
|
1145
|
+
"required": ["scope", "collection"],
|
|
1146
|
+
"additionalProperties": false
|
|
1147
|
+
},
|
|
1148
|
+
"scopes": ["health:read"],
|
|
1149
|
+
"route": "resources"
|
|
1150
|
+
},
|
|
1151
|
+
{
|
|
1152
|
+
"name": "fitness_read_metrics",
|
|
1153
|
+
"title": "Read metrics records",
|
|
1154
|
+
"description": "Read one authorized page or exact record from the listed metrics collections. Preserve epoch/revision and follow nextAfter only when needed. This tool cannot change data. Existing resource access and quotas apply.",
|
|
1155
|
+
"inputSchema": {
|
|
1156
|
+
"type": "object",
|
|
1157
|
+
"properties": {
|
|
1158
|
+
"scope": {
|
|
1159
|
+
"type": "string",
|
|
1160
|
+
"minLength": 1,
|
|
1161
|
+
"maxLength": 256
|
|
1162
|
+
},
|
|
1163
|
+
"collection": {
|
|
1164
|
+
"type": "string",
|
|
1165
|
+
"enum": ["runs", "sessions"]
|
|
1166
|
+
},
|
|
1167
|
+
"id": {
|
|
1168
|
+
"type": "string",
|
|
1169
|
+
"minLength": 1,
|
|
1170
|
+
"maxLength": 128
|
|
1171
|
+
},
|
|
1172
|
+
"after": {
|
|
1173
|
+
"type": "string",
|
|
1174
|
+
"minLength": 1,
|
|
1175
|
+
"maxLength": 4096
|
|
1176
|
+
},
|
|
1177
|
+
"epoch": {
|
|
1178
|
+
"type": "string",
|
|
1179
|
+
"minLength": 1,
|
|
1180
|
+
"maxLength": 128
|
|
1181
|
+
},
|
|
1182
|
+
"checkpoint": {
|
|
1183
|
+
"type": "string",
|
|
1184
|
+
"minLength": 1,
|
|
1185
|
+
"maxLength": 128
|
|
1186
|
+
},
|
|
1187
|
+
"archive": {
|
|
1188
|
+
"type": "string",
|
|
1189
|
+
"enum": ["active", "archived", "all"]
|
|
1190
|
+
}
|
|
1191
|
+
},
|
|
1192
|
+
"required": ["scope", "collection"],
|
|
1193
|
+
"additionalProperties": false
|
|
1194
|
+
},
|
|
1195
|
+
"scopes": ["metrics:read"],
|
|
1196
|
+
"route": "resources"
|
|
1197
|
+
},
|
|
1198
|
+
{
|
|
1199
|
+
"name": "fitness_read_planning",
|
|
1200
|
+
"title": "Read planning records",
|
|
1201
|
+
"description": "Read one authorized page or exact record from the listed planning collections. Preserve epoch/revision and follow nextAfter only when needed. This tool cannot change data. Existing resource access and quotas apply.",
|
|
1202
|
+
"inputSchema": {
|
|
1203
|
+
"type": "object",
|
|
1204
|
+
"properties": {
|
|
1205
|
+
"scope": {
|
|
1206
|
+
"type": "string",
|
|
1207
|
+
"minLength": 1,
|
|
1208
|
+
"maxLength": 256
|
|
1209
|
+
},
|
|
1210
|
+
"collection": {
|
|
1211
|
+
"type": "string",
|
|
1212
|
+
"enum": ["goals", "planning", "schedules"]
|
|
1213
|
+
},
|
|
1214
|
+
"id": {
|
|
1215
|
+
"type": "string",
|
|
1216
|
+
"minLength": 1,
|
|
1217
|
+
"maxLength": 128
|
|
1218
|
+
},
|
|
1219
|
+
"after": {
|
|
1220
|
+
"type": "string",
|
|
1221
|
+
"minLength": 1,
|
|
1222
|
+
"maxLength": 4096
|
|
1223
|
+
},
|
|
1224
|
+
"epoch": {
|
|
1225
|
+
"type": "string",
|
|
1226
|
+
"minLength": 1,
|
|
1227
|
+
"maxLength": 128
|
|
1228
|
+
},
|
|
1229
|
+
"checkpoint": {
|
|
1230
|
+
"type": "string",
|
|
1231
|
+
"minLength": 1,
|
|
1232
|
+
"maxLength": 128
|
|
1233
|
+
},
|
|
1234
|
+
"archive": {
|
|
1235
|
+
"type": "string",
|
|
1236
|
+
"enum": ["active", "archived", "all"]
|
|
1237
|
+
}
|
|
1238
|
+
},
|
|
1239
|
+
"required": ["scope", "collection"],
|
|
1240
|
+
"additionalProperties": false
|
|
1241
|
+
},
|
|
1242
|
+
"scopes": ["planning:read"],
|
|
1243
|
+
"route": "resources"
|
|
1244
|
+
},
|
|
1245
|
+
{
|
|
1246
|
+
"name": "fitness_read_programs",
|
|
1247
|
+
"title": "Read programs records",
|
|
1248
|
+
"description": "Read one authorized page or exact record from the listed programs collections. Preserve epoch/revision and follow nextAfter only when needed. This tool cannot change data. Existing resource access and quotas apply.",
|
|
1249
|
+
"inputSchema": {
|
|
1250
|
+
"type": "object",
|
|
1251
|
+
"properties": {
|
|
1252
|
+
"scope": {
|
|
1253
|
+
"type": "string",
|
|
1254
|
+
"minLength": 1,
|
|
1255
|
+
"maxLength": 256
|
|
1256
|
+
},
|
|
1257
|
+
"collection": {
|
|
1258
|
+
"type": "string",
|
|
1259
|
+
"enum": ["exerciseDocuments", "members", "programs", "workoutExercises", "workouts"]
|
|
1260
|
+
},
|
|
1261
|
+
"id": {
|
|
1262
|
+
"type": "string",
|
|
1263
|
+
"minLength": 1,
|
|
1264
|
+
"maxLength": 128
|
|
1265
|
+
},
|
|
1266
|
+
"after": {
|
|
1267
|
+
"type": "string",
|
|
1268
|
+
"minLength": 1,
|
|
1269
|
+
"maxLength": 4096
|
|
1270
|
+
},
|
|
1271
|
+
"epoch": {
|
|
1272
|
+
"type": "string",
|
|
1273
|
+
"minLength": 1,
|
|
1274
|
+
"maxLength": 128
|
|
1275
|
+
},
|
|
1276
|
+
"checkpoint": {
|
|
1277
|
+
"type": "string",
|
|
1278
|
+
"minLength": 1,
|
|
1279
|
+
"maxLength": 128
|
|
1280
|
+
},
|
|
1281
|
+
"archive": {
|
|
1282
|
+
"type": "string",
|
|
1283
|
+
"enum": ["active", "archived", "all"]
|
|
1284
|
+
}
|
|
1285
|
+
},
|
|
1286
|
+
"required": ["scope", "collection"],
|
|
1287
|
+
"additionalProperties": false
|
|
1288
|
+
},
|
|
1289
|
+
"scopes": ["programs:read"],
|
|
1290
|
+
"route": "resources"
|
|
1291
|
+
},
|
|
1292
|
+
{
|
|
1293
|
+
"name": "fitness_workflow",
|
|
1294
|
+
"title": "Workflow guides",
|
|
1295
|
+
"description": "Read reviewed product instructions for a specific workflow before unfamiliar operations. Explains available commands, permissions, pagination and remote versus local retry behavior; does not read personal data or grant access.",
|
|
1296
|
+
"inputSchema": {
|
|
1297
|
+
"type": "object",
|
|
1298
|
+
"properties": {
|
|
1299
|
+
"topic": {
|
|
1300
|
+
"type": "string",
|
|
1301
|
+
"enum": ["connection", "mutations", "catalogue", "planning", "progress", "coaching"]
|
|
1302
|
+
}
|
|
1303
|
+
},
|
|
1304
|
+
"required": ["topic"],
|
|
1305
|
+
"additionalProperties": false
|
|
1306
|
+
},
|
|
1307
|
+
"scopes": []
|
|
418
1308
|
}
|
|
419
1309
|
]
|