ek9_query_tool_catalogue

Returns the whole EK9 tool inventory grouped by category - toolCount and toolNames per category plus workflowNames by default; verbosity:'summary' adds each tool's description, rules and IDE precedent, 'full' the JSON schemas.

Category: Enquiry

When to use it

'What tools are there' is one call with {} at session start - every tool's name by category (enquiry/editor/execution) and the workflow names in ~4K. Use verbosity:'summary' for descriptions, rules and IDE precedents; cache it, the catalogue is static within a session.

When not to use it

Details

Pure static read of the in-process McpToolRegistry - no workspace coupling. verbosity: 'none' (default) = names + counts; 'summary' = the slim catalogue (first-sentence descriptions, categoryRules, idePrecedent / rules / workflows when present - OMITTED when absent, so use property-presence); 'full' = with inputSchema. includeSchemas:true lifts any level to 'full'. category narrows to one of enquiry / editor / execution - the only way schemas fit under the 128 KB ceiling. The JSON field is 'rules'; toolCount is emitted at the top and per category. CLI parity: ek9 -h -E8 (slim) / ek9 -h -E7 (full).

Arguments

ArgumentTypeRequiredWhat it is
categorystring: enquiry | editor | executionOnly this category's section
includeSchemasbooleanInclude the JSON Schema for every tool (lifts verbosity to 'full'). Default false.
verbositystring: full | summary | noneResponse size: 'none' (default) = names + counts (~4K); 'summary' = the slim catalogue with descriptions, rules and workflows; 'full' = with every tool's JSON schema.

Recorded calls

Real calls, recorded against small projects and checked on every build - a changed answer fails it.

Catalogue names default

Request

{ }

Response

{
  "categories" : {
    "editor" : {
      "toolCount" : 75,
      "toolNames" : [ "ek9_write_file", "ek9_delete_file", "ek9_delete_directory", "ek9_move_file", "ek9_rename_file", "ek9_edit_file", "ek9_new_construct", "ek9_remove_statements", "ek9_remove_comments", "ek9_insert_statements", "ek9_create_dynamic_function", "ek9_create_dynamic_class", "ek9_add_field", "ek9_rename_field", "ek9_remove_field", "ek9_introduce_field", "ek9_introduce_parameter", "ek9_safe_delete", "ek9_extract_method", "ek9_extract_variable", "ek9_extract_constant", "ek9_promote_to_constant", "ek9_organize_constants", "ek9_create_requirement", "ek9_update_requirement", "ek9_inline_variable", "ek9_inline_function", "ek9_rename_symbol", "ek9_change_signature", "ek9_fix_purity_contract", "ek9_change_visibility", "ek9_make_open", "ek9_make_closed", "ek9_make_abstract", "ek9_make_concrete", "ek9_seal_type", "ek9_unseal_type", "ek9_add_to_sealed_allowlist", "ek9_add_method", "ek9_add_route", "ek9_add_application", "ek9_add_program", "ek9_anchor_test", "ek9_apply_symbolic_fix", "ek9_apply_guard_pattern", "ek9_add_constructor", "ek9_convert_constructor", "ek9_add_operator", "ek9_collapse_to_default_operator", "ek9_expand_default_operator", "ek9_adopt_trait", "ek9_implement_methods", "ek9_generate_delegation", "ek9_generate_dispatcher", "ek9_prune_empty_sources", "ek9_rewrite_string_concat", "ek9_insert_coalescing", "ek9_surround_with", "ek9_move_construct", "ek9_pull_up", "ek9_push_down", "ek9_extract_trait", "ek9_toggle_block_comment", "ek9_format", "ek9_edit_localized_text", "ek9_extract_to_localized_text", "ek9_organize_localized_text", "ek9_organize_references", "ek9_sync_references", "ek9_add_dependency", "ek9_remove_dependency", "ek9_exclude_transitive_dependency", "ek9_remove_transitive_exclusion", "ek9_add_capability", "ek9_remove_capability" ]
    },
    "enquiry" : {
      "toolCount" : 77,
      "toolNames" : [ "ek9_version", "ek9_help", "ek9_explain_error", "ek9_paradigm", "ek9_ask", "ek9_query_tool_catalogue", "ek9_query_tool_detail", "ek9_query_workflow", "ek9_list_workflows", "ek9_query_metric_limits", "ek9_read_construct", "ek9_read_file", "ek9_search_text", "ek9_list_files", "ek9_check_requirements", "ek9_query_requirement", "ek9_render_specification", "ek9_find_unused_code", "ek9_find_inline_candidates", "ek9_query_translation_completeness", "ek9_git_status", "ek9_git_diff", "ek9_git_log", "ek9_git_blame", "ek9_git_branch", "ek9_check_package_dependency_cycles", "ek9_query_package_version", "ek9_query_package", "ek9_query_name_clashes", "ek9_inspect_symbol_at_cursor", "ek9_list_visible_symbols", "ek9_query_complexity", "ek9_query_construct", "ek9_query_flow", "ek9_advise_loop", "ek9_verify_method", "ek9_query_module", "ek9_query_pipeline", "ek9_query_workspace", "ek9_query_classes", "ek9_query_records", "ek9_query_traits", "ek9_query_components", "ek9_query_constrained_types", "ek9_query_functions", "ek9_query_programs", "ek9_query_enumerations", "ek9_query_localisations", "ek9_query_env_vars", "ek9_query_capability_usage", "ek9_query_sensitive_reveals", "ek9_query_service_routes", "ek9_query_diagnostics", "ek9_query_effective_api", "ek9_query_type_hierarchy", "ek9_query_references", "ek9_query_dispatchers", "ek9_query_build_status", "ek9_query_call_graph", "ek9_find_constructs_by_name", "ek9_find_symbols", "ek9_query_dependency_injection", "ek9_query_module_dependencies", "ek9_query_module_landscape", "ek9_query_module_coupling", "ek9_query_module_cohesion", "ek9_query_construct_neighbourhood", "ek9_query_purity_impact", "ek9_query_data_touch", "ek9_query_mutex_payload", "ek9_query_signature_impact", "ek9_check_module_cycles", "ek9_query_dependency_tree", "ek9_query_lock_analysis", "ek9_query_deadlock_chain", "ek9_query_enter_sites", "ek9_query_lock_identity" ]
    },
    "execution" : {
      "toolCount" : 29,
      "toolNames" : [ "ek9_compile", "ek9_clean", "ek9_run_tests", "ek9_run_quality_checks", "ek9_generate_edge_case_tests", "ek9_git_init", "ek9_git_add", "ek9_git_commit", "ek9_git_push", "ek9_git_switch", "ek9_git_merge", "ek9_git_restore", "ek9_git_revert", "ek9_git_fetch", "ek9_git_pull", "ek9_git_stash", "ek9_package", "ek9_install_package", "ek9_deploy_package", "ek9_generate_signing_keys", "ek9_set_version", "ek9_set_feature_version", "ek9_increment_version", "ek9_resolve_dependencies", "ek9_run_program", "ek9_debug_session", "ek9_debug_control", "ek9_debug_inspect", "ek9_debug_observe" ]
    }
  },
  "meta" : {
    "serverMs" : "<timing>"
  },
  "nextStep" : "ek9_query_tool_detail tool:'<name>' for one tool's parameters; verbosity:'summary' here for every tool's description, rules and IDE precedent; ek9_query_workflow name:'<workflow>' for a step sequence.",
  "status" : "ok",
  "toolCount" : 181,
  "workflowCount" : 4,
  "workflowNames" : [ "release", "feature_branch_start", "investigate_build_failure", "investigate_runtime_defect" ]
}

