← WebMCP Directory

Tool tree

webmcp-integration.vercel.app

Developer ToolsTools verified
Website
Find your next open source contribution in minutes, not hours. Powered by WebMCP.
Explore capabilities

    page: Every page

    search_projectsAnswer

    Search open-source projects by broad filters (domain, activity, stars) when the user does NOT name specific skills/languages. If the user names languages/skills, prefer match_skills_to_projects instead so the skill graph populates.

    View tool JSON
    {
      "name": "search_projects",
      "kind": "answer",
      "impl": "imperative",
      "description": "Search open-source projects by broad filters (domain, activity, stars) when the user does NOT name specific skills/languages. If the user names languages/skills, prefer match_skills_to_projects instead so the skill graph populates.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "technologies": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Programming languages or frameworks"
          },
          "domain": {
            "type": "string",
            "enum": [
              "web",
              "mobile",
              "ml",
              "devtools",
              "gaming",
              "data",
              "security",
              "other"
            ]
          },
          "difficulty": {
            "type": "string",
            "enum": [
              "beginner",
              "intermediate",
              "advanced"
            ]
          },
          "minStars": {
            "type": "number"
          },
          "maxStars": {
            "type": "number"
          },
          "hasGoodFirstIssues": {
            "type": "boolean"
          },
          "activelyMaintained": {
            "type": "boolean"
          },
          "limit": {
            "type": "number",
            "default": 10
          }
        }
      },
      "page": "/"
    }
    match_skills_to_projectsAction

    ALWAYS use this tool when the user names any programming language or skill — including phrasings like 'find me Python projects', 'JavaScript and Python beginner projects', 'show me Rust repos', or 'actually, find me Python projects'. This is the ONLY tool that populates the on-screen skill graph, so prefer it over search_projects whenever a language/skill is mentioned. Pass every language/skill the user named in the 'skills' array and set experienceLevel from words like 'beginner'.

    View tool JSON
    {
      "name": "match_skills_to_projects",
      "kind": "act",
      "impl": "imperative",
      "description": "ALWAYS use this tool when the user names any programming language or skill — including phrasings like 'find me Python projects', 'JavaScript and Python beginner projects', 'show me Rust repos', or 'actually, find me Python projects'. This is the ONLY tool that populates the on-screen skill graph, so prefer it over search_projects whenever a language/skill is mentioned. Pass every language/skill the user named in the 'skills' array and set experienceLevel from words like 'beginner'.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "interests": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "experienceLevel": {
            "type": "string",
            "enum": [
              "beginner",
              "intermediate",
              "senior"
            ]
          },
          "timeCommitment": {
            "type": "string",
            "enum": [
              "one-time",
              "occasional",
              "regular"
            ]
          },
          "preferredContributionType": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "code",
                "documentation",
                "testing",
                "design",
                "translation"
              ]
            }
          }
        },
        "required": [
          "skills"
        ]
      },
      "page": "/"
    }
    find_issuesAnswer

    Find open issues in a project filtered by labels, difficulty, or skill requirements.

    View tool JSON
    {
      "name": "find_issues",
      "kind": "answer",
      "impl": "imperative",
      "description": "Find open issues in a project filtered by labels, difficulty, or skill requirements.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "description": "e.g. facebook/react"
          },
          "labels": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "difficulty": {
            "type": "string",
            "enum": [
              "good-first-issue",
              "medium",
              "complex"
            ]
          },
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "issueType": {
            "type": "string",
            "enum": [
              "bug",
              "feature",
              "documentation",
              "testing"
            ]
          },
          "excludeAssigned": {
            "type": "boolean",
            "default": true
          },
          "excludeStale": {
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "projectId"
        ]
      },
      "page": "/"
    }
    summarize_projectAnswer

    Get comprehensive project summary including purpose, tech stack, and community health.

    View tool JSON
    {
      "name": "summarize_project",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get comprehensive project summary including purpose, tech stack, and community health.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string"
          },
          "includeContributionGuide": {
            "type": "boolean",
            "default": true
          },
          "includeCodeStructure": {
            "type": "boolean",
            "default": false
          },
          "includeCommunityMetrics": {
            "type": "boolean",
            "default": true
          },
          "includeRecentActivity": {
            "type": "boolean",
            "default": true
          }
        },
        "required": [
          "projectId"
        ]
      },
      "page": "/"
    }
    estimate_first_response_timeAnswer

    Estimate how responsive a project is to contributors by sampling recent closed pull requests: median time to first response (first comment/review from someone other than the PR author) and median time to merge. Returns a responsiveness rating. Use to judge whether a PR here is likely to be reviewed or ignored — pairs well with search_projects to find active AND responsive projects.

    View tool JSON
    {
      "name": "estimate_first_response_time",
      "kind": "answer",
      "impl": "imperative",
      "description": "Estimate how responsive a project is to contributors by sampling recent closed pull requests: median time to first response (first comment/review from someone other than the PR author) and median time to merge. Returns a responsiveness rating. Use to judge whether a PR here is likely to be reviewed or ignored — pairs well with search_projects to find active AND responsive projects.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "description": "e.g. facebook/react"
          },
          "sampleSize": {
            "type": "number",
            "description": "How many recent closed PRs to sample (3-15, default 10)"
          }
        },
        "required": [
          "projectId"
        ]
      },
      "page": "/"
    }
    explain_issueAction

    Get beginner-friendly explanation of an issue with context and suggested approach.

    View tool JSON
    {
      "name": "explain_issue",
      "kind": "act",
      "impl": "imperative",
      "description": "Get beginner-friendly explanation of an issue with context and suggested approach.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "issueId": {
            "type": "string"
          },
          "projectId": {
            "type": "string"
          },
          "detailLevel": {
            "type": "string",
            "enum": [
              "brief",
              "detailed",
              "step-by-step"
            ],
            "default": "detailed"
          }
        },
        "required": [
          "issueId",
          "projectId"
        ]
      },
      "page": "/"
    }
    draft_contribution_planAction

    Generate a concrete, step-by-step first-contribution plan for a project (and optionally a specific issue): setup commands, which files to look at, how to run tests, and a PR checklist. Synthesizes the repo's README and CONTRIBUTING guide with AI. Use when the user has picked a project/issue and asks how to actually get started.

    View tool JSON
    {
      "name": "draft_contribution_plan",
      "kind": "act",
      "impl": "imperative",
      "description": "Generate a concrete, step-by-step first-contribution plan for a project (and optionally a specific issue): setup commands, which files to look at, how to run tests, and a PR checklist. Synthesizes the repo's README and CONTRIBUTING guide with AI. Use when the user has picked a project/issue and asks how to actually get started.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "description": "e.g. facebook/react"
          },
          "issueId": {
            "type": "string",
            "description": "Optional issue number to tailor the plan to a specific issue"
          },
          "experienceLevel": {
            "type": "string",
            "enum": [
              "beginner",
              "intermediate",
              "senior"
            ],
            "default": "beginner"
          }
        },
        "required": [
          "projectId"
        ]
      },
      "page": "/"
    }
    assess_issue_difficultyAnswer

    Assess whether an issue is realistically doable for a given experience level, beyond its label. Analyzes comment volume, age, description detail, keywords, and assignment/claim signals to return a difficulty score, reasons, and red flags (taken, contentious, stale). Use after find_issues to filter to genuinely doable issues.

    View tool JSON
    {
      "name": "assess_issue_difficulty",
      "kind": "answer",
      "impl": "imperative",
      "description": "Assess whether an issue is realistically doable for a given experience level, beyond its label. Analyzes comment volume, age, description detail, keywords, and assignment/claim signals to return a difficulty score, reasons, and red flags (taken, contentious, stale). Use after find_issues to filter to genuinely doable issues.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "description": "e.g. facebook/react"
          },
          "issueId": {
            "type": "string",
            "description": "The issue number"
          },
          "experienceLevel": {
            "type": "string",
            "enum": [
              "beginner",
              "intermediate",
              "senior"
            ],
            "default": "beginner"
          }
        },
        "required": [
          "projectId",
          "issueId"
        ]
      },
      "page": "/"
    }
    check_issue_availabilityAnswer

    Check whether an issue is free to work on: is it assigned, has someone claimed it in a recent comment, or is there already an open PR referencing it? Returns available | likely-taken | taken with evidence. Use after find_issues, before a user commits time to an issue, to avoid duplicate work.

    View tool JSON
    {
      "name": "check_issue_availability",
      "kind": "answer",
      "impl": "imperative",
      "description": "Check whether an issue is free to work on: is it assigned, has someone claimed it in a recent comment, or is there already an open PR referencing it? Returns available | likely-taken | taken with evidence. Use after find_issues, before a user commits time to an issue, to avoid duplicate work.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string",
            "description": "e.g. facebook/react"
          },
          "issueId": {
            "type": "string",
            "description": "The issue number"
          }
        },
        "required": [
          "projectId",
          "issueId"
        ]
      },
      "page": "/"
    }
    check_contribution_requirementsAnswer

    Get contribution requirements including CLA, code style, testing, and PR process.

    View tool JSON
    {
      "name": "check_contribution_requirements",
      "kind": "answer",
      "impl": "imperative",
      "description": "Get contribution requirements including CLA, code style, testing, and PR process.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string"
          }
        },
        "required": [
          "projectId"
        ]
      },
      "page": "/"
    }
    track_contributionAction

    Track a project or issue in the contribution tracker, OR change the status of an already-tracked one. Provide projectId (owner/repo) and a status: interested, in-progress, pr-submitted, merged, or abandoned. Use for requests like track facebook/react, mark next.js as merged, or move it to in-progress. The change shows on the dashboard.

    View tool JSON
    {
      "name": "track_contribution",
      "kind": "act",
      "impl": "imperative",
      "description": "Track a project or issue in the contribution tracker, OR change the status of an already-tracked one. Provide projectId (owner/repo) and a status: interested, in-progress, pr-submitted, merged, or abandoned. Use for requests like track facebook/react, mark next.js as merged, or move it to in-progress. The change shows on the dashboard.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "projectId": {
            "type": "string"
          },
          "issueId": {
            "type": "string"
          },
          "status": {
            "type": "string",
            "enum": [
              "interested",
              "in-progress",
              "pr-submitted",
              "merged",
              "abandoned"
            ]
          },
          "notes": {
            "type": "string"
          },
          "targetDate": {
            "type": "string",
            "format": "date"
          }
        },
        "required": [
          "projectId"
        ]
      },
      "page": "/"
    }
    get_mentorship_projectsAnswer

    Find projects in mentorship programs like GSoC, Outreachy, MLH, or Hacktoberfest.

    View tool JSON
    {
      "name": "get_mentorship_projects",
      "kind": "answer",
      "impl": "imperative",
      "description": "Find projects in mentorship programs like GSoC, Outreachy, MLH, or Hacktoberfest.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "program": {
            "type": "string",
            "enum": [
              "gsoc",
              "outreachy",
              "mlh",
              "hacktoberfest",
              "lfx",
              "all"
            ]
          },
          "year": {
            "type": "number"
          },
          "technologies": {
            "type": "array",
            "items": {
              "type": "string"
            }
          },
          "acceptingApplications": {
            "type": "boolean"
          }
        }
      },
      "page": "/"
    }
    highlight_projectAction

    Visually highlight a project node in the on-screen skill graph. Pass a specific name (e.g. 'excalidraw' or 'facebook/react'), OR a superlative describing the current results: 'most-starred', 'most-forked', or 'most-issues'. The matching node glows and its connections are emphasized while others dim. Use this (NOT a new search) when the user asks to point out, highlight, or focus on a project in the results already shown.

    View tool JSON
    {
      "name": "highlight_project",
      "kind": "act",
      "impl": "imperative",
      "description": "Visually highlight a project node in the on-screen skill graph. Pass a specific name (e.g. 'excalidraw' or 'facebook/react'), OR a superlative describing the current results: 'most-starred', 'most-forked', or 'most-issues'. The matching node glows and its connections are emphasized while others dim. Use this (NOT a new search) when the user asks to point out, highlight, or focus on a project in the results already shown.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "project": {
            "type": "string",
            "description": "Project name or owner/repo to highlight in the graph."
          }
        },
        "required": [
          "project"
        ]
      },
      "page": "/"
    }
    focus_skillAction

    Focus the on-screen skill graph on a single selected skill (e.g. 'Python'), emphasizing that skill node and the projects it connects to while fading the rest. Use when the user wants to see the projects for one particular skill.

    View tool JSON
    {
      "name": "focus_skill",
      "kind": "act",
      "impl": "imperative",
      "description": "Focus the on-screen skill graph on a single selected skill (e.g. 'Python'), emphasizing that skill node and the projects it connects to while fading the rest. Use when the user wants to see the projects for one particular skill.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "skill": {
            "type": "string",
            "description": "The skill/language to focus on (must be one the user selected)."
          }
        },
        "required": [
          "skill"
        ]
      },
      "page": "/"
    }
    reset_graphAction

    Clear any highlight or focus on the on-screen skill graph, restoring all nodes and connections to full visibility.

    View tool JSON
    {
      "name": "reset_graph",
      "kind": "act",
      "impl": "imperative",
      "description": "Clear any highlight or focus on the on-screen skill graph, restoring all nodes and connections to full visibility.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/"
    }
    summarize_my_progressAnswer

    Summarize the user's open-source contribution journey from their tracker. Returns totals per status, the tech stacks (languages) they use most, which merged project they closed fastest, average days-to-merge, when they started, and their completion rate. Use when the user asks things like 'how's my progress', 'what tech do I use most', 'which project did I close earliest', or 'summarize my contributions'.

    View tool JSON
    {
      "name": "summarize_my_progress",
      "kind": "answer",
      "impl": "imperative",
      "description": "Summarize the user's open-source contribution journey from their tracker. Returns totals per status, the tech stacks (languages) they use most, which merged project they closed fastest, average days-to-merge, when they started, and their completion rate. Use when the user asks things like 'how's my progress', 'what tech do I use most', 'which project did I close earliest', or 'summarize my contributions'.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/"
    }
    set_skill_profileAction

    Update what the app remembers about the user: skills/languages, interests/domains, experience level, contribution types. ADD via skills/interests (they MERGE and de-duplicate, so 'also add Go' keeps prior skills). REMOVE specific items via removeSkills/removeInterests (e.g. 'drop Go' -> removeSkills: ['Go']) — this deletes only those items and keeps the rest. Classify a language/framework (Rust, React) as a skill and a domain/topic (developer tools, climate) as an interest. To wipe everything, set clear:true. Use for statements like 'remember I know Rust', 'add Go to my skills', 'drop Go', or 'forget my profile'.

    View tool JSON
    {
      "name": "set_skill_profile",
      "kind": "act",
      "impl": "imperative",
      "description": "Update what the app remembers about the user: skills/languages, interests/domains, experience level, contribution types. ADD via skills/interests (they MERGE and de-duplicate, so 'also add Go' keeps prior skills). REMOVE specific items via removeSkills/removeInterests (e.g. 'drop Go' -> removeSkills: ['Go']) — this deletes only those items and keeps the rest. Classify a language/framework (Rust, React) as a skill and a domain/topic (developer tools, climate) as an interest. To wipe everything, set clear:true. Use for statements like 'remember I know Rust', 'add Go to my skills', 'drop Go', or 'forget my profile'.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "skills": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Languages/frameworks to ADD."
          },
          "interests": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Domains/topics to ADD."
          },
          "removeSkills": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Skills to REMOVE (e.g. ['Go'])."
          },
          "removeInterests": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Interests to REMOVE."
          },
          "experienceLevel": {
            "type": "string",
            "enum": [
              "beginner",
              "intermediate",
              "senior"
            ]
          },
          "preferredContributionType": {
            "type": "array",
            "items": {
              "type": "string",
              "enum": [
                "code",
                "documentation",
                "testing",
                "design",
                "translation"
              ]
            }
          },
          "clear": {
            "type": "boolean",
            "description": "If true, forget the entire profile."
          }
        }
      },
      "page": "/"
    }
    get_skill_profileAnswer

    Show the user what the app currently remembers about them: their saved skills, interests, experience level, and contribution preferences. Read-only — does NOT search or change anything. Use for questions like 'what skills have you logged for me?', 'what do you remember about me?', or 'show my profile'.

    View tool JSON
    {
      "name": "get_skill_profile",
      "kind": "answer",
      "impl": "imperative",
      "description": "Show the user what the app currently remembers about them: their saved skills, interests, experience level, and contribution preferences. Read-only — does NOT search or change anything. Use for questions like 'what skills have you logged for me?', 'what do you remember about me?', or 'show my profile'.",
      "inputSchema": {
        "type": "object",
        "properties": {}
      },
      "page": "/"
    }
    get_recommendationsAnswer

    Recommend projects tailored to the user's SAVED profile (skills + interests), without them re-stating anything. Renders the matches in the on-screen skill graph and results, like match_skills_to_projects. Use for open-ended requests such as 'what should I work on?', 'recommend me some projects', or 'find me something new'. If the user names specific skills in THIS request, pass them in overrideSkills — an explicit request wins over the saved profile for this turn.

    View tool JSON
    {
      "name": "get_recommendations",
      "kind": "answer",
      "impl": "imperative",
      "description": "Recommend projects tailored to the user's SAVED profile (skills + interests), without them re-stating anything. Renders the matches in the on-screen skill graph and results, like match_skills_to_projects. Use for open-ended requests such as 'what should I work on?', 'recommend me some projects', or 'find me something new'. If the user names specific skills in THIS request, pass them in overrideSkills — an explicit request wins over the saved profile for this turn.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "overrideSkills": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Skills explicitly named in this request; these take precedence over the saved profile."
          }
        }
      },
      "page": "/"
    }