Class: RailsAiBridge::Tools::ListRegistry

Inherits:
BaseTool
  • Object
show all
Defined in:
lib/rails_ai_bridge/tools/list_registry.rb

Overview

MCP tool for querying the skill pack registry catalog.

A single entry point replacing the previous +rails_list_skills+, +rails_list_agents+, and +rails_list_packs+ tools. The required +type+ parameter routes to the appropriate catalog view:

  • type: "skills" — all available skills across loaded packs
  • type: "agents" — all available agents/workflows
  • type: "packs" — loaded packs with version, priority, and summary

Examples:

List all skills

rails_list_registry type=skills

Filter skills by pack

rails_list_registry type=skills pack=rails

List active packs

rails_list_registry type=packs

Defined Under Namespace

Classes: RegistryCatalogFormatter

Constant Summary collapse

DESCRIPTION_MAX_LENGTH =
80
SETUP_DOC_PATH =
'docs/skill-registry-guide.md'
SETUP_MESSAGE =
<<~MSG.freeze
  No registry manifest found at `%<path>s`.

  To use skill registry tools, create a registry manifest file.
  See `#{SETUP_DOC_PATH}` for a step-by-step guide.

  Quick start — add `config/rails_ai_bridge_registry.json` to your Rails app:

  ```json
  {
    "version": "1.0.0",
    "packs": {},
    "default_stack": []
  }
  ```

  Then configure the registry in `config/initializers/rails_ai_bridge.rb`:

  ```ruby
  RailsAiBridge.configure do |config|
    config.registry.registry_manifest_path = "config/rails_ai_bridge_registry.json"
  end
  ```

  Once configured, add packs and run `rails ai:skills:list` to verify.
MSG
UNKNOWN_TYPE_MESSAGE =
'Unknown type `%<type>s`. Valid values: "skills", "agents", "packs".'

Class Method Summary collapse

Methods inherited from BaseTool

cached_context, cached_section, config, rails_app, reset_cache!, text_response

Class Method Details

.call(type:, pack: nil, _server_context: nil) ⇒ MCP::Tool::Response

Returns formatted catalog or a setup/error message.

Parameters:

  • type (String)

    "skills", "agents", or "packs"

  • pack (String, nil) (defaults to: nil)

    optional pack name filter (skills/agents only)

  • _server_context (Object, nil) (defaults to: nil)

    reserved for MCP transport metadata (unused)

Returns:

  • (MCP::Tool::Response)

    formatted catalog or a setup/error message



83
84
85
86
87
88
89
90
91
92
93
94
# File 'lib/rails_ai_bridge/tools/list_registry.rb', line 83

def self.call(type:, pack: nil, _server_context: nil)
  # The input_schema enum constraint above rejects unknown types before this
  # method is called. The guard below is retained as a defence-in-depth
  # fallback for callers that bypass the MCP SDK (e.g. direct Ruby tests or
  # future transport layers that skip schema validation).
  return text_response(format(UNKNOWN_TYPE_MESSAGE, type: type)) unless %w[skills agents packs].include?(type)

  resolver = Registry.build_resolver
  return text_response(format(SETUP_MESSAGE, path: manifest_path)) unless resolver

  text_response(RegistryCatalogFormatter.new(resolver, type: type, pack_filter: pack).format)
end