@pharaoh-so/mcp 0.3.27 → 0.3.28

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/inspect-tools.json +164 -164
  2. package/package.json +1 -1
@@ -155,8 +155,8 @@
155
155
  }
156
156
  },
157
157
  {
158
- "name": "search_functions",
159
- "description": "Check if functionality already exists BEFORE writing any new function, utility, or helper.\n\nCALL THIS WHEN:\n• You're about to create a new function — search first to prevent duplicates\n• You need to find where a concept is implemented (e.g., 'notify', 'validate', 'parse')\n• You're looking for the right function to import instead of reimplementing\n• A task says 'add X functionality' — verify X doesn't already exist\n\nRETURNS: Matching functions with file paths, line numbers, module, export status, async flag, complexity scores, and full signatures. Searches all functions across the entire codebase.\n\nEXAMPLES:\n• \"Is there already a function that sends Slack notifications?\"\n• \"What validation utilities exist?\"\n• \"Where is email formatting handled?\"\n• \"Does a retry wrapper already exist somewhere?\"\n\nWHY NOT JUST READ FILES: grep only finds exact string matches and misses re-exports, aliases, and barrel-file indirection. This searches the full resolved dependency graph — if it exists anywhere in the codebase, this finds it.",
158
+ "name": "get_blast_radius",
159
+ "description": "Check what breaks BEFORE refactoring, renaming, or deleting a function, file, or module.\n\nCALL THIS WHEN:\n• You're about to refactor or rename a function — see every caller that needs updating\n• You want to know if a change is safe — check if anything depends on this code\n• A PR modifies a shared utility — trace all downstream consumers\n• You need to assess risk level before a change (LOW/MEDIUM/HIGH)\n\nRETURNS: Risk assessment (LOW/MEDIUM/HIGH), all affected callers grouped by module with file paths, impacted HTTP endpoints, impacted cron jobs, and affected DB operations. Traces up to 5 hops deep through the call graph.\n\nEXAMPLES:\n• \"What breaks if I change the formatMessage function?\"\n• \"How many callers does this utility have across the codebase?\"\n• \"Is it safe to delete this file or do other modules use it?\"\n• \"Which API endpoints are affected if I modify the db module?\"\n\nWHY NOT JUST READ FILES: You can grep for direct callers, but you'll miss indirect callers 2-3 hops away, and you won't see affected endpoints or cron jobs. This traces the full transitive dependency chain automatically.",
160
160
  "inputSchema": {
161
161
  "$schema": "http://json-schema.org/draft-07/schema#",
162
162
  "type": "object",
@@ -165,39 +165,72 @@
165
165
  "type": "string",
166
166
  "description": "Repository name. Works with your connected repos or any public open source repo by GitHub slug (e.g., 'vercel/next.js')."
167
167
  },
168
- "query": {
168
+ "entity": {
169
169
  "type": "string",
170
- "maxLength": 500,
171
- "description": "Function name or partial match (e.g., \"notify\", \"fetch\", \"transform\")"
170
+ "description": "Function name, file path, or module name"
171
+ },
172
+ "entity_type": {
173
+ "type": "string",
174
+ "enum": [
175
+ "function",
176
+ "file",
177
+ "module"
178
+ ],
179
+ "description": "Type of entity"
180
+ },
181
+ "depth": {
182
+ "description": "How many hops to trace (default: 3, max: 5)",
183
+ "type": "number"
184
+ }
185
+ },
186
+ "required": [
187
+ "repo",
188
+ "entity",
189
+ "entity_type"
190
+ ]
191
+ },
192
+ "annotations": {
193
+ "title": "Change Blast Radius",
194
+ "readOnlyHint": true,
195
+ "destructiveHint": false
196
+ },
197
+ "execution": {
198
+ "taskSupport": "forbidden"
199
+ }
200
+ },
201
+ {
202
+ "name": "check_reachability",
203
+ "description": "Check if functions are reachable from production entry points (API endpoints, CLI commands, cron jobs, event handlers, MCP tools).\n\nCALL THIS WHEN:\n• After implementing a feature — verify new code is wired into the app\n• Reviewing a PR — are all new functions actually reachable?\n• Cleaning up dead code — find functions only called by tests\n• Before opening a PR — run this as a pre-flight check\n\nRETURNS: For each exported function, whether it's reachable from a production entry point,\nthe path from entry point to function, and classification (entry_point / reachable / unreachable).\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
204
+ "inputSchema": {
205
+ "$schema": "http://json-schema.org/draft-07/schema#",
206
+ "type": "object",
207
+ "properties": {
208
+ "repo": {
209
+ "type": "string",
210
+ "description": "Repository name. Works with your connected repos or any public open source repo by GitHub slug (e.g., 'vercel/next.js')."
211
+ },
212
+ "functions": {
213
+ "description": "Function names to check (checks all exported if omitted)",
214
+ "type": "array",
215
+ "items": {
216
+ "type": "string"
217
+ }
172
218
  },
173
219
  "module": {
174
220
  "description": "Filter to a specific module",
175
221
  "type": "string"
176
222
  },
177
- "file": {
178
- "description": "Filter to functions in a specific file (full path for exact match, filename for substring match)",
179
- "type": "string"
180
- },
181
- "exported_only": {
182
- "description": "Only show exported functions (default: false)",
223
+ "include_paths": {
224
+ "description": "Include full reachability paths (default: false)",
183
225
  "type": "boolean"
184
- },
185
- "offset": {
186
- "description": "Skip first N results for pagination (default: 0)",
187
- "type": "number"
188
- },
189
- "limit": {
190
- "description": "Max results to return (default: 20, max: 50)",
191
- "type": "number"
192
226
  }
193
227
  },
194
228
  "required": [
195
- "repo",
196
- "query"
229
+ "repo"
197
230
  ]
198
231
  },
199
232
  "annotations": {
200
- "title": "Function Search",
233
+ "title": "Reachability Check",
201
234
  "readOnlyHint": true,
202
235
  "destructiveHint": false
203
236
  },
@@ -206,8 +239,8 @@
206
239
  }
207
240
  },
