@iconmind/mcp 0.1.0

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 ADDED
@@ -0,0 +1,2053 @@
1
+ #!/usr/bin/env node
2
+
3
+ // src/index.ts
4
+ import { Server } from "@modelcontextprotocol/sdk/server/index.js";
5
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
6
+
7
+ // src/resources.ts
8
+ import { ListResourcesRequestSchema, ReadResourceRequestSchema } from "@modelcontextprotocol/sdk/types.js";
9
+
10
+ // ../icons/dist/metadata.json
11
+ var metadata_default = {
12
+ version: "0.1.0",
13
+ generatedAt: "2026-08-24T02:01:55.463Z",
14
+ counts: {
15
+ total: 53,
16
+ byCategory: {
17
+ ai: 19,
18
+ agents: 16,
19
+ mcp: 9,
20
+ rag: 9,
21
+ data: 0,
22
+ devops: 0,
23
+ cloud: 0,
24
+ security: 0,
25
+ automation: 0,
26
+ analytics: 0,
27
+ devtools: 0,
28
+ interface: 0
29
+ }
30
+ },
31
+ categories: [
32
+ {
33
+ slug: "ai",
34
+ name: "AI & LLM",
35
+ count: 19,
36
+ subcategories: [
37
+ {
38
+ slug: "model",
39
+ count: 2
40
+ },
41
+ {
42
+ slug: "inference",
43
+ count: 2
44
+ },
45
+ {
46
+ slug: "prompt",
47
+ count: 3
48
+ },
49
+ {
50
+ slug: "token",
51
+ count: 2
52
+ },
53
+ {
54
+ slug: "context",
55
+ count: 1
56
+ },
57
+ {
58
+ slug: "embedding",
59
+ count: 2
60
+ },
61
+ {
62
+ slug: "training",
63
+ count: 3
64
+ },
65
+ {
66
+ slug: "evaluation",
67
+ count: 2
68
+ },
69
+ {
70
+ slug: "safety",
71
+ count: 1
72
+ },
73
+ {
74
+ slug: "multimodal",
75
+ count: 1
76
+ }
77
+ ]
78
+ },
79
+ {
80
+ slug: "agents",
81
+ name: "Agents",
82
+ count: 16,
83
+ subcategories: [
84
+ {
85
+ slug: "agent-core",
86
+ count: 1
87
+ },
88
+ {
89
+ slug: "multi-agent",
90
+ count: 2
91
+ },
92
+ {
93
+ slug: "planning",
94
+ count: 3
95
+ },
96
+ {
97
+ slug: "reflection",
98
+ count: 1
99
+ },
100
+ {
101
+ slug: "memory",
102
+ count: 1
103
+ },
104
+ {
105
+ slug: "tool-use",
106
+ count: 1
107
+ },
108
+ {
109
+ slug: "communication",
110
+ count: 2
111
+ },
112
+ {
113
+ slug: "lifecycle",
114
+ count: 5
115
+ }
116
+ ]
117
+ },
118
+ {
119
+ slug: "mcp",
120
+ name: "MCP",
121
+ count: 9,
122
+ subcategories: [
123
+ {
124
+ slug: "server",
125
+ count: 1
126
+ },
127
+ {
128
+ slug: "client",
129
+ count: 2
130
+ },
131
+ {
132
+ slug: "resource",
133
+ count: 1
134
+ },
135
+ {
136
+ slug: "tool",
137
+ count: 2
138
+ },
139
+ {
140
+ slug: "prompt",
141
+ count: 1
142
+ },
143
+ {
144
+ slug: "transport",
145
+ count: 1
146
+ },
147
+ {
148
+ slug: "registry",
149
+ count: 1
150
+ }
151
+ ]
152
+ },
153
+ {
154
+ slug: "rag",
155
+ name: "RAG & Search",
156
+ count: 9,
157
+ subcategories: [
158
+ {
159
+ slug: "ingestion",
160
+ count: 1
161
+ },
162
+ {
163
+ slug: "chunking",
164
+ count: 2
165
+ },
166
+ {
167
+ slug: "retrieval",
168
+ count: 2
169
+ },
170
+ {
171
+ slug: "ranking",
172
+ count: 1
173
+ },
174
+ {
175
+ slug: "vector",
176
+ count: 1
177
+ },
178
+ {
179
+ slug: "knowledge",
180
+ count: 1
181
+ },
182
+ {
183
+ slug: "grounding",
184
+ count: 1
185
+ }
186
+ ]
187
+ }
188
+ ],
189
+ icons: [
190
+ {
191
+ slug: "agent",
192
+ category: "agents",
193
+ subcategory: "agent-core",
194
+ name: "Agent",
195
+ description: "An autonomous agent that acts on its own",
196
+ tags: [
197
+ "agent",
198
+ "autonomous",
199
+ "actor",
200
+ "entity",
201
+ "worker",
202
+ "bot"
203
+ ],
204
+ aliases: [],
205
+ keywords: [],
206
+ contributors: [],
207
+ deprecated: null,
208
+ componentName: "Agent",
209
+ contentHash: "sha256:8c8c8f4e502a75e32b25312301116228bd3bd3ff554b6ba12c04446142e702b9",
210
+ structuralHash: "circle|path:MHLVLHLVZ",
211
+ elementCount: 2,
212
+ byteSize: 263,
213
+ related: [
214
+ "agent-run",
215
+ "agent-pause",
216
+ "agent-thinking",
217
+ "agent-stop"
218
+ ],
219
+ addedIn: "0.1.0",
220
+ updatedIn: "0.1.0"
221
+ },
222
+ {
223
+ slug: "agent-hierarchy",
224
+ category: "agents",
225
+ subcategory: "multi-agent",
226
+ name: "Agent Hierarchy",
227
+ description: "Agents arranged in tiers with one above several others",
228
+ tags: [
229
+ "hierarchy",
230
+ "tree",
231
+ "supervisor",
232
+ "delegation",
233
+ "org chart",
234
+ "tiers"
235
+ ],
236
+ aliases: [],
237
+ keywords: [],
238
+ contributors: [],
239
+ deprecated: null,
240
+ componentName: "AgentHierarchy",
241
+ contentHash: "sha256:e0d9cd79b2829904ddf6b45899d9b269fdb86960df4b814e461e0962cf29818c",
242
+ structuralHash: "path:MHLVLHLVZ|path:MHLVLHLVZ|path:MHLVLHLVZ|path:MV|path:MVHV",
243
+ elementCount: 5,
244
+ byteSize: 382,
245
+ related: [],
246
+ addedIn: "0.1.0",
247
+ updatedIn: "0.1.0"
248
+ },
249
+ {
250
+ slug: "agent-log",
251
+ category: "agents",
252
+ subcategory: "lifecycle",
253
+ name: "Agent Log",
254
+ description: "A time-ordered record of what an agent did",
255
+ tags: [
256
+ "log",
257
+ "history",
258
+ "trace",
259
+ "audit",
260
+ "timeline",
261
+ "record"
262
+ ],
263
+ aliases: [],
264
+ keywords: [],
265
+ contributors: [],
266
+ deprecated: null,
267
+ componentName: "AgentLog",
268
+ contentHash: "sha256:58b14074a948c3bbf0dd106a7a7e2226642027fd52bc2f4b0e28625ff0ffebcc",
269
+ structuralHash: "circle|path:MH|path:MH|path:MH|path:MVH",
270
+ elementCount: 5,
271
+ byteSize: 300,
272
+ related: [],
273
+ addedIn: "0.1.0",
274
+ updatedIn: "0.1.0"
275
+ },
276
+ {
277
+ slug: "agent-message",
278
+ category: "agents",
279
+ subcategory: "communication",
280
+ name: "Agent Message",
281
+ description: "Something one agent says to another",
282
+ tags: [
283
+ "message",
284
+ "speak",
285
+ "communicate",
286
+ "send",
287
+ "utterance",
288
+ "reply"
289
+ ],
290
+ aliases: [],
291
+ keywords: [],
292
+ contributors: [],
293
+ deprecated: null,
294
+ componentName: "AgentMessage",
295
+ contentHash: "sha256:27d3ab29c4abf0888aec450688ca77838545269706ca02d4e391e43337949b62",
296
+ structuralHash: "path:MHLVLHLVLVZ|path:MHLVLHLVZ",
297
+ elementCount: 2,
298
+ byteSize: 278,
299
+ related: [],
300
+ addedIn: "0.1.0",
301
+ updatedIn: "0.1.0"
302
+ },
303
+ {
304
+ slug: "agent-pause",
305
+ category: "agents",
306
+ subcategory: "lifecycle",
307
+ name: "Agent Pause",
308
+ description: "Suspend an agent and keep its state",
309
+ tags: [
310
+ "pause",
311
+ "suspend",
312
+ "hold",
313
+ "wait",
314
+ "freeze",
315
+ "resume"
316
+ ],
317
+ aliases: [],
318
+ keywords: [],
319
+ contributors: [],
320
+ deprecated: null,
321
+ componentName: "AgentPause",
322
+ contentHash: "sha256:f367143a3ad96edffbb229eb2a4597667f966f2cbde0ecaa38afdefeab0df416",
323
+ structuralHash: "path:MHLVLHLVZ|path:MV|path:MV",
324
+ elementCount: 3,
325
+ byteSize: 271,
326
+ related: [
327
+ "agent",
328
+ "agent-run",
329
+ "agent-thinking",
330
+ "agent-stop"
331
+ ],
332
+ addedIn: "0.1.0",
333
+ updatedIn: "0.1.0"
334
+ },
335
+ {
336
+ slug: "agent-run",
337
+ category: "agents",
338
+ subcategory: "lifecycle",
339
+ name: "Agent Run",
340
+ description: "Start an agent and let it work",
341
+ tags: [
342
+ "run",
343
+ "start",
344
+ "execute",
345
+ "play",
346
+ "launch",
347
+ "active"
348
+ ],
349
+ aliases: [],
350
+ keywords: [],
351
+ contributors: [],
352
+ deprecated: null,
353
+ componentName: "AgentRun",
354
+ contentHash: "sha256:c3146241b4a048b7617f77af2610dc95b4efdee3a7aed03bb50522337ba04cac",
355
+ structuralHash: "path:MHLVLHLVZ|path:MLZ",
356
+ elementCount: 2,
357
+ byteSize: 265,
358
+ related: [
359
+ "agent",
360
+ "agent-pause",
361
+ "agent-thinking",
362
+ "agent-stop"
363
+ ],
364
+ addedIn: "0.1.0",
365
+ updatedIn: "0.1.0"
366
+ },
367
+ {
368
+ slug: "agent-stop",
369
+ category: "agents",
370
+ subcategory: "lifecycle",
371
+ name: "Agent Stop",
372
+ description: "Halt an agent before it finishes",
373
+ tags: [
374
+ "stop",
375
+ "halt",
376
+ "cancel",
377
+ "abort",
378
+ "terminate",
379
+ "kill"
380
+ ],
381
+ aliases: [],
382
+ keywords: [],
383
+ contributors: [],
384
+ deprecated: null,
385
+ componentName: "AgentStop",
386
+ contentHash: "sha256:332c17e3596c72e847ca7c0069097839578cb51b6893e7c80aad5a7cfea52e76",
387
+ structuralHash: "path:MHLVLHLVZ|rect",
388
+ elementCount: 2,
389
+ byteSize: 278,
390
+ related: [
391
+ "agent",
392
+ "agent-run",
393
+ "agent-thinking",
394
+ "agent-pause"
395
+ ],
396
+ addedIn: "0.1.0",
397
+ updatedIn: "0.1.0"
398
+ },
399
+ {
400
+ slug: "agent-thinking",
401
+ category: "agents",
402
+ subcategory: "lifecycle",
403
+ name: "Agent Thinking",
404
+ description: "An agent reasoning before it acts",
405
+ tags: [
406
+ "thinking",
407
+ "reasoning",
408
+ "processing",
409
+ "working",
410
+ "pending",
411
+ "deliberating"
412
+ ],
413
+ aliases: [],
414
+ keywords: [],
415
+ contributors: [],
416
+ deprecated: null,
417
+ componentName: "AgentThinking",
418
+ contentHash: "sha256:c935bb7dc5760fea16de973f866d32b62091939a831cffd2a75ec940143df9fa",
419
+ structuralHash: "circle|circle|circle|path:MHLVLHLVZ",
420
+ elementCount: 4,
421
+ byteSize: 334,
422
+ related: [
423
+ "agent",
424
+ "agent-run",
425
+ "agent-pause",
426
+ "agent-stop",
427
+ "context-window"
428
+ ],
429
+ addedIn: "0.1.0",
430
+ updatedIn: "0.1.0"
431
+ },
432
+ {
433
+ slug: "benchmark",
434
+ category: "ai",
435
+ subcategory: "evaluation",
436
+ name: "Benchmark",
437
+ description: "A standard test models are ranked against",
438
+ tags: [
439
+ "benchmark",
440
+ "ranking",
441
+ "leaderboard",
442
+ "compare",
443
+ "podium",
444
+ "score"
445
+ ],
446
+ aliases: [],
447
+ keywords: [],
448
+ contributors: [],
449
+ deprecated: null,
450
+ componentName: "Benchmark",
451
+ contentHash: "sha256:5eb26ed1e35b189c3e8f5e0662f4903e5205d7a47c0bee3e23106797d5973783",
452
+ structuralHash: "path:MVHVHVHVZ",
453
+ elementCount: 1,
454
+ byteSize: 221,
455
+ related: [],
456
+ addedIn: "0.1.0",
457
+ updatedIn: "0.1.0"
458
+ },
459
+ {
460
+ slug: "chain-of-thought",
461
+ category: "ai",
462
+ subcategory: "prompt",
463
+ name: "Chain of Thought",
464
+ description: "Reasoning worked through one step at a time",
465
+ tags: [
466
+ "chain of thought",
467
+ "reasoning",
468
+ "steps",
469
+ "cot",
470
+ "stepwise",
471
+ "deliberate"
472
+ ],
473
+ aliases: [],
474
+ keywords: [],
475
+ contributors: [],
476
+ deprecated: null,
477
+ componentName: "ChainOfThought",
478
+ contentHash: "sha256:4a532fc19374e330dc5c4e98d4beb80e2ed170b189bf1aaaab3baa2207fcbc26",
479
+ structuralHash: "path:MHVHVHVH",
480
+ elementCount: 1,
481
+ byteSize: 221,
482
+ related: [],
483
+ addedIn: "0.1.0",
484
+ updatedIn: "0.1.0"
485
+ },
486
+ {
487
+ slug: "chunk",
488
+ category: "rag",
489
+ subcategory: "chunking",
490
+ name: "Chunk",
491
+ description: "One piece of a document, sized to fit a model",
492
+ tags: [
493
+ "chunk",
494
+ "block",
495
+ "segment",
496
+ "passage",
497
+ "split",
498
+ "text block"
499
+ ],
500
+ aliases: [],
501
+ keywords: [],
502
+ contributors: [],
503
+ deprecated: null,
504
+ componentName: "Chunk",
505
+ contentHash: "sha256:d2812abb2e7e826cb44ec1ab5484c047d28db0ee9f8197304b3442341a6910fb",
506
+ structuralHash: "path:MH|path:MH|rect",
507
+ elementCount: 3,
508
+ byteSize: 282,
509
+ related: [],
510
+ addedIn: "0.1.0",
511
+ updatedIn: "0.1.0"
512
+ },
513
+ {
514
+ slug: "chunk-overlap",
515
+ category: "rag",
516
+ subcategory: "chunking",
517
+ name: "Chunk Overlap",
518
+ description: "Content shared between two consecutive document chunks",
519
+ tags: [
520
+ "chunk",
521
+ "overlap",
522
+ "intersection",
523
+ "sliding window",
524
+ "split",
525
+ "venn"
526
+ ],
527
+ aliases: [],
528
+ keywords: [],
529
+ contributors: [],
530
+ deprecated: null,
531
+ componentName: "ChunkOverlap",
532
+ contentHash: "sha256:8c71a1fa8a4bbcb2574d9d0aa9b3cbaf66750a5f5c9dddfc95a039b11d753bd7",
533
+ structuralHash: "circle|circle",
534
+ elementCount: 2,
535
+ byteSize: 249,
536
+ related: [],
537
+ addedIn: "0.1.0",
538
+ updatedIn: "0.1.0"
539
+ },
540
+ {
541
+ slug: "context-window",
542
+ category: "ai",
543
+ subcategory: "context",
544
+ name: "Context Window",
545
+ description: "Span of tokens a model can see in a single call",
546
+ tags: [
547
+ "context",
548
+ "window",
549
+ "scope",
550
+ "token limit",
551
+ "prompt",
552
+ "boundary"
553
+ ],
554
+ aliases: [],
555
+ keywords: [],
556
+ contributors: [],
557
+ deprecated: null,
558
+ componentName: "ContextWindow",
559
+ contentHash: "sha256:a15b88ff7a040acaf6bd48e1391012539b27e3a5333536a3bf40588da4835673",
560
+ structuralHash: "circle|circle|path:MHAVAH|path:MHAVAH",
561
+ elementCount: 4,
562
+ byteSize: 357,
563
+ related: [
564
+ "subtask",
565
+ "agent-thinking"
566
+ ],
567
+ addedIn: "0.1.0",
568
+ updatedIn: "0.1.0"
569
+ },
570
+ {
571
+ slug: "dataset",
572
+ category: "ai",
573
+ subcategory: "training",
574
+ name: "Dataset",
575
+ description: "A collection of records used to train or evaluate",
576
+ tags: [
577
+ "dataset",
578
+ "records",
579
+ "rows",
580
+ "corpus",
581
+ "samples",
582
+ "table"
583
+ ],
584
+ aliases: [],
585
+ keywords: [],
586
+ contributors: [],
587
+ deprecated: null,
588
+ componentName: "Dataset",
589
+ contentHash: "sha256:0b4a61cf961be5fc61125d19658a6d1b53d6efc0f03a552c902bb0d5d22cb179",
590
+ structuralHash: "path:MH|path:MV|rect",
591
+ elementCount: 3,
592
+ byteSize: 275,
593
+ related: [],
594
+ addedIn: "0.1.0",
595
+ updatedIn: "0.1.0"
596
+ },
597
+ {
598
+ slug: "document",
599
+ category: "rag",
600
+ subcategory: "ingestion",
601
+ name: "Document",
602
+ description: "A source file fed into a pipeline",
603
+ tags: [
604
+ "document",
605
+ "file",
606
+ "page",
607
+ "source",
608
+ "text",
609
+ "paper"
610
+ ],
611
+ aliases: [],
612
+ keywords: [],
613
+ contributors: [],
614
+ deprecated: null,
615
+ componentName: "Document",
616
+ contentHash: "sha256:36f49b7315e023ccadf6f8d867f4f058529651346ac0dc94543ff37a11b64873",
617
+ structuralHash: "path:MHLVAHAVA|path:MVH",
618
+ elementCount: 2,
619
+ byteSize: 281,
620
+ related: [],
621
+ addedIn: "0.1.0",
622
+ updatedIn: "0.1.0"
623
+ },
624
+ {
625
+ slug: "embedding",
626
+ category: "ai",
627
+ subcategory: "embedding",
628
+ name: "Embedding",
629
+ description: "Text turned into a vector of numbers",
630
+ tags: [
631
+ "embedding",
632
+ "vector",
633
+ "encode",
634
+ "representation",
635
+ "features",
636
+ "transform"
637
+ ],
638
+ aliases: [],
639
+ keywords: [],
640
+ contributors: [],
641
+ deprecated: null,
642
+ componentName: "Embedding",
643
+ contentHash: "sha256:53348386a8ec7a9599f71f9a5f5272bd0da1dc41c2234ec6597b3954b2370ccd",
644
+ structuralHash: "circle|circle|circle|path:MH|rect",
645
+ elementCount: 5,
646
+ byteSize: 359,
647
+ related: [],
648
+ addedIn: "0.1.0",
649
+ updatedIn: "0.1.0"
650
+ },
651
+ {
652
+ slug: "evaluation",
653
+ category: "ai",
654
+ subcategory: "evaluation",
655
+ name: "Evaluation",
656
+ description: "Scoring model output against expected results",
657
+ tags: [
658
+ "evaluation",
659
+ "eval",
660
+ "score",
661
+ "assess",
662
+ "check",
663
+ "grade"
664
+ ],
665
+ aliases: [],
666
+ keywords: [],
667
+ contributors: [],
668
+ deprecated: null,
669
+ componentName: "Evaluation",
670
+ contentHash: "sha256:a1fce4baedafbfe369dac971285d4d8b0894a715bef6964052e14c00953464d5",
671
+ structuralHash: "path:MH|path:MH|path:ML|path:ML",
672
+ elementCount: 4,
673
+ byteSize: 287,
674
+ related: [],
675
+ addedIn: "0.1.0",
676
+ updatedIn: "0.1.0"
677
+ },
678
+ {
679
+ slug: "fine-tuning",
680
+ category: "ai",
681
+ subcategory: "training",
682
+ name: "Fine Tuning",
683
+ description: "Adapting a trained model to a narrower task",
684
+ tags: [
685
+ "fine tuning",
686
+ "adapt",
687
+ "tune",
688
+ "adjust",
689
+ "specialise",
690
+ "lora"
691
+ ],
692
+ aliases: [],
693
+ keywords: [],
694
+ contributors: [],
695
+ deprecated: null,
696
+ componentName: "FineTuning",
697
+ contentHash: "sha256:eeb4831cc471c2bc3a6eda97b23efb3c341a11a5a029f17a12771cffad604be2",
698
+ structuralHash: "circle|path:MH|path:MVLLVZ",
699
+ elementCount: 3,
700
+ byteSize: 291,
701
+ related: [],
702
+ addedIn: "0.1.0",
703
+ updatedIn: "0.1.0"
704
+ },
705
+ {
706
+ slug: "function-call",
707
+ category: "agents",
708
+ subcategory: "tool-use",
709
+ name: "Function Call",
710
+ description: "Structured function invocation emitted by a model",
711
+ tags: [
712
+ "function",
713
+ "call",
714
+ "invoke",
715
+ "parentheses",
716
+ "arguments",
717
+ "tool use"
718
+ ],
719
+ aliases: [],
720
+ keywords: [],
721
+ contributors: [],
722
+ deprecated: null,
723
+ componentName: "FunctionCall",
724
+ contentHash: "sha256:fb31383551ba6cc9ae747afec982f5c5d054ce951a2ead7639a02bfe085794e8",
725
+ structuralHash: "circle|path:MA|path:MA",
726
+ elementCount: 3,
727
+ byteSize: 289,
728
+ related: [
729
+ "guardrail"
730
+ ],
731
+ addedIn: "0.1.0",
732
+ updatedIn: "0.1.0"
733
+ },
734
+ {
735
+ slug: "goal",
736
+ category: "agents",
737
+ subcategory: "planning",
738
+ name: "Goal",
739
+ description: "The outcome an agent is working toward",
740
+ tags: [
741
+ "goal",
742
+ "objective",
743
+ "target",
744
+ "flag",
745
+ "milestone",
746
+ "intent"
747
+ ],
748
+ aliases: [],
749
+ keywords: [],
750
+ contributors: [],
751
+ deprecated: null,
752
+ componentName: "Goal",
753
+ contentHash: "sha256:791bd9e08aec2350df93b6f5ab8b2b20d1f1258984b46250a7ab7e2d699c7c91",
754
+ structuralHash: "path:MHLH|path:MV",
755
+ elementCount: 2,
756
+ byteSize: 237,
757
+ related: [],
758
+ addedIn: "0.1.0",
759
+ updatedIn: "0.1.0"
760
+ },
761
+ {
762
+ slug: "guardrail",
763
+ category: "ai",
764
+ subcategory: "safety",
765
+ name: "Guardrail",
766
+ description: "A constraint that blocks unsafe model output",
767
+ tags: [
768
+ "guardrail",
769
+ "safety",
770
+ "block",
771
+ "constraint",
772
+ "shield",
773
+ "policy"
774
+ ],
775
+ aliases: [],
776
+ keywords: [],
777
+ contributors: [],
778
+ deprecated: null,
779
+ componentName: "Guardrail",
780
+ contentHash: "sha256:af141c380672daef8416fdb498bc300720afd1b7202344be85d2ff102621493f",
781
+ structuralHash: "path:MH|path:MVCVZ",
782
+ elementCount: 2,
783
+ byteSize: 272,
784
+ related: [
785
+ "model",
786
+ "training",
787
+ "llm",
788
+ "function-call"
789
+ ],
790
+ addedIn: "0.1.0",
791
+ updatedIn: "0.1.0"
792
+ },
793
+ {
794
+ slug: "human-approval",
795
+ category: "agents",
796
+ subcategory: "communication",
797
+ name: "Human Approval",
798
+ description: "A person signing off before an agent proceeds",
799
+ tags: [
800
+ "approval",
801
+ "human in the loop",
802
+ "sign off",
803
+ "confirm",
804
+ "review",
805
+ "consent"
806
+ ],
807
+ aliases: [],
808
+ keywords: [],
809
+ contributors: [],
810
+ deprecated: null,
811
+ componentName: "HumanApproval",
812
+ contentHash: "sha256:97eb881c18c4c7bce022c8ec9e20ebc3046f9557394620f4139ef19b44ccbe28",
813
+ structuralHash: "circle|path:MA|path:ML",
814
+ elementCount: 3,
815
+ byteSize: 287,
816
+ related: [],
817
+ addedIn: "0.1.0",
818
+ updatedIn: "0.1.0"
819
+ },
820
+ {
821
+ slug: "inference",
822
+ category: "ai",
823
+ subcategory: "inference",
824
+ name: "Inference",
825
+ description: "Running input through a model to get output",
826
+ tags: [
827
+ "inference",
828
+ "predict",
829
+ "forward pass",
830
+ "run",
831
+ "serve",
832
+ "throughput"
833
+ ],
834
+ aliases: [],
835
+ keywords: [],
836
+ contributors: [],
837
+ deprecated: null,
838
+ componentName: "Inference",
839
+ contentHash: "sha256:dbbb406bdce0de386964ff39c2900d6e6309a3e7b29ac01daa2f9fd028dfc8df",
840
+ structuralHash: "path:MH|path:MH|path:MVLVZ",
841
+ elementCount: 3,
842
+ byteSize: 276,
843
+ related: [
844
+ "tokenizer"
845
+ ],
846
+ addedIn: "0.1.0",
847
+ updatedIn: "0.1.0"
848
+ },
849
+ {
850
+ slug: "knowledge-base",
851
+ category: "rag",
852
+ subcategory: "knowledge",
853
+ name: "Knowledge Base",
854
+ description: "Curated body of documents a system can draw on",
855
+ tags: [
856
+ "knowledge",
857
+ "book",
858
+ "reference",
859
+ "corpus",
860
+ "docs",
861
+ "library"
862
+ ],
863
+ aliases: [
864
+ "kb"
865
+ ],
866
+ keywords: [],
867
+ contributors: [],
868
+ deprecated: null,
869
+ componentName: "KnowledgeBase",
870
+ contentHash: "sha256:c932b54d257b06f0d2b4fbc8fd196b62bea41433bca4cdd0e866ffdb8483f783",
871
+ structuralHash: "path:MV|path:MVL|path:MVL",
872
+ elementCount: 3,
873
+ byteSize: 265,
874
+ related: [],
875
+ addedIn: "0.1.0",
876
+ updatedIn: "0.1.0"
877
+ },
878
+ {
879
+ slug: "llm",
880
+ category: "ai",
881
+ subcategory: "model",
882
+ name: "LLM",
883
+ description: "A large language model",
884
+ tags: [
885
+ "llm",
886
+ "language model",
887
+ "text",
888
+ "generative",
889
+ "transformer",
890
+ "chat"
891
+ ],
892
+ aliases: [
893
+ "large-language-model"
894
+ ],
895
+ keywords: [],
896
+ contributors: [],
897
+ deprecated: null,
898
+ componentName: "Llm",
899
+ contentHash: "sha256:973dea8f2c54963995948ef1bc664c1f0a0f0091a375b02e226974754dcc2722",
900
+ structuralHash: "path:MH|path:MH|path:MVLVZ",
901
+ elementCount: 3,
902
+ byteSize: 264,
903
+ related: [
904
+ "model",
905
+ "training",
906
+ "guardrail"
907
+ ],
908
+ addedIn: "0.1.0",
909
+ updatedIn: "0.1.0"
910
+ },
911
+ {
912
+ slug: "mcp-capability",
913
+ category: "mcp",
914
+ subcategory: "transport",
915
+ name: "MCP Capability",
916
+ description: "What a server declares it can do during handshake",
917
+ tags: [
918
+ "capability",
919
+ "negotiate",
920
+ "declare",
921
+ "support",
922
+ "feature",
923
+ "handshake"
924
+ ],
925
+ aliases: [],
926
+ keywords: [],
927
+ contributors: [],
928
+ deprecated: null,
929
+ componentName: "McpCapability",
930
+ contentHash: "sha256:57ee94f8a4e07fae9256ad91d62b463f72f3c07db17007f7c342195be359c068",
931
+ structuralHash: "path:M|path:M|path:MH|rect",
932
+ elementCount: 4,
933
+ byteSize: 315,
934
+ related: [
935
+ "mcp-resource"
936
+ ],
937
+ addedIn: "0.1.0",
938
+ updatedIn: "0.1.0"
939
+ },
940
+ {
941
+ slug: "mcp-client",
942
+ category: "mcp",
943
+ subcategory: "client",
944
+ name: "MCP Client",
945
+ description: "An application that consumes what MCP servers expose",
946
+ tags: [
947
+ "client",
948
+ "consumer",
949
+ "host",
950
+ "connect",
951
+ "caller",
952
+ "application"
953
+ ],
954
+ aliases: [],
955
+ keywords: [],
956
+ contributors: [],
957
+ deprecated: null,
958
+ componentName: "McpClient",
959
+ contentHash: "sha256:ba18b62cc80ac70c6059ccc7828e0e5dc3153029a6247d8b83309f98d250c3ee",
960
+ structuralHash: "path:MH|path:MH|path:MH|rect",
961
+ elementCount: 4,
962
+ byteSize: 293,
963
+ related: [
964
+ "mcp-tool"
965
+ ],
966
+ addedIn: "0.1.0",
967
+ updatedIn: "0.1.0"
968
+ },
969
+ {
970
+ slug: "mcp-config",
971
+ category: "mcp",
972
+ subcategory: "registry",
973
+ name: "MCP Config",
974
+ description: "Settings that tell a client which servers to run",
975
+ tags: [
976
+ "config",
977
+ "settings",
978
+ "setup",
979
+ "options",
980
+ "manifest",
981
+ "preferences"
982
+ ],
983
+ aliases: [],
984
+ keywords: [],
985
+ contributors: [],
986
+ deprecated: null,
987
+ componentName: "McpConfig",
988
+ contentHash: "sha256:32b4872f41c36125d391c379af976fe510c66032b53b73828a068ef335799246",
989
+ structuralHash: "circle|circle|path:MH|path:MH|path:MH",
990
+ elementCount: 5,
991
+ byteSize: 307,
992
+ related: [
993
+ "token"
994
+ ],
995
+ addedIn: "0.1.0",
996
+ updatedIn: "0.1.0"
997
+ },
998
+ {
999
+ slug: "mcp-connection",
1000
+ category: "mcp",
1001
+ subcategory: "client",
1002
+ name: "MCP Connection",
1003
+ description: "An open link between a client and a server",
1004
+ tags: [
1005
+ "connection",
1006
+ "link",
1007
+ "session",
1008
+ "connected",
1009
+ "channel",
1010
+ "port"
1011
+ ],
1012
+ aliases: [],
1013
+ keywords: [],
1014
+ contributors: [],
1015
+ deprecated: null,
1016
+ componentName: "McpConnection",
1017
+ contentHash: "sha256:6ef058abd716f3e17d45578ef318a4357b374295f454efe940d2df822875745a",
1018
+ structuralHash: "path:MH|rect|rect",
1019
+ elementCount: 3,
1020
+ byteSize: 302,
1021
+ related: [
1022
+ "token"
1023
+ ],
1024
+ addedIn: "0.1.0",
1025
+ updatedIn: "0.1.0"
1026
+ },
1027
+ {
1028
+ slug: "mcp-prompt",
1029
+ category: "mcp",
1030
+ subcategory: "prompt",
1031
+ name: "MCP Prompt",
1032
+ description: "A reusable prompt template an MCP server exposes",
1033
+ tags: [
1034
+ "prompt",
1035
+ "template",
1036
+ "reusable",
1037
+ "expose",
1038
+ "message",
1039
+ "preset"
1040
+ ],
1041
+ aliases: [],
1042
+ keywords: [],
1043
+ contributors: [],
1044
+ deprecated: null,
1045
+ componentName: "McpPrompt",
1046
+ contentHash: "sha256:ff2bd78da460cdaf1058ef5e3b97bfc5bf0cc8e5f2d5d711112a51af05506483",
1047
+ structuralHash: "path:MH|path:MHLVLHLVLVZ",
1048
+ elementCount: 2,
1049
+ byteSize: 256,
1050
+ related: [],
1051
+ addedIn: "0.1.0",
1052
+ updatedIn: "0.1.0"
1053
+ },
1054
+ {
1055
+ slug: "mcp-resource",
1056
+ category: "mcp",
1057
+ subcategory: "resource",
1058
+ name: "MCP Resource",
1059
+ description: "Data an MCP server exposes for clients to read",
1060
+ tags: [
1061
+ "resource",
1062
+ "document",
1063
+ "expose",
1064
+ "read",
1065
+ "context source",
1066
+ "uri"
1067
+ ],
1068
+ aliases: [],
1069
+ keywords: [],
1070
+ contributors: [],
1071
+ deprecated: null,
1072
+ componentName: "McpResource",
1073
+ contentHash: "sha256:5981fa56d151c2f0089cfbaa1beed2cca7d338165777f8b3202abaedc050fd45",
1074
+ structuralHash: "path:MH|path:MH|path:MH|rect",
1075
+ elementCount: 4,
1076
+ byteSize: 303,
1077
+ related: [
1078
+ "mcp-capability"
1079
+ ],
1080
+ addedIn: "0.1.0",
1081
+ updatedIn: "0.1.0"
1082
+ },
1083
+ {
1084
+ slug: "mcp-server",
1085
+ category: "mcp",
1086
+ subcategory: "server",
1087
+ name: "MCP Server",
1088
+ description: "A server that exposes resources, tools, and prompts over MCP",
1089
+ tags: [
1090
+ "server",
1091
+ "host",
1092
+ "expose",
1093
+ "endpoint",
1094
+ "provider",
1095
+ "protocol"
1096
+ ],
1097
+ aliases: [],
1098
+ keywords: [],
1099
+ contributors: [],
1100
+ deprecated: null,
1101
+ componentName: "McpServer",
1102
+ contentHash: "sha256:aea92db44c15e7b13caad99f1752847fb5c22ea181d6eaa4cf8e5c229faee5bd",
1103
+ structuralHash: "path:MH|path:MH|path:MH|rect",
1104
+ elementCount: 4,
1105
+ byteSize: 296,
1106
+ related: [],
1107
+ addedIn: "0.1.0",
1108
+ updatedIn: "0.1.0"
1109
+ },
1110
+ {
1111
+ slug: "mcp-tool",
1112
+ category: "mcp",
1113
+ subcategory: "tool",
1114
+ name: "MCP Tool",
1115
+ description: "Capability an MCP server exposes for clients to invoke",
1116
+ tags: [
1117
+ "tool",
1118
+ "capability",
1119
+ "plugin",
1120
+ "puzzle",
1121
+ "extension",
1122
+ "invoke"
1123
+ ],
1124
+ aliases: [],
1125
+ keywords: [],
1126
+ contributors: [],
1127
+ deprecated: null,
1128
+ componentName: "McpTool",
1129
+ contentHash: "sha256:258fe85e4557a7d7b304cad08c27eb676d369cb0bc66b07191da8d6633babcf1",
1130
+ structuralHash: "path:MVHVAVHAZ",
1131
+ elementCount: 1,
1132
+ byteSize: 246,
1133
+ related: [
1134
+ "mcp-tool-call",
1135
+ "mcp-client"
1136
+ ],
1137
+ addedIn: "0.1.0",
1138
+ updatedIn: "0.1.0"
1139
+ },
1140
+ {
1141
+ slug: "mcp-tool-call",
1142
+ category: "mcp",
1143
+ subcategory: "tool",
1144
+ name: "MCP Tool Call",
1145
+ description: "Invoking a tool an MCP server exposes",
1146
+ tags: [
1147
+ "tool call",
1148
+ "invoke",
1149
+ "execute",
1150
+ "run",
1151
+ "request",
1152
+ "dispatch"
1153
+ ],
1154
+ aliases: [],
1155
+ keywords: [],
1156
+ contributors: [],
1157
+ deprecated: null,
1158
+ componentName: "McpToolCall",
1159
+ contentHash: "sha256:73d4e6f7a4c629dc577a45d06b9177abcc657ad5eca2cbf64fb630efc6801ad8",
1160
+ structuralHash: "path:MVHVAVHAZ|path:MZ",
1161
+ elementCount: 2,
1162
+ byteSize: 272,
1163
+ related: [
1164
+ "mcp-tool"
1165
+ ],
1166
+ addedIn: "0.1.0",
1167
+ updatedIn: "0.1.0"
1168
+ },
1169
+ {
1170
+ slug: "memory",
1171
+ category: "agents",
1172
+ subcategory: "memory",
1173
+ name: "Memory",
1174
+ description: "Memory an agent writes to and reads back",
1175
+ tags: [
1176
+ "memory",
1177
+ "recall",
1178
+ "state",
1179
+ "store",
1180
+ "remember",
1181
+ "cells"
1182
+ ],
1183
+ aliases: [],
1184
+ keywords: [],
1185
+ contributors: [],
1186
+ deprecated: null,
1187
+ componentName: "Memory",
1188
+ contentHash: "sha256:82f75d4f980dfed62d1a24b1b9ba5a94833b96232be3a565832a38b0ffbc905a",
1189
+ structuralHash: "path:MV|path:MV|path:MV|rect",
1190
+ elementCount: 4,
1191
+ byteSize: 303,
1192
+ related: [],
1193
+ addedIn: "0.1.0",
1194
+ updatedIn: "0.1.0"
1195
+ },
1196
+ {
1197
+ slug: "model",
1198
+ category: "ai",
1199
+ subcategory: "model",
1200
+ name: "Model",
1201
+ description: "A machine learning model that turns input into output",
1202
+ tags: [
1203
+ "model",
1204
+ "ml",
1205
+ "neural network",
1206
+ "weights",
1207
+ "component",
1208
+ "inference"
1209
+ ],
1210
+ aliases: [],
1211
+ keywords: [],
1212
+ contributors: [],
1213
+ deprecated: null,
1214
+ componentName: "Model",
1215
+ contentHash: "sha256:cf3de81aa4302f3057be7677ab6d603b5995ce3d887e1eede1c074ac0449b200",
1216
+ structuralHash: "path:MVLVZ",
1217
+ elementCount: 1,
1218
+ byteSize: 224,
1219
+ related: [
1220
+ "llm",
1221
+ "training",
1222
+ "guardrail"
1223
+ ],
1224
+ addedIn: "0.1.0",
1225
+ updatedIn: "0.1.0"
1226
+ },
1227
+ {
1228
+ slug: "multi-agent",
1229
+ category: "agents",
1230
+ subcategory: "multi-agent",
1231
+ name: "Multi Agent",
1232
+ description: "Several agents working on the same task",
1233
+ tags: [
1234
+ "multi agent",
1235
+ "team",
1236
+ "swarm",
1237
+ "group",
1238
+ "cluster",
1239
+ "crew"
1240
+ ],
1241
+ aliases: [],
1242
+ keywords: [],
1243
+ contributors: [],
1244
+ deprecated: null,
1245
+ componentName: "MultiAgent",
1246
+ contentHash: "sha256:850573f4dc92522a8aa741d751a4c19ba74a0a43cec6c13c2fff2d5fe480b74b",
1247
+ structuralHash: "path:MHLVLHLVZ|path:MHLVLHLVZ|path:MHLVLHLVZ",
1248
+ elementCount: 3,
1249
+ byteSize: 338,
1250
+ related: [],
1251
+ addedIn: "0.1.0",
1252
+ updatedIn: "0.1.0"
1253
+ },
1254
+ {
1255
+ slug: "multimodal",
1256
+ category: "ai",
1257
+ subcategory: "multimodal",
1258
+ name: "Multimodal",
1259
+ description: "A model that takes more than one kind of input",
1260
+ tags: [
1261
+ "multimodal",
1262
+ "vision",
1263
+ "audio",
1264
+ "mixed input",
1265
+ "cross modal",
1266
+ "fusion"
1267
+ ],
1268
+ aliases: [],
1269
+ keywords: [],
1270
+ contributors: [],
1271
+ deprecated: null,
1272
+ componentName: "Multimodal",
1273
+ contentHash: "sha256:37a7e0d49c9c6b14edaed5fb9cec750763883f6e2562eee54a260bec94dafb50",
1274
+ structuralHash: "circle|path:MVLVZ|rect",
1275
+ elementCount: 3,
1276
+ byteSize: 300,
1277
+ related: [],
1278
+ addedIn: "0.1.0",
1279
+ updatedIn: "0.1.0"
1280
+ },
1281
+ {
1282
+ slug: "plan",
1283
+ category: "agents",
1284
+ subcategory: "planning",
1285
+ name: "Plan",
1286
+ description: "An ordered set of steps an agent intends to take",
1287
+ tags: [
1288
+ "plan",
1289
+ "steps",
1290
+ "checklist",
1291
+ "todo",
1292
+ "sequence",
1293
+ "tasks"
1294
+ ],
1295
+ aliases: [],
1296
+ keywords: [],
1297
+ contributors: [],
1298
+ deprecated: null,
1299
+ componentName: "Plan",
1300
+ contentHash: "sha256:c2f4f80cd42b04927090decb8809a12d8a07f12f5b8e7088b7aa696080477156",
1301
+ structuralHash: "path:MH|path:MH|path:MH|rect|rect|rect",
1302
+ elementCount: 6,
1303
+ byteSize: 396,
1304
+ related: [],
1305
+ addedIn: "0.1.0",
1306
+ updatedIn: "0.1.0"
1307
+ },
1308
+ {
1309
+ slug: "prompt",
1310
+ category: "ai",
1311
+ subcategory: "prompt",
1312
+ name: "Prompt",
1313
+ description: "An instruction sent to a model",
1314
+ tags: [
1315
+ "prompt",
1316
+ "instruction",
1317
+ "input",
1318
+ "query",
1319
+ "command",
1320
+ "ask"
1321
+ ],
1322
+ aliases: [],
1323
+ keywords: [],
1324
+ contributors: [],
1325
+ deprecated: null,
1326
+ componentName: "Prompt",
1327
+ contentHash: "sha256:94a53d183366de5842ca9d7b56fa27268d7ef86af10e1be47f456bb1ac52f019",
1328
+ structuralHash: "path:M|path:MHLVLHLVHLVZ",
1329
+ elementCount: 2,
1330
+ byteSize: 266,
1331
+ related: [],
1332
+ addedIn: "0.1.0",
1333
+ updatedIn: "0.1.0"
1334
+ },
1335
+ {
1336
+ slug: "reflection",
1337
+ category: "agents",
1338
+ subcategory: "reflection",
1339
+ name: "Reflection",
1340
+ description: "An agent reviewing its own output before continuing",
1341
+ tags: [
1342
+ "reflection",
1343
+ "self review",
1344
+ "critique",
1345
+ "introspection",
1346
+ "mirror",
1347
+ "check"
1348
+ ],
1349
+ aliases: [],
1350
+ keywords: [],
1351
+ contributors: [],
1352
+ deprecated: null,
1353
+ componentName: "Reflection",
1354
+ contentHash: "sha256:fbd0df7a39414d376c45d33f2ec82bae9df85298d408aff05eeb4ed3dae29fe2",
1355
+ structuralHash: "circle|path:MA|path:MH",
1356
+ elementCount: 3,
1357
+ byteSize: 270,
1358
+ related: [],
1359
+ addedIn: "0.1.0",
1360
+ updatedIn: "0.1.0"
1361
+ },
1362
+ {
1363
+ slug: "reranker",
1364
+ category: "rag",
1365
+ subcategory: "ranking",
1366
+ name: "Reranker",
1367
+ description: "Model that reorders search results by relevance",
1368
+ tags: [
1369
+ "rerank",
1370
+ "reorder",
1371
+ "relevance",
1372
+ "ranking",
1373
+ "promote",
1374
+ "cross encoder"
1375
+ ],
1376
+ aliases: [],
1377
+ keywords: [],
1378
+ contributors: [],
1379
+ deprecated: null,
1380
+ componentName: "Reranker",
1381
+ contentHash: "sha256:9ddf9a320bef45d9bdc98a5cfb6e0f7a16465170257c150d1516678b75fd8e22",
1382
+ structuralHash: "path:M|path:MH|path:MH|path:MH|path:MV",
1383
+ elementCount: 5,
1384
+ byteSize: 297,
1385
+ related: [
1386
+ "tokenizer"
1387
+ ],
1388
+ addedIn: "0.1.0",
1389
+ updatedIn: "0.1.0"
1390
+ },
1391
+ {
1392
+ slug: "retriever",
1393
+ category: "rag",
1394
+ subcategory: "retrieval",
1395
+ name: "Retriever",
1396
+ description: "Component that pulls relevant documents from a store",
1397
+ tags: [
1398
+ "retriever",
1399
+ "pull",
1400
+ "fetch",
1401
+ "attract",
1402
+ "magnet",
1403
+ "relevant"
1404
+ ],
1405
+ aliases: [],
1406
+ keywords: [],
1407
+ contributors: [],
1408
+ deprecated: null,
1409
+ componentName: "Retriever",
1410
+ contentHash: "sha256:1cfa2f4ef96aa82c287273707905589c5b11c6165605802944abc67c512c8498",
1411
+ structuralHash: "path:MH|path:MH|path:MVAV",
1412
+ elementCount: 3,
1413
+ byteSize: 262,
1414
+ related: [],
1415
+ addedIn: "0.1.0",
1416
+ updatedIn: "0.1.0"
1417
+ },
1418
+ {
1419
+ slug: "semantic-search",
1420
+ category: "rag",
1421
+ subcategory: "retrieval",
1422
+ name: "Semantic Search",
1423
+ description: "Finding results by meaning rather than exact words",
1424
+ tags: [
1425
+ "semantic search",
1426
+ "meaning",
1427
+ "similarity",
1428
+ "nearest",
1429
+ "lookup",
1430
+ "embedding search"
1431
+ ],
1432
+ aliases: [],
1433
+ keywords: [],
1434
+ contributors: [],
1435
+ deprecated: null,
1436
+ componentName: "SemanticSearch",
1437
+ contentHash: "sha256:1e3ebf74775f5901448b013c841f8eccb483fe14451e1630c0e52a0d3d0c4530",
1438
+ structuralHash: "circle|circle|circle|path:M",
1439
+ elementCount: 4,
1440
+ byteSize: 310,
1441
+ related: [],
1442
+ addedIn: "0.1.0",
1443
+ updatedIn: "0.1.0"
1444
+ },
1445
+ {
1446
+ slug: "source-citation",
1447
+ category: "rag",
1448
+ subcategory: "grounding",
1449
+ name: "Source Citation",
1450
+ description: "A pointer back to where an answer came from",
1451
+ tags: [
1452
+ "citation",
1453
+ "quote",
1454
+ "source",
1455
+ "reference",
1456
+ "attribution",
1457
+ "provenance"
1458
+ ],
1459
+ aliases: [],
1460
+ keywords: [],
1461
+ contributors: [],
1462
+ deprecated: null,
1463
+ componentName: "SourceCitation",
1464
+ contentHash: "sha256:143b8edd8e5b83098f34300b20a792028b8893bb9bf0c1d60370ce5c9811e4ff",
1465
+ structuralHash: "path:MVAHVAZ|path:MVAHVAZ",
1466
+ elementCount: 2,
1467
+ byteSize: 293,
1468
+ related: [
1469
+ "token"
1470
+ ],
1471
+ addedIn: "0.1.0",
1472
+ updatedIn: "0.1.0"
1473
+ },
1474
+ {
1475
+ slug: "subtask",
1476
+ category: "agents",
1477
+ subcategory: "planning",
1478
+ name: "Subtask",
1479
+ description: "A smaller piece of work nested inside a larger one",
1480
+ tags: [
1481
+ "subtask",
1482
+ "nested",
1483
+ "child",
1484
+ "breakdown",
1485
+ "sub step",
1486
+ "decompose"
1487
+ ],
1488
+ aliases: [],
1489
+ keywords: [],
1490
+ contributors: [],
1491
+ deprecated: null,
1492
+ componentName: "Subtask",
1493
+ contentHash: "sha256:37b109b2e402191cb5398d888a0039e8fb6513de93626ad60fdd53ff90232612",
1494
+ structuralHash: "rect|rect",
1495
+ elementCount: 2,
1496
+ byteSize: 286,
1497
+ related: [
1498
+ "context-window"
1499
+ ],
1500
+ addedIn: "0.1.0",
1501
+ updatedIn: "0.1.0"
1502
+ },
1503
+ {
1504
+ slug: "system-prompt",
1505
+ category: "ai",
1506
+ subcategory: "prompt",
1507
+ name: "System Prompt",
1508
+ description: "Standing instructions that sit above the conversation",
1509
+ tags: [
1510
+ "system prompt",
1511
+ "instruction",
1512
+ "role",
1513
+ "preamble",
1514
+ "persona",
1515
+ "rules"
1516
+ ],
1517
+ aliases: [],
1518
+ keywords: [],
1519
+ contributors: [],
1520
+ deprecated: null,
1521
+ componentName: "SystemPrompt",
1522
+ contentHash: "sha256:12c7c7a064c163b60a5ea37f00d0fa17206a45497dddc16945cdc121f5ce93db",
1523
+ structuralHash: "path:M|path:MH|path:MHLVLHLVHLVZ",
1524
+ elementCount: 3,
1525
+ byteSize: 287,
1526
+ related: [],
1527
+ addedIn: "0.1.0",
1528
+ updatedIn: "0.1.0"
1529
+ },
1530
+ {
1531
+ slug: "temperature",
1532
+ category: "ai",
1533
+ subcategory: "inference",
1534
+ name: "Temperature",
1535
+ description: "How much randomness a model allows in its output",
1536
+ tags: [
1537
+ "temperature",
1538
+ "randomness",
1539
+ "sampling",
1540
+ "creativity",
1541
+ "variance",
1542
+ "parameter"
1543
+ ],
1544
+ aliases: [],
1545
+ keywords: [],
1546
+ contributors: [],
1547
+ deprecated: null,
1548
+ componentName: "Temperature",
1549
+ contentHash: "sha256:655f4b39d5717f955718d815ad43fba09ba8a4d0f7ad1a3b5ed08313fe57e9f9",
1550
+ structuralHash: "path:MV|path:MVAVA",
1551
+ elementCount: 2,
1552
+ byteSize: 262,
1553
+ related: [],
1554
+ addedIn: "0.1.0",
1555
+ updatedIn: "0.1.0"
1556
+ },
1557
+ {
1558
+ slug: "token",
1559
+ category: "ai",
1560
+ subcategory: "token",
1561
+ name: "Token",
1562
+ description: "Continuous text split into discrete units",
1563
+ tags: [
1564
+ "token",
1565
+ "split",
1566
+ "unit",
1567
+ "text",
1568
+ "segment",
1569
+ "tokenize"
1570
+ ],
1571
+ aliases: [],
1572
+ keywords: [],
1573
+ contributors: [],
1574
+ deprecated: null,
1575
+ componentName: "Token",
1576
+ contentHash: "sha256:662af51c91436cb0332dca87485f194e610030fbe3be621bf287fdf0b36c6ace",
1577
+ structuralHash: "path:MH|path:MH|path:MH|path:MH",
1578
+ elementCount: 4,
1579
+ byteSize: 267,
1580
+ related: [
1581
+ "mcp-config",
1582
+ "mcp-connection",
1583
+ "source-citation"
1584
+ ],
1585
+ addedIn: "0.1.0",
1586
+ updatedIn: "0.1.0"
1587
+ },
1588
+ {
1589
+ slug: "tokenizer",
1590
+ category: "ai",
1591
+ subcategory: "token",
1592
+ name: "Tokenizer",
1593
+ description: "The component that splits text into tokens",
1594
+ tags: [
1595
+ "tokenizer",
1596
+ "split",
1597
+ "encode",
1598
+ "segment",
1599
+ "parse",
1600
+ "fan out"
1601
+ ],
1602
+ aliases: [],
1603
+ keywords: [],
1604
+ contributors: [],
1605
+ deprecated: null,
1606
+ componentName: "Tokenizer",
1607
+ contentHash: "sha256:ffc7c34f4275db1e5801941099519c6dda385f1a762f52d23c878950767d85c9",
1608
+ structuralHash: "path:MH|path:MH|path:MH|path:MH|path:MV",
1609
+ elementCount: 5,
1610
+ byteSize: 285,
1611
+ related: [
1612
+ "reranker",
1613
+ "inference"
1614
+ ],
1615
+ addedIn: "0.1.0",
1616
+ updatedIn: "0.1.0"
1617
+ },
1618
+ {
1619
+ slug: "training",
1620
+ category: "ai",
1621
+ subcategory: "training",
1622
+ name: "Training",
1623
+ description: "Teaching a model from data until it improves",
1624
+ tags: [
1625
+ "training",
1626
+ "learn",
1627
+ "fit",
1628
+ "improve",
1629
+ "epoch",
1630
+ "optimise"
1631
+ ],
1632
+ aliases: [],
1633
+ keywords: [],
1634
+ contributors: [],
1635
+ deprecated: null,
1636
+ componentName: "Training",
1637
+ contentHash: "sha256:f00d230f5ef815b4ffe085c7dd0a21e04791bdcff7573b6a1c601c6c816739b6",
1638
+ structuralHash: "path:ML|path:MVLVZ",
1639
+ elementCount: 2,
1640
+ byteSize: 259,
1641
+ related: [
1642
+ "model",
1643
+ "llm",
1644
+ "guardrail"
1645
+ ],
1646
+ addedIn: "0.1.0",
1647
+ updatedIn: "0.1.0"
1648
+ },
1649
+ {
1650
+ slug: "vector",
1651
+ category: "ai",
1652
+ subcategory: "embedding",
1653
+ name: "Vector",
1654
+ description: "An ordered list of numbers representing meaning",
1655
+ tags: [
1656
+ "vector",
1657
+ "array",
1658
+ "column",
1659
+ "numbers",
1660
+ "coordinates",
1661
+ "features"
1662
+ ],
1663
+ aliases: [],
1664
+ keywords: [],
1665
+ contributors: [],
1666
+ deprecated: null,
1667
+ componentName: "Vector",
1668
+ contentHash: "sha256:6625688041e799a19a7bd66e84fa2d0b2ae48da900c76ddd652ff7dd5453a38b",
1669
+ structuralHash: "circle|circle|circle|path:MHVH|path:MHVH",
1670
+ elementCount: 5,
1671
+ byteSize: 334,
1672
+ related: [],
1673
+ addedIn: "0.1.0",
1674
+ updatedIn: "0.1.0"
1675
+ },
1676
+ {
1677
+ slug: "vector-database",
1678
+ category: "rag",
1679
+ subcategory: "vector",
1680
+ name: "Vector Database",
1681
+ description: "Database for storing and searching vectors",
1682
+ tags: [
1683
+ "vector",
1684
+ "database",
1685
+ "store",
1686
+ "embedding",
1687
+ "index",
1688
+ "similarity"
1689
+ ],
1690
+ aliases: [
1691
+ "vector-store"
1692
+ ],
1693
+ keywords: [],
1694
+ contributors: [],
1695
+ deprecated: null,
1696
+ componentName: "VectorDatabase",
1697
+ contentHash: "sha256:3249ab09fa2c35700b2d1c061d507ba52e78b7d88fc38de97c3431b40f8291a7",
1698
+ structuralHash: "ellipse|path:MH|path:MH|path:MH|path:MVCSV",
1699
+ elementCount: 5,
1700
+ byteSize: 360,
1701
+ related: [],
1702
+ addedIn: "0.1.0",
1703
+ updatedIn: "0.1.0"
1704
+ }
1705
+ ]
1706
+ };
1707
+
1708
+ // ../shared/src/search.ts
1709
+ var FOCUS = /* @__PURE__ */ new Set(["ai", "agents", "mcp", "rag"]);
1710
+ var normalizeQuery = (q) => q.trim().toLowerCase().replace(/[\s_]+/g, "-");
1711
+ function scoreOne(i, q) {
1712
+ const name = i.name.toLowerCase();
1713
+ const aliases = i.aliases ?? [];
1714
+ if (i.slug === q) return { score: 1e3, matched: "exact name" };
1715
+ if (aliases.includes(q)) return { score: 900, matched: "exact alias" };
1716
+ if (i.slug.startsWith(q)) return { score: 800 - i.slug.length * 2, matched: "name starts with" };
1717
+ if (name.startsWith(q)) return { score: 700 - name.length * 2, matched: "name starts with" };
1718
+ if (i.slug.split("-").some((w) => w.startsWith(q))) return { score: 600, matched: "word in name" };
1719
+ const exactTag = i.tags.find((t) => t === q);
1720
+ if (exactTag) return { score: 500, matched: `tag \u201C${exactTag}\u201D` };
1721
+ const prefixTag = i.tags.find((t) => t.startsWith(q));
1722
+ if (prefixTag) return { score: 400, matched: `tag \u201C${prefixTag}\u201D` };
1723
+ if (name.includes(q) || i.slug.includes(q)) return { score: 300, matched: "name contains" };
1724
+ const looseTag = i.tags.find((t) => t.includes(q));
1725
+ if (looseTag) return { score: 200, matched: `tag \u201C${looseTag}\u201D` };
1726
+ if (i.description.toLowerCase().includes(q)) return { score: 120, matched: "description" };
1727
+ return { score: 0, matched: "" };
1728
+ }
1729
+ function searchIcons(icons2, query, opts = {}) {
1730
+ const q = normalizeQuery(query);
1731
+ const pool = opts.category ? icons2.filter((i) => i.category === opts.category) : icons2;
1732
+ if (!q) return [];
1733
+ const words = q.split("-").filter(Boolean);
1734
+ const hits = [];
1735
+ for (const icon of pool) {
1736
+ const whole = scoreOne(icon, q);
1737
+ let score = whole.score;
1738
+ let matched = whole.matched;
1739
+ if (!score && words.length > 1) {
1740
+ const parts = words.map((w) => scoreOne(icon, w));
1741
+ if (parts.every((p) => p.score > 0)) {
1742
+ score = Math.round(parts.reduce((a, p) => a + p.score, 0) / words.length);
1743
+ matched = `all terms \u2014 ${parts[0].matched}`;
1744
+ }
1745
+ }
1746
+ if (!score) continue;
1747
+ if (FOCUS.has(icon.category)) score += 50;
1748
+ score -= Math.round(icon.slug.length / 4);
1749
+ hits.push({ icon, score, matched });
1750
+ }
1751
+ hits.sort((a, b) => b.score - a.score || a.icon.slug.localeCompare(b.icon.slug));
1752
+ return opts.limit ? hits.slice(0, opts.limit) : hits;
1753
+ }
1754
+ function editDistance(a, b, cap = 4) {
1755
+ if (Math.abs(a.length - b.length) > cap) return cap + 1;
1756
+ let prev = Array.from({ length: b.length + 1 }, (_, j) => j);
1757
+ for (let i = 1; i <= a.length; i++) {
1758
+ const cur = [i];
1759
+ for (let j = 1; j <= b.length; j++)
1760
+ cur[j] = Math.min(prev[j] + 1, cur[j - 1] + 1, prev[j - 1] + (a[i - 1] === b[j - 1] ? 0 : 1));
1761
+ prev = cur;
1762
+ }
1763
+ return prev[b.length];
1764
+ }
1765
+ function suggest(icons2, query, limit = 6) {
1766
+ const q = normalizeQuery(query);
1767
+ if (q.length < 3) return [];
1768
+ return icons2.map((i) => ({ i, d: Math.min(editDistance(q, i.slug), ...i.tags.map((t) => editDistance(q, t))) })).filter((x) => x.d <= 3).sort((a, b) => a.d - b.d).slice(0, limit).map((x) => x.i);
1769
+ }
1770
+
1771
+ // src/data.ts
1772
+ var version = metadata_default.version;
1773
+ var icons = metadata_default.icons;
1774
+ var categories = metadata_default.categories;
1775
+ var bySlug = new Map(icons.map((i) => [i.slug, i]));
1776
+ for (const i of icons) for (const a of i.aliases ?? []) bySlug.set(a, i);
1777
+ var find = (slug) => bySlug.get(slug.trim().toLowerCase());
1778
+ var search = (q, o) => searchIcons(icons, q, o);
1779
+ var nearest = (q) => suggest(icons, q);
1780
+ var inCategory = (c, sub) => icons.filter((i) => i.category === c && (!sub || i.subcategory === sub));
1781
+ function snippets(icon, size = 24) {
1782
+ return {
1783
+ import: `import { ${icon.componentName} } from "@iconmind/react";`,
1784
+ react: size === 24 ? `<${icon.componentName} />` : `<${icon.componentName} size={${size}} />`,
1785
+ html: `<svg width="${size}" height="${size}" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><use href="sprite.svg#im-${icon.slug}"/></svg>`
1786
+ };
1787
+ }
1788
+
1789
+ // src/resources.ts
1790
+ function registerResources(server2) {
1791
+ server2.setRequestHandler(ListResourcesRequestSchema, async () => ({
1792
+ resources: [
1793
+ { uri: "category://index", name: "Categories", description: "Every category with its counts", mimeType: "application/json" },
1794
+ { uri: "metadata://stats", name: "Set statistics", description: "Version and coverage", mimeType: "application/json" },
1795
+ ...categories.map((c) => ({
1796
+ uri: `category://${c.slug}`,
1797
+ name: `${c.name} icons`,
1798
+ description: `${c.count} icons in ${c.slug}`,
1799
+ mimeType: "application/json"
1800
+ }))
1801
+ // metadata://all is readable but deliberately not advertised: it is large enough
1802
+ // to crowd out a context window, and search_icon answers the same questions.
1803
+ ]
1804
+ }));
1805
+ server2.setRequestHandler(ReadResourceRequestSchema, async (req) => {
1806
+ const uri = req.params.uri;
1807
+ const body = (data) => ({
1808
+ contents: [{ uri, mimeType: "application/json", text: JSON.stringify(data, null, 2) }]
1809
+ });
1810
+ if (uri === "category://index") return body(categories);
1811
+ if (uri === "metadata://stats") {
1812
+ return body({
1813
+ version,
1814
+ total: icons.length,
1815
+ byCategory: Object.fromEntries(categories.map((c) => [c.slug, c.count]))
1816
+ });
1817
+ }
1818
+ if (uri === "metadata://all") return body({ version, icons });
1819
+ const cat = /^category:\/\/(.+)$/.exec(uri);
1820
+ if (cat) return body(inCategory(cat[1]));
1821
+ const meta = /^icon:\/\/(.+)\/meta$/.exec(uri);
1822
+ if (meta) {
1823
+ const icon = find(meta[1]);
1824
+ if (!icon) throw new Error(`No icon '${meta[1]}'`);
1825
+ return body(icon);
1826
+ }
1827
+ const one = /^icon:\/\/(.+)$/.exec(uri);
1828
+ if (one) {
1829
+ const icon = find(one[1]);
1830
+ if (!icon) throw new Error(`No icon '${one[1]}'`);
1831
+ return body(icon);
1832
+ }
1833
+ throw new Error(`Unknown resource: ${uri}`);
1834
+ });
1835
+ }
1836
+
1837
+ // src/tools.ts
1838
+ import { CallToolRequestSchema, ListToolsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
1839
+ var CATEGORY_ENUM = categories.map((c) => c.slug);
1840
+ var TOOLS = [
1841
+ {
1842
+ name: "search_icon",
1843
+ description: "Search IconMind icons by keyword, concept, or description. Use this before writing any UI code that needs an icon, so you pick one that actually exists instead of guessing a name.",
1844
+ inputSchema: {
1845
+ type: "object",
1846
+ properties: {
1847
+ query: { type: "string", description: "Keyword or concept, e.g. 'vector database', 'agent memory'" },
1848
+ category: { type: "string", enum: CATEGORY_ENUM, description: "Restrict to one domain" },
1849
+ limit: { type: "integer", default: 10, maximum: 50 }
1850
+ },
1851
+ required: ["query"]
1852
+ }
1853
+ },
1854
+ {
1855
+ name: "get_icon",
1856
+ description: "Fetch one icon by its exact slug: metadata plus paste-ready React and HTML.",
1857
+ inputSchema: {
1858
+ type: "object",
1859
+ properties: {
1860
+ slug: { type: "string" },
1861
+ size: { type: "integer", default: 24 }
1862
+ },
1863
+ required: ["slug"]
1864
+ }
1865
+ },
1866
+ {
1867
+ name: "list_category",
1868
+ description: "List icons in a category, optionally filtered by subcategory. With no arguments, returns the categories themselves.",
1869
+ inputSchema: {
1870
+ type: "object",
1871
+ properties: {
1872
+ category: { type: "string", enum: CATEGORY_ENUM },
1873
+ subcategory: { type: "string" },
1874
+ limit: { type: "integer", default: 50, maximum: 200 }
1875
+ }
1876
+ }
1877
+ },
1878
+ {
1879
+ name: "get_icon_code",
1880
+ description: "Generate one combined import plus usage for several icons at once. Prefer this over repeated get_icon calls when building a component that needs more than one.",
1881
+ inputSchema: {
1882
+ type: "object",
1883
+ properties: {
1884
+ slugs: { type: "array", items: { type: "string" }, maxItems: 20 },
1885
+ framework: { type: "string", enum: ["react", "html"], default: "react" }
1886
+ },
1887
+ required: ["slugs"]
1888
+ }
1889
+ }
1890
+ ];
1891
+ var json = (data) => ({ content: [{ type: "text", text: JSON.stringify(data, null, 2) }] });
1892
+ function registerTools(server2) {
1893
+ server2.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
1894
+ server2.setRequestHandler(CallToolRequestSchema, async (req) => {
1895
+ const a = req.params.arguments ?? {};
1896
+ switch (req.params.name) {
1897
+ case "search_icon": {
1898
+ const query = String(a["query"] ?? "");
1899
+ const hits = search(query, {
1900
+ category: a["category"] ? String(a["category"]) : void 0,
1901
+ limit: Number(a["limit"] ?? 10)
1902
+ });
1903
+ if (!hits.length) {
1904
+ return json({
1905
+ query,
1906
+ count: 0,
1907
+ suggestions: nearest(query).map((i) => i.slug),
1908
+ hint: "Nothing matched. Try a broader term, or say so rather than inventing an icon name."
1909
+ });
1910
+ }
1911
+ return json({
1912
+ query,
1913
+ count: hits.length,
1914
+ results: hits.map(({ icon, score, matched }) => ({
1915
+ slug: icon.slug,
1916
+ name: icon.name,
1917
+ category: icon.category,
1918
+ description: icon.description,
1919
+ score,
1920
+ matched,
1921
+ ...snippets(icon)
1922
+ }))
1923
+ });
1924
+ }
1925
+ case "get_icon": {
1926
+ const slug = String(a["slug"] ?? "");
1927
+ const icon = find(slug);
1928
+ if (!icon) {
1929
+ return json({
1930
+ found: false,
1931
+ slug,
1932
+ suggestions: nearest(slug).map((i) => i.slug),
1933
+ hint: "Slug not found. Use search_icon for a free-text search."
1934
+ });
1935
+ }
1936
+ return json({
1937
+ found: true,
1938
+ ...icon,
1939
+ ...snippets(icon, Number(a["size"] ?? 24))
1940
+ });
1941
+ }
1942
+ case "list_category": {
1943
+ const category = a["category"] ? String(a["category"]) : void 0;
1944
+ if (!category) {
1945
+ return json({
1946
+ categories: categories.map((c) => ({
1947
+ slug: c.slug,
1948
+ name: c.name,
1949
+ count: c.count,
1950
+ subcategories: c.subcategories.map((s) => s.slug)
1951
+ }))
1952
+ });
1953
+ }
1954
+ const sub = a["subcategory"] ? String(a["subcategory"]) : void 0;
1955
+ const list = inCategory(category, sub).slice(0, Number(a["limit"] ?? 50));
1956
+ return json({
1957
+ category,
1958
+ subcategory: sub,
1959
+ count: list.length,
1960
+ icons: list.map((i) => ({
1961
+ slug: i.slug,
1962
+ name: i.name,
1963
+ subcategory: i.subcategory,
1964
+ description: i.description
1965
+ }))
1966
+ });
1967
+ }
1968
+ case "get_icon_code": {
1969
+ const slugs = a["slugs"] ?? [];
1970
+ const found = slugs.map((s) => ({ slug: s, icon: find(s) }));
1971
+ const missing = found.filter((f) => !f.icon).map((f) => f.slug);
1972
+ const ok = found.flatMap((f) => f.icon ? [f.icon] : []);
1973
+ if (!ok.length) return json({ missing, hint: "None of those slugs exist. Use search_icon." });
1974
+ const framework = String(a["framework"] ?? "react");
1975
+ if (framework === "html") {
1976
+ return json({ missing, html: ok.map((i) => snippets(i).html).join("\n") });
1977
+ }
1978
+ return json({
1979
+ missing,
1980
+ import: `import { ${ok.map((i) => i.componentName).join(", ")} } from "@iconmind/react";`,
1981
+ usage: ok.map((i) => `<${i.componentName} />`).join("\n")
1982
+ });
1983
+ }
1984
+ default:
1985
+ return json({ error: `Unknown tool: ${req.params.name}` });
1986
+ }
1987
+ });
1988
+ }
1989
+
1990
+ // src/prompts.ts
1991
+ import { GetPromptRequestSchema, ListPromptsRequestSchema } from "@modelcontextprotocol/sdk/types.js";
1992
+ var PROMPTS = [
1993
+ {
1994
+ name: "recommend_icons",
1995
+ description: "Recommend icons for a feature or UI screen",
1996
+ arguments: [
1997
+ { name: "description", description: "The feature or screen being built", required: true },
1998
+ { name: "framework", description: "react or html", required: false }
1999
+ ]
2000
+ },
2001
+ {
2002
+ name: "ai_workflow_icons",
2003
+ description: "Map icons onto each stage of an AI, agent, or RAG pipeline",
2004
+ arguments: [{ name: "workflow", description: "The pipeline, e.g. 'RAG with reranking'", required: true }]
2005
+ }
2006
+ ];
2007
+ var TEXT = {
2008
+ recommend_icons: (a) => `I am building: ${a["description"] ?? ""}
2009
+
2010
+ Use the search_icon tool to find the right IconMind icon for every UI element that needs
2011
+ one. For each recommendation, state:
2012
+ 1. Which UI element it is for
2013
+ 2. The icon slug you chose
2014
+ 3. Why that icon is semantically right, not merely visually similar
2015
+
2016
+ Do not invent icon names. If search_icon finds nothing suitable, say so and suggest the
2017
+ closest icon that actually exists.
2018
+
2019
+ Framework: ${a["framework"] ?? "react"}`,
2020
+ ai_workflow_icons: (a) => `Pipeline to visualize: ${a["workflow"] ?? ""}
2021
+
2022
+ 1. Break this pipeline into its distinct stages.
2023
+ 2. For each stage, use search_icon (prefer the ai, agents, mcp, and rag categories) to
2024
+ find the most semantically accurate icon.
2025
+ 3. Return a table: Stage | Icon slug | Why.
2026
+ 4. Finally, produce one combined import block via get_icon_code.
2027
+
2028
+ Favour meaning over visual uniformity \u2014 an icon with the wrong meaning costs more than
2029
+ one that merely looks slightly out of place.`
2030
+ };
2031
+ function registerPrompts(server2) {
2032
+ server2.setRequestHandler(ListPromptsRequestSchema, async () => ({ prompts: PROMPTS }));
2033
+ server2.setRequestHandler(GetPromptRequestSchema, async (req) => {
2034
+ const build = TEXT[req.params.name];
2035
+ if (!build) throw new Error(`Unknown prompt: ${req.params.name}`);
2036
+ return {
2037
+ messages: [{
2038
+ role: "user",
2039
+ content: { type: "text", text: build(req.params.arguments ?? {}) }
2040
+ }]
2041
+ };
2042
+ });
2043
+ }
2044
+
2045
+ // src/index.ts
2046
+ var server = new Server(
2047
+ { name: "iconmind", version },
2048
+ { capabilities: { resources: {}, tools: {}, prompts: {} } }
2049
+ );
2050
+ registerResources(server);
2051
+ registerTools(server);
2052
+ registerPrompts(server);
2053
+ await server.connect(new StdioServerTransport());