Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Guide for discovering and using MCP tools via the discover_tools meta-tool. Use this skill when asked to perform tasks that require finding the right tools, when you see only discover_tools in your available tools, when asked "what tools are available", "find tools for X", or when planning multi-step workflows across Slack, WhatsApp, Google, or Slides.
.claude/skills/majiayu000-tool-discovery/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-04 | ✗→✓ | ▲ Improved | 300% | 0% |
| case-08 | ✗→✓ | ▲ Improved | 157% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 487% | 0% |
| case-12 | ✗→✓ | ▲ Improved | 123% | 0% |
| case-17 | ✓→✗ | ▼ Worse | -22% | 0% |
This MCP server uses a discovery-based tool loading pattern to reduce context overhead. Instead of loading all 35+ tools upfront, only the discover_tools meta-tool is exposed. Use it to find and load the specific tools needed for your task.
# List all categories
discover_tools({ mode: "list_categories" })
# Browse tools in a category
discover_tools({ mode: "browse", category: "jira" })
# Search by natural language
discover_tools({ mode: "search", query: "send slack message" })
# Search by intent
discover_tools({ mode: "search", intent: "check team blockers" })| Category | Tools | Use For | | ----------- | ----- | ------------------------------------------------ | | jira | 14 | Issues, sprints, blockers, SLA, weekly summaries | | messaging | 4 | Slack DMs, channel messages, user lookup | | whatsapp | 8 | Message history, contacts, groups, media | | docs | 11 | Google Slides, Sheets, presentations | | system | 2 | Health check, configuration |
Always discover tools before attempting to use them.
discover_tools with appropriate modeTask: "What are the blockers for the team?"
# Step 1: Find blocker-related tools
discover_tools({ mode: "search", query: "blockers" })
# Returns: ai_first_get_blockers
# Step 2: Use the discovered tool
ai_first_get_blockers({})Task: "Give me a weekly summary of the team's progress"
# Step 1: Find weekly summary tools
discover_tools({ mode: "browse", category: "jira" })
# Returns: ai_first_get_weekly_summary, ai_first_get_completed_this_week, etc.
# Step 2: Get the summary
ai_first_get_weekly_summary({})Task: "Send a message to the team channel about blockers"
# Step 1: Find messaging and blocker tools
discover_tools({ mode: "search", query: "send slack channel message" })
discover_tools({ mode: "search", query: "blockers" })
# Step 2: Get blockers and send message
ai_first_get_blockers({})
ai_first_slack_send_channel_message({ channel: "#orienter", message: "Current blockers: ..." })Task: "Find messages about the project deadline"
# Step 1: Find WhatsApp tools
discover_tools({ mode: "browse", category: "whatsapp" })
# Returns: whatsapp_search_messages, whatsapp_get_conversation, etc.
# Step 2: Search messages
whatsapp_search_messages({ text: "project deadline" })Task: "Update the weekly presentation with completed JIRA issues"
# Step 1: Discover needed tools across categories
discover_tools({ mode: "browse", category: "jira" }) # For completed issues
discover_tools({ mode: "browse", category: "docs" }) # For slides
# Step 2: Execute workflow
ai_first_get_completed_this_week({})
ai_first_slides_update_weekly({ presentationUrl: "..." })discover_tools({ query: "ai_first_get_blockers" })"blocker", "sprint", "slack", "whatsapp""notify team about progress"discover_tools({ mode: "search", query: "message", limit: 5 })Quick reference for frequently used tools:
JIRA:
ai_first_get_in_progress - Current workai_first_get_blockers - Blocked issuesai_first_get_daily_digest - Today's summaryai_first_get_weekly_summary - Week overviewMessaging (Slack):
ai_first_slack_send_dm - Direct messageai_first_slack_send_channel_message - Channel postai_first_slack_get_channel_messages - Read channel historyWhatsApp:
whatsapp_search_messages - Search message historywhatsapp_get_conversation - Get chat with contactwhatsapp_list_groups - List groups| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-21 | pass→pass | 9,001 | 9,535 | +6% | 1 | 1 | 0% | 657 | 1,512 | +130% | 0 | 0 | — |
case-01 | fail→fail | 3,375 | 9,906 | +194% | 1 | 1 | 0% | 499 | 1,387 | +178% | 0 | 0 | — |
case-02 | fail→fail | 4,128 | 4,624 | +12% | 1 | 1 | 0% | 554 | 1,318 | +138% | 0 | 0 | — |
case-22 | pass→pass | 9,754 | 8,697 | -11% | 1 | 1 | 0% | 807 | 1,714 | +112% | 0 | 0 | — |
case-03 | fail→fail | 12,088 | 9,865 | -18% | 1 | 1 | 0% | 1,112 | 1,396 | +26% | 0 | 0 | — |
case-04 | fail→pass | 3,144 | 9,307 | +196% | 1 | 1 | 0% | 433 | 1,731 | +300% | 0 | 0 | — |
case-05 | fail→fail | 18,424 | 13,691 | -26% | 1 | 1 | 0% | 2,978 | 1,614 | -46% | 0 | 0 | — |
case-06 | fail→fail | 14,514 | 41,840 | +188% | 1 | 1 | 0% | 1,451 | 1,568 | +8% | 0 | 0 | — |
case-07 | fail→fail | 17,064 | 12,512 | -27% | 1 | 1 | 0% | 1,908 | 1,584 | -17% | 0 | 0 | — |
case-08 | fail→pass | 13,284 | 4,440 | -67% | 1 | 1 | 0% | 715 | 1,837 | +157% | 0 | 0 | — |
case-09 | fail→pass | 8,219 | 3,664 | -55% | 1 | 1 | 0% | 283 | 1,662 | +487% | 0 | 0 | — |
case-10 | fail→fail | 21,469 | 11,106 | -48% | 1 | 1 | 0% | 1,329 | 1,477 | +11% | 0 | 0 | — |
case-11 | fail→fail | 18,485 | 11,260 | -39% | 1 | 1 | 0% | 2,221 | 1,608 | -28% | 0 | 0 | — |
case-12 | fail→pass | 9,581 | 5,289 | -45% | 1 | 1 | 0% | 753 | 1,678 | +123% | 0 | 0 | — |
case-13 | pass→pass | 3,162 | 9,294 | +194% | 1 | 1 | 0% | 477 | 1,828 | +283% | 0 | 0 | — |
case-14 | fail→fail | 12,291 | 8,377 | -32% | 1 | 1 | 0% | 1,102 | 1,727 | +57% | 0 | 0 | — |
case-15 | fail→fail | 8,212 | 5,695 | -31% | 1 | 1 | 0% | 1,379 | 1,413 | +2% | 0 | 0 | — |
case-16 | fail→fail | 7,017 | 3,735 | -47% | 1 | 1 | 0% | 1,071 | 1,651 | +54% | 0 | 0 | — |
case-17 | pass→fail | 12,193 | 10,729 | -12% | 1 | 1 | 0% | 1,894 | 1,478 | -22% | 0 | 0 | — |
case-18 | fail→fail | 13,687 | 9,358 | -32% | 1 | 1 | 0% | 1,930 | 1,747 | -9% | 0 | 0 | — |
case-19 | pass→pass | 15,533 | 8,142 | -48% | 1 | 1 | 0% | 1,445 | 1,649 | +14% | 0 | 0 | — |
case-20 | pass→pass | 13,776 | 26,100 | +89% | 1 | 1 | 0% | 1,388 | 2,087 | +50% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 14 counted toward the lift figure. The other 8 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +14 percentage points is the difference between those two pass rates over the 14 comparable cases. 2 cases got worse with the skill loaded, and they are included in that figure.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.