Catalogue slim shape

Request

{
  "verbosity" : "summary"
}

Response

{
  "categories" : {
    "editor" : {
      "categoryRules" : [ "After a sequence of editor calls, run ek9_compile (or ek9_run_tests) to verify.", "Call with dryRun:true first to preview the changeset — status is ready / would-fail / conflicts — then re-issue the SAME args with dryRun:false to apply.", "Control response size with verbosity: \"full\" (default — every edit's before/after bodies), \"summary\" (keep each edit's file/type/line range, drop the bodies), or \"none\" (just editCount + the risk block). On an apply after a dry-run already showed the render, verbosity:\"summary\" — or its retained alias terse:true — keeps what changed where without paying for the content twice.", "Pass terseErrors:true to collapse would-be diagnostics to one line each (code/file/line/message); recover the full explanation for any code with ek9_explain_error <code>." ],
      "description" : "Mutate source or package directive. Produce a reviewable changeset; default policy is confirm-on-write.",
      "tools" : [ {
        "description" : "Answers first: status (applied | ready | would-fail | conflicts), written, edits[{file, type:create|overwrite, bytesWritten}] and contentHash; a .ek9 write carries wouldBeDiagnostics from the verifying compile, any other file is written as-is.",
        "idePrecedent" : "fs.writeFile / Write tool (Claude Code) / IDE write-back",
        "name" : "ek9_write_file"
      }, {
        "description" : "Answers first: status (applied | ready | conflicts | would-fail), written and, on a refusal, referenceCount + referencingFiles[] before the per-site conflicts[]; edits[{file, type:delete, disposition}].",
        "idePrecedent" : "IntelliJ Safe Delete (file-level) / shell rm",
        "name" : "ek9_delete_file"
      }, {
        "description" : "Answers first: status (applied | ready | conflicts), written and edits[{file, type:delete, kind:directory}] - removes an EMPTY workspace directory, never a populated tree.",
        "idePrecedent" : "IntelliJ \"Delete\" on an empty directory / shell rmdir",
        "name" : "ek9_delete_directory"
      }, {
        "description" : "Answers first: status (applied | ready | conflicts), written and edits[{file, newFile, type:move}] - a pure file-system relocation of any workspace file, contents untouched.",
        "idePrecedent" : "IntelliJ \"Refactor → Move\" (file-level) / shell mv",
        "name" : "ek9_move_file"
      }, {
        "description" : "Answers first: status (applied | ready | conflicts), written and edits[{file, newFile, type:move}] - a pure file-system rename of a .ek9 source, contents and module identity untouched.",
        "idePrecedent" : "IntelliJ \"Refactor → Rename File\"",
...

Cut short here: 824 more lines. The whole recorded call.