208
241
  {
209
- "name": "get_design_system",
210
- "description": "Discover the design system BEFORE creating any UI component.\n\nCALL THIS WHEN:\n• You're about to create a React/Vue/Svelte component — check what already exists\n• You need to know the canonical component for a UI pattern (button, input, modal)\n• You want to find design tokens (colors, spacing, typography) to use\n• You suspect raw HTML elements are used instead of existing components\n\nRETURNS: Components with props and usage count (paginated), design tokens with values, and anti-patterns where raw HTML is used instead of existing components. Pass `path_pattern`, `name_prefix`, `offset`, or `limit` to narrow or page through results. Screen/page components are excluded by default.\n\nEXAMPLES:\n• \"What components does this design system have?\"\n• \"Is there already a Button component I should use?\"\n• \"What color tokens are available?\"\n• \"Show me all components in /atoms/\" → use path_pattern=\"/atoms/\"\n• \"Show me the next page\" → use offset=50\n\nWHY NOT JUST READ FILES: Design systems span dozens of files across multiple directories. This returns the complete inventory with usage frequency — the most-used components are the most canonical.",
242
+ "name": "get_vision_docs",
243
+ "description": "Get the documented intent — CLAUDE.md files, PRDs, roadmaps, skill specs — to understand WHY code exists, not just what it does.\n\nCALL THIS WHEN:\n• You're implementing a feature and need to check if a PRD or spec exists for it\n• You want to understand the original design intent behind existing code\n• You need to verify your implementation matches documented requirements\n• You're reviewing code and want to check it against the documented vision\n\nRETURNS: All vision documents grouped by type (claude_md, prd, skill, roadmap), with each spec's title, section ID, and implementation status showing which functions implement each spec.\n\nEXAMPLES:\n• \"Is there a PRD for the notification system?\"\n• \"What does the CLAUDE.md say about the auth module?\"\n• \"What specs exist for the slack integration?\"\n• \"Which specs are already implemented vs still pending?\"\n\nWHY NOT JUST READ FILES: Vision docs are scattered across CLAUDE.md files, PRDs, and roadmaps in different directories. This aggregates them all AND cross-references against actual implementations so you can see spec-to-code alignment in one call.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
211
244
  "inputSchema": {
212
245
  "$schema": "http://json-schema.org/draft-07/schema#",
213
246
  "type": "object",
@@ -216,47 +249,20 @@
216
249
  "type": "string",
217
250
  "description": "Repository name"
218
251
  },
219
- "category": {
220
- "default": "all",
221
- "description": "Which design system aspect to return",
252
+ "module": {
253
+ "description": "Filter to specs related to this module",
254
+ "type": "string"
255
+ },
256
+ "doc_type": {
257
+ "description": "Filter by document type",
222
258
  "type": "string",
223
259
  "enum": [
224
- "components",
225
- "tokens",
226
- "anti_patterns",
260
+ "claude_md",
261
+ "prd",
262
+ "skill",
263
+ "roadmap",
227
264
  "all"
228
265
  ]
229
- },
230
- "include_screens": {
231
- "default": false,
232
- "description": "Include screen/page components (*Screen, *Page, *View, *Route) that are typically app-level consumers, not reusable primitives",
233
- "type": "boolean"
234
- },
235
- "path_pattern": {
236
- "description": "Substring match against File.path (e.g. '/atoms/', '/ui/Button'). Narrows to components whose file path contains this exact substring.",
237
- "type": "string",
238
- "minLength": 1,
239
- "maxLength": 200
240
- },
241
- "name_prefix": {
242
- "description": "Exact prefix match against component name (e.g. 'Button' matches Button, ButtonGroup, ButtonIcon). Case-sensitive.",
243
- "type": "string",
244
- "minLength": 1,
245
- "maxLength": 200
246
- },
247
- "offset": {
248
- "default": 0,
249
- "description": "Pagination offset (0-based). Capped at 10000.",
250
- "type": "integer",
251
- "minimum": 0,
252
- "maximum": 10000
253
- },
254
- "limit": {
255
- "default": 50,
256
- "description": "Page size. Default 50, max 200.",
257
- "type": "integer",
258
- "minimum": 1,
259
- "maximum": 200
260
266
  }
261
267
  },
262
268
  "required": [
@@ -264,7 +270,7 @@
264
270
  ]
265
271
  },
