funifier-mcp 0.3.12 → 0.3.13

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.
@@ -0,0 +1,137 @@
1
+ {
2
+ "funifier-create-trigger": [
3
+ "knowledge/modules/trigger.md",
4
+ "knowledge/guides/triggers-guide.md",
5
+ "knowledge/guides/java-entities.md",
6
+ "knowledge/guides/java-managers.md",
7
+ "knowledge/guides/trigger-examples.md"
8
+ ],
9
+ "funifier-create-scheduler": [
10
+ "knowledge/modules/scheduler.md",
11
+ "knowledge/guides/java-managers.md",
12
+ "knowledge/guides/java-libraries.md"
13
+ ],
14
+ "funifier-create-aggregate": [
15
+ "knowledge/guides/aggregates.md",
16
+ "knowledge/guides/database-access.md",
17
+ "knowledge/modules/database.md"
18
+ ],
19
+ "funifier-date-handling": [
20
+ "knowledge/guides/database-access.md",
21
+ "knowledge/guides/aggregates.md",
22
+ "knowledge/modules/database.md"
23
+ ],
24
+ "funifier-create-challenge": [
25
+ "knowledge/modules/challenge.md",
26
+ "knowledge/modules/action.md",
27
+ "knowledge/modules/point.md"
28
+ ],
29
+ "funifier-create-action": [
30
+ "knowledge/modules/action.md",
31
+ "knowledge/modules/action-log.md"
32
+ ],
33
+ "funifier-create-point": [
34
+ "knowledge/modules/point.md",
35
+ "knowledge/modules/achievement.md"
36
+ ],
37
+ "funifier-create-level": [
38
+ "knowledge/modules/level.md",
39
+ "knowledge/modules/point.md"
40
+ ],
41
+ "funifier-create-leaderboard": [
42
+ "knowledge/modules/leaderboard.md",
43
+ "knowledge/modules/point.md",
44
+ "knowledge/modules/action.md"
45
+ ],
46
+ "funifier-create-quiz": [
47
+ "knowledge/modules/quiz.md",
48
+ "knowledge/modules/question.md"
49
+ ],
50
+ "funifier-create-virtual-good": [
51
+ "knowledge/modules/virtual-good.md",
52
+ "knowledge/modules/point.md"
53
+ ],
54
+ "funifier-create-custom-page": [
55
+ "knowledge/modules/studio-page.md",
56
+ "knowledge/guides/aggregates.md",
57
+ "knowledge/modules/auth.md"
58
+ ],
59
+ "funifier-implement-frontend": [
60
+ "knowledge/modules/auth.md",
61
+ "knowledge/guides/aggregates.md",
62
+ "knowledge/guides/database-access.md",
63
+ "knowledge/modules/patterns.md",
64
+ "knowledge/modules/action-log.md",
65
+ "knowledge/modules/static-repo.md"
66
+ ],
67
+ "funifier-debug": [
68
+ "knowledge/guides/java-libraries.md",
69
+ "knowledge/modules/trigger.md",
70
+ "knowledge/guides/triggers-guide.md",
71
+ "knowledge/guides/trigger-examples.md",
72
+ "knowledge/modules/scheduler.md",
73
+ "knowledge/guides/aggregates.md",
74
+ "knowledge/modules/public.md"
75
+ ],
76
+ "funifier-help": [
77
+ "knowledge/index.md"
78
+ ],
79
+ "funifier-manage-player": [
80
+ "knowledge/modules/player.md"
81
+ ],
82
+ "funifier-manage-team": [
83
+ "knowledge/modules/team.md"
84
+ ],
85
+ "funifier-create-competition": [
86
+ "knowledge/modules/competition.md"
87
+ ],
88
+ "funifier-create-folder": [
89
+ "knowledge/modules/folder.md"
90
+ ],
91
+ "funifier-create-lottery": [
92
+ "knowledge/modules/lottery.md"
93
+ ],
94
+ "funifier-create-mystery": [
95
+ "knowledge/modules/mystery.md"
96
+ ],
97
+ "funifier-create-story": [
98
+ "knowledge/modules/story.md"
99
+ ],
100
+ "funifier-create-crossword": [
101
+ "knowledge/modules/crossword.md"
102
+ ],
103
+ "funifier-create-notification": [
104
+ "knowledge/modules/notification.md"
105
+ ],
106
+ "funifier-create-lastmile": [
107
+ "knowledge/modules/lastmile.md"
108
+ ],
109
+ "funifier-create-webhook": [
110
+ "knowledge/modules/webhook.md"
111
+ ],
112
+ "funifier-create-websocket": [
113
+ "knowledge/modules/websocket.md"
114
+ ],
115
+ "funifier-create-widget": [
116
+ "knowledge/modules/widget.md"
117
+ ],
118
+ "funifier-create-swap": [
119
+ "knowledge/modules/swap.md"
120
+ ],
121
+ "funifier-create-custom-object": [
122
+ "knowledge/modules/custom-object.md",
123
+ "knowledge/modules/database.md"
124
+ ],
125
+ "funifier-configure-security": [
126
+ "knowledge/modules/security.md"
127
+ ],
128
+ "funifier-import-csv": [
129
+ "knowledge/modules/csv-data.md"
130
+ ],
131
+ "funifier-upload-file": [
132
+ "knowledge/modules/upload.md"
133
+ ],
134
+ "funifier-manage-indexes": [
135
+ "knowledge/modules/database.md"
136
+ ]
137
+ }
@@ -1,13 +1,13 @@
1
1
  {
2
- "generatedAt": "2026-05-20T21:14:00Z",
2
+ "generatedAt": "2026-06-11T20:10:00Z",
3
3
  "skills": {
4
4
  "funifier-configure-security": {
5
- "configHash": "1f3a9933e8ce4a97a4664793e906077418e85bf51700c5671a6aefbf7736d056",
5
+ "configHash": "fba0f846a53838e369f5c079104cd4a2f16a9d535a0320701d16287e53f35496",
6
6
  "status": "verified",
7
7
  "claims": []
8
8
  },
9
9
  "funifier-create-action": {
10
- "configHash": "378dcd46c1dbad66e0363790d65d5bc0bba9ea3b294a97b571cc6d87c26ddf11",
10
+ "configHash": "2b0f8eddb8f942fc407c1d19b15fdc80cb7d9a1e01c1093befdfd3c483c1cb68",
11
11
  "status": "verified",
12
12
  "claims": [
13
13
  {
@@ -33,7 +33,7 @@
33
33
  ]
34
34
  },
35
35
  "funifier-create-aggregate": {
36
- "configHash": "2d3d7a749e6ab376e52d91e3088b1785b5fc621378f36b000f37901856a3378e",
36
+ "configHash": "77d4c5a8da82be77c50fdc1ed457e14141fd206a0c27425a3e0984b52e6322de",
37
37
  "status": "verified",
38
38
  "claims": [
39
39
  {
@@ -49,7 +49,7 @@
49
49
  ]
50
50
  },
51
51
  "funifier-create-challenge": {
52
- "configHash": "7065294da9c53a9d1bbe544749ff552d6674d0d77e2534ea17e43fae4c72474c",
52
+ "configHash": "45e50eab442325d3342dddff5d7c48f34002fe0182ed78c31a48fffdb8eafd03",
53
53
  "status": "verified",
54
54
  "claims": [
55
55
  {
@@ -75,7 +75,7 @@
75
75
  ]
76
76
  },
77
77
  "funifier-create-competition": {
78
- "configHash": "0de8bcda95d0a1764ef4ce7aa7e78c53c7f7d492012534ecaf7f87600c42f078",
78
+ "configHash": "ed7fe6dc128ebe0cbb417544d2f25209cf472a11fd38e4b78bb33b7662e54618",
79
79
  "status": "verified",
80
80
  "claims": [
81
81
  {
@@ -101,7 +101,7 @@
101
101
  ]
102
102
  },
103
103
  "funifier-create-crossword": {
104
- "configHash": "805581aa9d130ebb288e4c55c1db9c0e40a941d9018049c7360c1ed8b52fd9fd",
104
+ "configHash": "c1e731de20525b88b05c1f644c196fa5aa31c593a75f7f03de8c8030564ab5fb",
105
105
  "status": "verified",
106
106
  "claims": [
107
107
  {
@@ -117,7 +117,7 @@
117
117
  ]
118
118
  },
119
119
  "funifier-create-custom-object": {
120
- "configHash": "d93cdcf29552916b4975d2d4a1c9913f119f88465be831dcf3e4451da4dfb623",
120
+ "configHash": "58677f7f00c4d432e792f825bbc12b11e61722057c143d4a291da600d5beb758",
121
121
  "status": "verified",
122
122
  "claims": [
123
123
  {
@@ -133,7 +133,7 @@
133
133
  ]
134
134
  },
135
135
  "funifier-create-custom-page": {
136
- "configHash": "a09c4bf4f054584d7ef1816c2ee72e2e7d841cb58fd69dc5ba91654c1550f579",
136
+ "configHash": "d7a517d522858c659e5ead012c9f0594829aee22d96cda561536fbb803cd5db0",
137
137
  "status": "verified",
138
138
  "claims": [
139
139
  {
@@ -149,7 +149,7 @@
149
149
  ]
150
150
  },
151
151
  "funifier-create-folder": {
152
- "configHash": "16b0c0ae4ddebd51a16a0f330a80bed8c186cd7a760a9e52a5fb16d3cf6e462f",
152
+ "configHash": "ec7b1e3fadcd07d89f271f1bc10a28f820916fe8c0e645da88d48a43db868966",
153
153
  "status": "verified",
154
154
  "claims": [
155
155
  {
@@ -175,7 +175,7 @@
175
175
  ]
176
176
  },
177
177
  "funifier-create-lastmile": {
178
- "configHash": "dd949737710051cdb1ca6fa734eab393c4f3d8eb253f75d348dd4f2418c54ca4",
178
+ "configHash": "176113c689332843b24d22f7705d1361dfabf3e369de816b59b33a86ed0d9041",
179
179
  "status": "verified",
180
180
  "claims": [
181
181
  {
@@ -191,7 +191,7 @@
191
191
  ]
192
192
  },
193
193
  "funifier-create-leaderboard": {
194
- "configHash": "f0baaf27834eb5f75c75ba1ddb0054e72a1cf88a52d685601acd4781fafec025",
194
+ "configHash": "1cd6bca4e73fda88a8a4e965af46f45acbba2508098557f321819fbe04d57fb3",
195
195
  "status": "verified",
196
196
  "claims": [
197
197
  {
@@ -207,7 +207,7 @@
207
207
  ]
208
208
  },
209
209
  "funifier-create-level": {
210
- "configHash": "807c32381d542e5e1bbd678b29bc79751af340b7e00a31264a1dd24839306dab",
210
+ "configHash": "c50ed12fceedfc2288bd2006f743528f440ab57de9f8321ae0297f0eb6199eae",
211
211
  "status": "verified",
212
212
  "claims": [
213
213
  {
@@ -233,7 +233,7 @@
233
233
  ]
234
234
  },
235
235
  "funifier-create-lottery": {
236
- "configHash": "ba9945f649f2e2fe91d545d27131b0e705b729deba192d121b8e41a03e3d5078",
236
+ "configHash": "073bed793dd691ac19d095fa52839f4129532b7ff49eef4e35e9c84954d1b540",
237
237
  "status": "verified",
238
238
  "claims": [
239
239
  {
@@ -259,7 +259,7 @@
259
259
  ]
260
260
  },
261
261
  "funifier-create-mystery": {
262
- "configHash": "0251df7c50e9629c592abef26894cc4b37d2a00c32ce6021c47eeedad3df35bb",
262
+ "configHash": "ab423bcca3614806f63a3366db19629fe3127dc2989975f181cb0171be37d312",
263
263
  "status": "verified",
264
264
  "claims": [
265
265
  {
@@ -275,7 +275,7 @@
275
275
  ]
276
276
  },
277
277
  "funifier-create-notification": {
278
- "configHash": "be3677ed9d24dbf74d8f00914237123f2585da7e67c9ca2ab986d5655d18ac29",
278
+ "configHash": "1fd4dbbc94ba9aa72ae464b4c2c40b23f612e8b7c49fae7a8f1136950c0474a2",
279
279
  "status": "verified",
280
280
  "claims": [
281
281
  {
@@ -291,7 +291,7 @@
291
291
  ]
292
292
  },
293
293
  "funifier-create-point": {
294
- "configHash": "a5d84d1e85e7fe8b3d6af3acb19122243c75456c101b991491ee510716607c4a",
294
+ "configHash": "68c1da1a809c5ad6a360766d257bdc14fefff7162e4072ab2221e0f13d0be0a1",
295
295
  "status": "verified",
296
296
  "claims": [
297
297
  {
@@ -317,7 +317,7 @@
317
317
  ]
318
318
  },
319
319
  "funifier-create-quiz": {
320
- "configHash": "dd932897848f30800c71e17acdaf08699dd1c28f5d5b9de618c696bfa88be5b6",
320
+ "configHash": "ccec76679412c2f2a45b3afd30cc0cf266ed29dc1d71c23c6542638819556c7a",
321
321
  "status": "verified",
322
322
  "claims": [
323
323
  {
@@ -343,7 +343,7 @@
343
343
  ]
344
344
  },
345
345
  "funifier-create-scheduler": {
346
- "configHash": "96a38a1d58609c76a8d69cfdde9ef4d8141d3c25a9630b54e29ea829b0633083",
346
+ "configHash": "841ffa14cc86b91dd2f1d744bbc55def6bfe6de6baf6380fff435625963fdd7e",
347
347
  "status": "verified",
348
348
  "claims": [
349
349
  {
@@ -359,12 +359,12 @@
359
359
  ]
360
360
  },
361
361
  "funifier-create-story": {
362
- "configHash": "2b9c353daec3fba8909292835326fcfdbf11bb9935d7ced520a77a7a44e6183c",
362
+ "configHash": "df98fbfb6f812c49736fb99ab6d6de2575289ce28e915bc95ec994158e3bc9b5",
363
363
  "status": "verified",
364
364
  "claims": []
365
365
  },
366
366
  "funifier-create-swap": {
367
- "configHash": "3067da9da8726b0f0191aac05d711e2870dada98044e9fd442bdb2472654d053",
367
+ "configHash": "ef4c5ca6bb0d66976d97dc8a2516da8f112ae0eb6a4e449d678f151dfed646e8",
368
368
  "status": "verified",
369
369
  "claims": [
370
370
  {
@@ -380,7 +380,7 @@
380
380
  ]
381
381
  },
382
382
  "funifier-create-trigger": {
383
- "configHash": "fc0e524524b2fb324139b44a7716008ba8a344fc273b642ba63eb8e2a9238d23",
383
+ "configHash": "44204bb97039cb17d5a1d97757562d9fa16baefd5caf0e1f1a6cc0fa0390db4d",
384
384
  "status": "verified",
385
385
  "claims": [
386
386
  {
@@ -416,7 +416,7 @@
416
416
  ]
417
417
  },
418
418
  "funifier-create-virtual-good": {
419
- "configHash": "9a78b550bfdd28271fcb1d225da8a6f0a68112735209765b32c34fe0be981c33",
419
+ "configHash": "70415901417a63692f7a1325300d2b57644a067dc55917a9e9b64e92bd3c14af",
420
420
  "status": "verified",
421
421
  "claims": [
422
422
  {
@@ -432,7 +432,7 @@
432
432
  ]
433
433
  },
434
434
  "funifier-create-webhook": {
435
- "configHash": "5c93822d7f2e71474b0206641d7cd80e6ad881b0be3ba330287cf9fe4ffe958d",
435
+ "configHash": "e9ff0ebe0b9829bf61011b3abc846806a36f0245e4075a34aecdcb86d837c081",
436
436
  "status": "verified",
437
437
  "claims": [
438
438
  {
@@ -448,7 +448,7 @@
448
448
  ]
449
449
  },
450
450
  "funifier-create-websocket": {
451
- "configHash": "c9595355e80a49bea7d6bd6698b193e7f51ecfa1666bbfe92fa9e501f4c650c9",
451
+ "configHash": "66965c501a68223a84647f0fd2f5bb81fb898318e86e901819a7e9a560201096",
452
452
  "status": "verified",
453
453
  "claims": [
454
454
  {
@@ -464,7 +464,7 @@
464
464
  ]
465
465
  },
466
466
  "funifier-create-widget": {
467
- "configHash": "ee5bad87c5754ec8122aba05d3bd37bcbc417ecbae1dd02b90d5d135fc37dc9f",
467
+ "configHash": "ed11b1648c6a67e24aa4e6a35a29864a48fa8968b7c5e83275cde8f2464273f2",
468
468
  "status": "verified",
469
469
  "claims": [
470
470
  {
@@ -479,8 +479,13 @@
479
479
  }
480
480
  ]
481
481
  },
482
+ "funifier-date-handling": {
483
+ "configHash": "82a41d6369f0a1e2ad5e0a09d7c6c318c970436c7b59a0b42611cd6d5e14575e",
484
+ "status": "verified",
485
+ "claims": []
486
+ },
482
487
  "funifier-debug": {
483
- "configHash": "bcbacfd9495fe11fa314f8cff233102cd92b9a771abf60349db2b2c707b77c5a",
488
+ "configHash": "37c75988e8ddf1c5eb9ef0593a83159410d85a744eb1ff262ba02dc4789fa2a4",
484
489
  "status": "verified",
485
490
  "claims": [
486
491
  {
@@ -496,7 +501,7 @@
496
501
  ]
497
502
  },
498
503
  "funifier-help": {
499
- "configHash": "78608ebcfc5b453d3841f4b1a81126f22742bc7b50d179b8ccdcf0c8d8679a43",
504
+ "configHash": "6b534cd059dbc6f241443411999eef674aaa792577a757e9abf1f7e6c8ec62ef",
500
505
  "status": "verified",
501
506
  "claims": [
502
507
  {
@@ -512,7 +517,7 @@
512
517
  ]
513
518
  },
514
519
  "funifier-implement-frontend": {
515
- "configHash": "01b59b8fbf9639d576fbcb9d10a4db22767ebd8cb2bfcbf9073c0110e4c2e3df",
520
+ "configHash": "cb9700aa8484384f913ef6871ea2a40652c08e394b9e1bfb111706da094c56b5",
516
521
  "status": "verified",
517
522
  "claims": [
518
523
  {
@@ -538,12 +543,17 @@
538
543
  ]
539
544
  },
540
545
  "funifier-import-csv": {
541
- "configHash": "bfc3f7d19a25a0d62ccc607080a2ff2500861a68b133942a771dcec8166db630",
546
+ "configHash": "24ca1b985f50466dd781e3cb1b9a67f152b748d60735b8e8211b305a4c74b261",
547
+ "status": "verified",
548
+ "claims": []
549
+ },
550
+ "funifier-manage-indexes": {
551
+ "configHash": "d4097ecfb403b1df6ea5e2adaf6359b2e663d3ed57f944476abbd9d77debbb1c",
542
552
  "status": "verified",
543
553
  "claims": []
544
554
  },
545
555
  "funifier-manage-player": {
546
- "configHash": "9d4a397fac4cd79d2a6168ef689ecd8dff76a28324f9a3e67492a1db573d127f",
556
+ "configHash": "77efa151e25e2672fcea590f4a5f6bf2f77745875a297e79351f544cff04b73f",
547
557
  "status": "verified",
548
558
  "claims": [
549
559
  {
@@ -569,7 +579,7 @@
569
579
  ]
570
580
  },
571
581
  "funifier-manage-team": {
572
- "configHash": "63c9ead124e4ffbab71fea8d320e12edc9aa48053bd9607c315bdd350fd1e5ac",
582
+ "configHash": "624ed9b06b109a2a07e4a921537df1f31d91125486c8ab26745a913c39ac1876",
573
583
  "status": "verified",
574
584
  "claims": [
575
585
  {
@@ -585,7 +595,7 @@
585
595
  ]
586
596
  },
587
597
  "funifier-upload-file": {
588
- "configHash": "9c3dcaf7351189c3395ae3ea5ac122d5b470b3e1db0b0fd94384880c0094f19c",
598
+ "configHash": "93b0c2d388aa465794cedd461006dcc1f93e426001c710cb90cc595d076a5ea1",
589
599
  "status": "verified",
590
600
  "claims": []
591
601
  }
@@ -27,6 +27,8 @@ Este documento descreve como executar pipelines de aggregate MongoDB na Funifier
27
27
  | Filtrar por "mês atual", "ontem", "este ano" | Expressões de data Funifier | §4 |
28
28
  | Saber quais operadores são aceitos | Ver operadores suportados | §5 |
29
29
  | Ver um pipeline pronto (top N, média, distintos) | Ver exemplos práticos | §6 |
30
+ | Executar um prepared aggregate salvo | `POST /v3/find/:id` | §7 |
31
+ | Prepared aggregate retorna null/405 ou vazio | Depurar com `/params` e `/analyze` | §7 |
30
32
 
31
33
  ### 1.5 Restrições globais críticas
32
34
 
@@ -262,3 +264,57 @@ Pipelines prontos para os relatórios mais frequentes.
262
264
 
263
265
  - **`$lookup` em `achievement` por `_id`** → resultado vazio; junte por `$player`/`$item` conforme o caso (§3).
264
266
  - **`$project` esperando `$p.name` sem `$unwind`** → `$p` é array. Correção: `$unwind` ou `{"$first": "$p.name"}`.
267
+
268
+ ---
269
+
270
+ ## 7. Prepared Aggregate — Execução e Depuração
271
+
272
+ Quando usar: executar um pipeline salvo na plataforma (coleção `prepared_aggregate`) com parâmetros dinâmicos — dashboards, custom pages e frontends.
273
+ Não usar quando: consulta pontual ou teste de pipeline → aggregate direto (§2).
274
+ Depende de: prepared aggregate já registrado com `_id`; regras de datas parametrizadas em `database-access.md`.
275
+ Disponível em: API REST.
276
+
277
+ ### Descrição
278
+
279
+ Um prepared aggregate é um pipeline salvo com `_id` que aceita parâmetros dinâmicos: cada chave do corpo da execução substitui a string literal `"$param:<chave>"` no pipeline. A execução tem endpoint próprio, **fora do padrão CRUD** da plataforma.
280
+
281
+ ### Uso
282
+
283
+ **Executar:**
284
+ ```
285
+ POST /v3/find/{id}
286
+ { "player": "abc" }
287
+ ```
288
+
289
+ | Regra | Detalhe |
290
+ |-------|---------|
291
+ | Método HTTP | POST obrigatório |
292
+ | Params | No corpo JSON — não na query string |
293
+ | Substituição | Cada chave do corpo substitui `"$param:<chave>"` no pipeline diretamente |
294
+ | `context` no script Groovy | Só expõe o player autenticado — `context.get("outro")` retorna `null` |
295
+ | Script vazio | Se o pipeline só usa `"$param:nome"`, o `script` pode ser `""` — não precisa de `prepare()` |
296
+
297
+ **Listar os parâmetros esperados:**
298
+ ```
299
+ GET /v3/find/{id}/params
300
+ → ["player", "start"]
301
+ ```
302
+
303
+ **Analisar a execução passo a passo** (mesmo corpo da execução normal):
304
+ ```
305
+ POST /v3/prepared/aggregate/{id}/analyze
306
+ ```
307
+
308
+ | Campo do retorno | Conteúdo |
309
+ |-------|----------|
310
+ | `script_outputs` | Saídas de `println` do script `prepare()` |
311
+ | `script_exceptions` | Exceções lançadas pelo script Groovy |
312
+ | `obj` | Resultado final do aggregate |
313
+ | `aggregate_step_2`, `aggregate_step_3`, … | Resultado intermediário após cada etapa do pipeline |
314
+
315
+ ### Armadilhas conhecidas
316
+
317
+ - **Executar via `GET /v3/database/aggregate/{id}`** → retorna `null`/`405` silenciosamente, sem mensagem de erro. Correção: `POST /v3/find/{id}`.
318
+ - **Params na query string** → ignorados. Correção: corpo JSON.
319
+ - **Nome de param divergente** → resultado vazio. Correção: conferir com `GET /v3/find/{id}/params`.
320
+ - **Pipeline "perde" os documentos** → execute o `/analyze` e procure a primeira `aggregate_step_N` que retorna vazio.