mcpField
C
canhelp

canhelp

github.com/dfinityDevelopment39209 installsUpdated today
Repository

About canhelp

canhelp is a skill for developers who need to inspect an Internet Computer canister interface. It resolves a canister name or ID, fetches its Candid file, and guides a structured summary of methods and types.

Key features

  1. 01Resolve canister names or IDs
  2. 02Fetch Candid interfaces
  3. 03Group query and update methods
  4. 04Summarize custom types
  5. 05Handle multiple matches and fetch errors

Use cases

  1. 01Inspecting a canister before integration
  2. 02Reviewing available methods and types
  3. 03Checking why interface retrieval failed

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/dfinity/icskills --skill canhelp

After installing, type/canhelpin Claude Code to confirm it loaded.

Bundled filesscripts/fetch-candid.shscripts/resolve-canister-id.sh

Details

From the project README

Given a canister ID or name in $ARGUMENTS, fetch and summarize its Candid interface.

Steps

  1. Resolve the canister ID by running the resolve script from the skill's base directory:

    ./scripts/resolve-canister-id.sh "$ARGUMENTS"
    

    If $ARGUMENTS is already a valid principal, the script echoes it back. Otherwise, it queries the IC Dashboard API and outputs matches as <canister-id> <name> (one per line).

    • If there is a single result, clearly display the resolved canister ID and use it directly.
    • If there are multiple results, present the list to the user and ask them to pick one before continuing.
  2. Fetch the Candid interface using the resolved canister ID:

    ./scripts/fetch-candid.sh <resolved-canister-id>
    

    The script outputs the path to the downloaded .did file.

  3. Read the file using the Read tool.

  4. Present the output as a readable summary with the following structure:

    Canister <canister-id>

    Query methods:

    • method_name(arg1: type1, arg2: type2) → return_type — one-line description if inferable from the name

    Update methods:

    • method_name(arg1: type1) → return_type

    Types:

    • List any custom record/variant types defined in the interface, with their fields

Guidelines

  • Group methods by query vs update
  • Sort methods alphabetically within each group
  • For complex nested types, show the top-level structure and note nesting
  • If the candid is very large (>100 methods), show a summary count and list only the most important-looking methods, offering to show the full list on request
  • If the fetch succeeds, but the Candid interface is empty,explain that the canister is not exposing its Candid interface in the wasm metadata
  • If the fetch fails, suggest the user verify the canister ID and that icp is installed

Comments

Markdown supported