266
272
  "annotations": {
267
- "title": "Design System",
273
+ "title": "Vision Documents",
268
274
  "readOnlyHint": true,
269
275
  "destructiveHint": false
270
276
  },
@@ -273,42 +279,31 @@
273
279
  }
274
280
  },
275
281
  {
276
- "name": "get_blast_radius",
277
- "description": "Check what breaks BEFORE refactoring, renaming, or deleting a function, file, or module.\n\nCALL THIS WHEN:\n• You're about to refactor or rename a function — see every caller that needs updating\n• You want to know if a change is safe — check if anything depends on this code\n• A PR modifies a shared utility — trace all downstream consumers\n• You need to assess risk level before a change (LOW/MEDIUM/HIGH)\n\nRETURNS: Risk assessment (LOW/MEDIUM/HIGH), all affected callers grouped by module with file paths, impacted HTTP endpoints, impacted cron jobs, and affected DB operations. Traces up to 5 hops deep through the call graph.\n\nEXAMPLES:\n• \"What breaks if I change the formatMessage function?\"\n• \"How many callers does this utility have across the codebase?\"\n• \"Is it safe to delete this file or do other modules use it?\"\n• \"Which API endpoints are affected if I modify the db module?\"\n\nWHY NOT JUST READ FILES: You can grep for direct callers, but you'll miss indirect callers 2-3 hops away, and you won't see affected endpoints or cron jobs. This traces the full transitive dependency chain automatically.",
282
+ "name": "get_vision_gaps",
283
+ "description": "Find what's missing — specs without code AND complex code without specs. Call this to prioritize what to build or document next.\n\nCALL THIS WHEN:\n• You're planning work and need to find unimplemented features from PRDs\n• You want to find complex undocumented functions that need specs or tests\n• You need to audit spec-to-code alignment for a module\n• Someone asks \"what's left to build?\" or \"what's undocumented?\"\n\nRETURNS: Two lists — (1) specified-but-not-built: PRD specs with no implementing functions, and (2) built-but-not-specified: complex functions above a threshold with no vision spec. Includes function names, complexity scores, file paths, and spec references.\n\nEXAMPLES:\n• \"What features from the PRDs haven't been built yet?\"\n• \"Which complex functions lack documentation?\"\n• \"What's the spec coverage for the auth module?\"\n• \"Are there any orphaned specs or undocumented behaviors?\"\n\nWHY NOT JUST READ FILES: Manually diffing PRD bullets against code is error-prone and misses complexity metrics. This cross-references the entire spec tree against the function graph automatically — gaps that would take an hour to find manually surface in seconds.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
278
284
  "inputSchema": {
279
285
  "$schema": "http://json-schema.org/draft-07/schema#",
280
286
  "type": "object",
281
287
  "properties": {
282
288
  "repo": {
283
289
  "type": "string",
284
- "description": "Repository name. Works with your connected repos or any public open source repo by GitHub slug (e.g., 'vercel/next.js')."
285
- },
286
- "entity": {
287
- "type": "string",
288
- "description": "Function name, file path, or module name"
290
+ "description": "Repository name"
289
291
  },
290
- "entity_type": {
291
- "type": "string",
292
- "enum": [
293
- "function",
294
- "file",
295
- "module"
296
- ],
297
- "description": "Type of entity"
292
+ "module": {
293
+ "description": "Filter to a specific module",
294
+ "type": "string"
298
295
  },
299
- "depth": {
300
- "description": "How many hops to trace (default: 3, max: 5)",
296
+ "complexity_threshold": {
297
+ "description": "Min complexity for undocumented function flag (default: 15)",
301
298
  "type": "number"
302
299
  }
303
300
  },
304
301
  "required": [
305
- "repo",
306
- "entity",
307
- "entity_type"
302
+ "repo"
308
303
  ]
309
304
  },
310
305
  "annotations": {
311
- "title": "Change Blast Radius",
306
+ "title": "Vision Gap Analysis",
312
307
  "readOnlyHint": true,
313
308
  "destructiveHint": false
314
309
  },
@@ -390,8 +385,8 @@
390
385
  }
391
386
  },
392
387
  {
393
- "name": "check_reachability",
394
- "description": "Check if functions are reachable from production entry points (API endpoints, CLI commands, cron jobs, event handlers, MCP tools).\n\nCALL THIS WHEN:\n• After implementing a feature — verify new code is wired into the app\n• Reviewing a PR — are all new functions actually reachable?\n• Cleaning up dead code — find functions only called by tests\n• Before opening a PR — run this as a pre-flight check\n\nRETURNS: For each exported function, whether it's reachable from a production entry point,\nthe path from entry point to function, and classification (entry_point / reachable / unreachable).\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
388
+ "name": "search_functions",
389
+ "description": "Check if functionality already exists BEFORE writing any new function, utility, or helper.\n\nCALL THIS WHEN:\n• You're about to create a new function — search first to prevent duplicates\n• You need to find where a concept is implemented (e.g., 'notify', 'validate', 'parse')\n• You're looking for the right function to import instead of reimplementing\n• A task says 'add X functionality' — verify X doesn't already exist\n\nRETURNS: Matching functions with file paths, line numbers, module, export status, async flag, complexity scores, and full signatures. Searches all functions across the entire codebase.\n\nEXAMPLES:\n• \"Is there already a function that sends Slack notifications?\"\n• \"What validation utilities exist?\"\n• \"Where is email formatting handled?\"\n• \"Does a retry wrapper already exist somewhere?\"\n\nWHY NOT JUST READ FILES: grep only finds exact string matches and misses re-exports, aliases, and barrel-file indirection. This searches the full resolved dependency graph — if it exists anywhere in the codebase, this finds it.",
395
390
  "inputSchema": {
396
391
  "$schema": "http://json-schema.org/draft-07/schema#",
397
392
  "type": "object",
@@ -400,101 +395,39 @@
400
395
  "type": "string",
401
396
  "description": "Repository name. Works with your connected repos or any public open source repo by GitHub slug (e.g., 'vercel/next.js')."
402
397
  },
403
- "functions": {
404
- "description": "Function names to check (checks all exported if omitted)",
405
- "type": "array",
406
- "items": {
407
- "type": "string"
408
- }
398
+ "query": {
399
+ "type": "string",
400
+ "maxLength": 500,
401
+ "description": "Function name or partial match (e.g., \"notify\", \"fetch\", \"transform\")"
409
402
  },
410
403
  "module": {
411
404
  "description": "Filter to a specific module",
412
405
  "type": "string"
413
406
  },
414
- "include_paths": {
415
- "description": "Include full reachability paths (default: false)",
416
- "type": "boolean"
417
- }
418
- },
419
- "required": [
420
- "repo"
421
- ]
422
- },
423
- "annotations": {
424
- "title": "Reachability Check",
425
- "readOnlyHint": true,
426
- "destructiveHint": false
427
- },
428
- "execution": {
429
- "taskSupport": "forbidden"
430
- }
431
- },
432
- {
433
- "name": "get_vision_docs",
434
- "description": "Get the documented intent — CLAUDE.md files, PRDs, roadmaps, skill specs — to understand WHY code exists, not just what it does.\n\nCALL THIS WHEN:\n• You're implementing a feature and need to check if a PRD or spec exists for it\n• You want to understand the original design intent behind existing code\n• You need to verify your implementation matches documented requirements\n• You're reviewing code and want to check it against the documented vision\n\nRETURNS: All vision documents grouped by type (claude_md, prd, skill, roadmap), with each spec's title, section ID, and implementation status showing which functions implement each spec.\n\nEXAMPLES:\n• \"Is there a PRD for the notification system?\"\n• \"What does the CLAUDE.md say about the auth module?\"\n• \"What specs exist for the slack integration?\"\n• \"Which specs are already implemented vs still pending?\"\n\nWHY NOT JUST READ FILES: Vision docs are scattered across CLAUDE.md files, PRDs, and roadmaps in different directories. This aggregates them all AND cross-references against actual implementations so you can see spec-to-code alignment in one call.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
435
- "inputSchema": {
436
- "$schema": "http://json-schema.org/draft-07/schema#",
437
- "type": "object",
438
- "properties": {
439
- "repo": {
440
- "type": "string",
441
- "description": "Repository name"
442
- },
443
- "module": {
444
- "description": "Filter to specs related to this module",
407
+ "file": {
408
+ "description": "Filter to functions in a specific file (full path for exact match, filename for substring match)",
445
409
  "type": "string"
446
410
  },
447
- "doc_type": {
448
- "description": "Filter by document type",
449
- "type": "string",
450
- "enum": [
451
- "claude_md",
452
- "prd",
453
- "skill",
454
- "roadmap",
455
- "all"
456
- ]
457
- }
458
- },
459
- "required": [
460
- "repo"
461
- ]
462
- },
463
- "annotations": {
464
- "title": "Vision Documents",
465
- "readOnlyHint": true,
466
- "destructiveHint": false
467
- },
468
- "execution": {
469
- "taskSupport": "forbidden"
470
- }
471
- },
472
- {
473
- "name": "get_vision_gaps",
474
- "description": "Find what's missing — specs without code AND complex code without specs. Call this to prioritize what to build or document next.\n\nCALL THIS WHEN:\n• You're planning work and need to find unimplemented features from PRDs\n• You want to find complex undocumented functions that need specs or tests\n• You need to audit spec-to-code alignment for a module\n• Someone asks \"what's left to build?\" or \"what's undocumented?\"\n\nRETURNS: Two lists — (1) specified-but-not-built: PRD specs with no implementing functions, and (2) built-but-not-specified: complex functions above a threshold with no vision spec. Includes function names, complexity scores, file paths, and spec references.\n\nEXAMPLES:\n• \"What features from the PRDs haven't been built yet?\"\n• \"Which complex functions lack documentation?\"\n• \"What's the spec coverage for the auth module?\"\n• \"Are there any orphaned specs or undocumented behaviors?\"\n\nWHY NOT JUST READ FILES: Manually diffing PRD bullets against code is error-prone and misses complexity metrics. This cross-references the entire spec tree against the function graph automatically — gaps that would take an hour to find manually surface in seconds.\n\nTIER: Pharaoh Pro — free tier receives a preview. Summarize what the preview reveals, explain what full data would show for this task, then include the upgrade link.",
475
- "inputSchema": {
476
- "$schema": "http://json-schema.org/draft-07/schema#",
477
- "type": "object",
478
- "properties": {
479
- "repo": {
480
- "type": "string",
481
- "description": "Repository name"
411
+ "exported_only": {
412
+ "description": "Only show exported functions (default: false)",
413
+ "type": "boolean"
482
414
  },
483
- "module": {
484
- "description": "Filter to a specific module",
485
- "type": "string"
415
+ "offset": {
416
+ "description": "Skip first N results for pagination (default: 0)",
417
+ "type": "number"
486
418
  },
487
- "complexity_threshold": {
488
- "description": "Min complexity for undocumented function flag (default: 15)",
419
+ "limit": {
420
+ "description": "Max results to return (default: 20, max: 50)",
489
421
  "type": "number"
490
422
  }
491
423
  },
492
424
  "required": [
493
- "repo"
425
+ "repo",
426
+ "query"
494
427
  ]
495
428
  },
496
429
  "annotations": {
497
- "title": "Vision Gap Analysis",
430
+ "title": "Function Search",
498
431
  "readOnlyHint": true,
499
432
  "destructiveHint": false
500
433
  },
@@ -691,6 +624,73 @@
691
624
  "taskSupport": "forbidden"
692
625
  }
693
626
  },
627
+ {
628
+ "name": "get_design_system",
629
+ "description": "Discover the design system BEFORE creating any UI component.\n\nCALL THIS WHEN:\n• You're about to create a React/Vue/Svelte component — check what already exists\n• You need to know the canonical component for a UI pattern (button, input, modal)\n• You want to find design tokens (colors, spacing, typography) to use\n• You suspect raw HTML elements are used instead of existing components\n\nRETURNS: Components with props and usage count (paginated), design tokens with values, and anti-patterns where raw HTML is used instead of existing components. Pass `path_pattern`, `name_prefix`, `offset`, or `limit` to narrow or page through results. Screen/page components are excluded by default.\n\nEXAMPLES:\n• \"What components does this design system have?\"\n• \"Is there already a Button component I should use?\"\n• \"What color tokens are available?\"\n• \"Show me all components in /atoms/\" → use path_pattern=\"/atoms/\"\n• \"Show me the next page\" → use offset=50\n\nWHY NOT JUST READ FILES: Design systems span dozens of files across multiple directories. This returns the complete inventory with usage frequency — the most-used components are the most canonical.",
630
+ "inputSchema": {
631
+ "$schema": "http://json-schema.org/draft-07/schema#",
632
+ "type": "object",
633
+ "properties": {
634
+ "repo": {
635
+ "type": "string",
636
+ "description": "Repository name"
637
+ },
638
+ "category": {
639
+ "default": "all",
640
+ "description": "Which design system aspect to return",
641
+ "type": "string",
642
+ "enum": [
643
+ "components",
644
+ "tokens",
645
+ "anti_patterns",
646
+ "all"
647
+ ]
648
+ },
649
+ "include_screens": {
650
+ "default": false,
651
+ "description": "Include screen/page components (*Screen, *Page, *View, *Route) that are typically app-level consumers, not reusable primitives",
652
+ "type": "boolean"
653
+ },
654
+ "path_pattern": {
655
+ "description": "Substring match against File.path (e.g. '/atoms/', '/ui/Button'). Narrows to components whose file path contains this exact substring.",
656
+ "type": "string",
657
+ "minLength": 1,
658
+ "maxLength": 200
659
+ },
660
+ "name_prefix": {
661
+ "description": "Exact prefix match against component name (e.g. 'Button' matches Button, ButtonGroup, ButtonIcon). Case-sensitive.",
662
+ "type": "string",
663
+ "minLength": 1,
664
+ "maxLength": 200
665
+ },
666
+ "offset": {
667
+ "default": 0,
668
+ "description": "Pagination offset (0-based). Capped at 10000.",
669
+ "type": "integer",
670
+ "minimum": 0,
671
+ "maximum": 10000
672
+ },
673
+ "limit": {
674
+ "default": 50,
675
+ "description": "Page size. Default 50, max 200.",
676
+ "type": "integer",
677
+ "minimum": 1,
678
+ "maximum": 200
679
+ }
680
+ },
681
+ "required": [
682
+ "repo"
683
+ ]
684
+ },
685
+ "annotations": {
686
+ "title": "Design System",
687
+ "readOnlyHint": true,
688
+ "destructiveHint": false
689
+ },
690
+ "execution": {
691
+ "taskSupport": "forbidden"
692
+ }
693
+ },
694
694
  {
695
695
  "name": "setup_environment",
696
696
  "description": "Set up the optimal development environment for this codebase — install Pharaoh's curated plugin bundle.\n\nCALL THIS WHEN:\n• The user says \"set up my environment\", \"install plugins\", or \"optimize my setup\"\n• You want to proactively improve the development experience with proven plugins\n• After noticing the user could benefit from LSP, security scanning, or code review tools\n• The user is on OpenClaw or Cursor and wants to install Pharaoh skills/prompts\n\nRETURNS: A curated list of recommended plugins and install instructions, tailored to the client platform (claude-code, openclaw, or cursor) and languages in this codebase.\n\nThis is a one-time setup. Once installed, plugins persist across sessions.",
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@pharaoh-so/mcp",
3
3
  "mcpName": "so.pharaoh/pharaoh",
4
- "version": "0.3.27",
4
+ "version": "0.3.28",
5
5
  "description": "MCP proxy for Pharaoh — maps codebases into queryable knowledge graphs for AI agents. Enables Claude Code in headless environments (VPS, SSH, CI) via device flow auth.",
6
6
  "type": "module",
7
7
  "main": "dist/index.js",