Documentation
¶
Overview ¶
Package dynamic registers the low-token dynamic toolset for GitLab actions.
Index ¶
- func AddStandaloneCatalog(catalog *actionregistry.Catalog, client *gitlabclient.Client, ...) (*actionregistry.Catalog, error)
- func AddStandaloneRoutes(routes map[string]toolutil.ActionMap, client *gitlabclient.Client, ...) (map[string]toolutil.ActionMap, error)
- func NormalizeActionScopedParams(actionID string, params, schema map[string]any) map[string]any
- func RegisterCatalogFindExecuteTools(server *mcp.Server, catalog *actionregistry.Catalog)
- func RegisterCatalogTools(server *mcp.Server, catalog *actionregistry.Catalog)
- type ActionDescription
- type ActionExample
- type DescribeInput
- type DescribeOutput
- type ExecuteInput
- type FindInput
- type FindOutput
- type FindResult
- type Registry
- func (r *Registry) Describe(_ context.Context, _ *mcp.CallToolRequest, input DescribeInput) (*mcp.CallToolResult, DescribeOutput, error)
- func (r *Registry) Execute(ctx context.Context, req *mcp.CallToolRequest, input ExecuteInput) (*mcp.CallToolResult, any, error)
- func (r *Registry) Find(_ context.Context, _ *mcp.CallToolRequest, input FindInput) (*mcp.CallToolResult, FindOutput, error)
- func (r *Registry) Search(_ context.Context, _ *mcp.CallToolRequest, input SearchInput) (*mcp.CallToolResult, SearchOutput, error)
- type SearchInput
- type SearchOutput
- type SearchResult
- type StandaloneOptions
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AddStandaloneCatalog ¶
func AddStandaloneCatalog(catalog *actionregistry.Catalog, client *gitlabclient.Client, opts StandaloneOptions) (*actionregistry.Catalog, error)
AddStandaloneCatalog adds non-meta standalone tools to the canonical dynamic action catalog so dynamic mode can execute them without increasing the visible tool count.
func AddStandaloneRoutes ¶
func AddStandaloneRoutes(routes map[string]toolutil.ActionMap, client *gitlabclient.Client, opts StandaloneOptions) (map[string]toolutil.ActionMap, error)
AddStandaloneRoutes adds non-meta standalone tools to the canonical dynamic action catalog so dynamic mode can still execute them through gitlab_execute_tool without increasing the visible tool count.
func NormalizeActionScopedParams ¶
NormalizeActionScopedParams applies compatibility aliases that are safe only for a specific dynamic catalog action.
func RegisterCatalogFindExecuteTools ¶
func RegisterCatalogFindExecuteTools(server *mcp.Server, catalog *actionregistry.Catalog)
RegisterCatalogFindExecuteTools registers the experimental two-tool dynamic catalog from the canonical action catalog.
func RegisterCatalogTools ¶
func RegisterCatalogTools(server *mcp.Server, catalog *actionregistry.Catalog)
RegisterCatalogTools registers the dynamic search, describe, and execute tools from the canonical action catalog.
Types ¶
type ActionDescription ¶
type ActionDescription struct {
ID string `json:"id" jsonschema:"Canonical action ID."`
Tool string `json:"tool" jsonschema:"Backing meta-tool name."`
Domain string `json:"domain" jsonschema:"Canonical action domain."`
Action string `json:"action" jsonschema:"Action name inside the catalog group."`
SchemaURI string `json:"schema_uri" jsonschema:"MCP resource URI for the action parameter schema."`
Destructive bool `json:"destructive" jsonschema:"Whether this action requires explicit confirmation."`
RequiredParams []string `json:"required_params,omitempty" jsonschema:"Required parameter names captured from the input schema."`
Usage string `json:"usage,omitempty" jsonschema:"Short disambiguation note for commonly confused actions."`
InputSchema map[string]any `json:"input_schema" jsonschema:"Exact JSON Schema for action-specific params."`
OutputSchema map[string]any `json:"output_schema,omitempty" jsonschema:"Best-effort JSON Schema for the action result."`
Example ActionExample `json:"example" jsonschema:"Example gitlab_execute_tool call."`
}
ActionDescription describes one GitLab catalog action.
type ActionExample ¶
type ActionExample struct {
Tool string `json:"tool" jsonschema:"Tool to call for execution."`
Arguments map[string]any `json:"arguments" jsonschema:"Example arguments for gitlab_execute_tool."`
}
ActionExample shows how to call gitlab_execute_tool for an action.
type DescribeInput ¶
type DescribeInput struct {
Action string `json:"action,omitempty" jsonschema:"Canonical action ID to describe, such as project.create. Use either action or actions."`
Actions []string `json:"actions,omitempty" jsonschema:"Canonical action IDs to describe in one call."`
}
DescribeInput is the input for gitlab_describe_tools.
type DescribeOutput ¶
type DescribeOutput struct {
Count int `json:"count" jsonschema:"Number of described actions."`
Actions []ActionDescription `json:"actions" jsonschema:"Detailed action descriptions."`
}
DescribeOutput is the structured output for gitlab_describe_tools.
type ExecuteInput ¶
type ExecuteInput struct {
Action string `` /* 147-byte string literal not displayed */
Params map[string]any `` /* 162-byte string literal not displayed */
Confirm bool `json:"confirm,omitempty" jsonschema:"Set true to explicitly confirm destructive actions."`
}
ExecuteInput is the input for gitlab_execute_tool.
type FindInput ¶
type FindInput struct {
Query string `` /* 137-byte string literal not displayed */
Limit int `json:"limit,omitempty" jsonschema:"Maximum number of matches to return. Defaults to 20 and is capped at 50."`
}
FindInput is the input for gitlab_find_action.
type FindOutput ¶
type FindOutput struct {
Query string `json:"query" jsonschema:"Original search query."`
Count int `json:"count" jsonschema:"Number of returned matches."`
Results []FindResult `json:"results" jsonschema:"Matching GitLab catalog actions with schemas and execute examples."`
}
FindOutput is the structured output for gitlab_find_action.
type FindResult ¶
type FindResult struct {
ID string `json:"id" jsonschema:"Canonical action ID to pass to gitlab_execute_tool."`
Tool string `json:"tool" jsonschema:"Backing meta-tool name."`
Domain string `json:"domain" jsonschema:"Canonical action domain."`
Action string `json:"action" jsonschema:"Action name inside the catalog group."`
SchemaURI string `json:"schema_uri" jsonschema:"MCP resource URI for the action parameter schema."`
Destructive bool `json:"destructive" jsonschema:"Whether this action requires explicit confirmation."`
RequiredParams []string `json:"required_params,omitempty" jsonschema:"Required parameter names captured from the input schema."`
Usage string `json:"usage,omitempty" jsonschema:"Short disambiguation note for commonly confused actions."`
Score int `json:"score" jsonschema:"Lexical relevance score for the query."`
InputSchema map[string]any `json:"input_schema" jsonschema:"Exact JSON Schema for action-specific params."`
OutputSchema map[string]any `json:"output_schema,omitempty" jsonschema:"Best-effort JSON Schema for the action result."`
Example ActionExample `json:"example" jsonschema:"Example gitlab_execute_tool call."`
}
FindResult is a matching catalog action with schema details and an execute example.
type Registry ¶
type Registry struct {
// contains filtered or unexported fields
}
Registry holds a deterministic action index and dispatch handlers.
func NewRegistry ¶
NewRegistry builds a deterministic action registry from visible meta routes.
func NewRegistryFromCatalog ¶
func NewRegistryFromCatalog(catalog *actionregistry.Catalog) *Registry
NewRegistryFromCatalog builds a deterministic dynamic action index from the canonical action catalog.
func (*Registry) Describe ¶
func (r *Registry) Describe(_ context.Context, _ *mcp.CallToolRequest, input DescribeInput) (*mcp.CallToolResult, DescribeOutput, error)
Describe returns schemas and execution metadata for GitLab catalog actions.
func (*Registry) Execute ¶
func (r *Registry) Execute(ctx context.Context, req *mcp.CallToolRequest, input ExecuteInput) (*mcp.CallToolResult, any, error)
Execute dispatches one catalog action through the existing meta-tool handler.
func (*Registry) Find ¶
func (r *Registry) Find(_ context.Context, _ *mcp.CallToolRequest, input FindInput) (*mcp.CallToolResult, FindOutput, error)
Find searches GitLab catalog actions and includes exact schemas for matches.
func (*Registry) Search ¶
func (r *Registry) Search(_ context.Context, _ *mcp.CallToolRequest, input SearchInput) (*mcp.CallToolResult, SearchOutput, error)
Search finds GitLab catalog actions by lexical matching over action metadata.
type SearchInput ¶
type SearchInput struct {
Query string `` /* 137-byte string literal not displayed */
Limit int `json:"limit,omitempty" jsonschema:"Maximum number of matches to return. Defaults to 20 and is capped at 50."`
}
SearchInput is the input for gitlab_search_tools.
type SearchOutput ¶
type SearchOutput struct {
Query string `json:"query" jsonschema:"Original search query."`
Count int `json:"count" jsonschema:"Number of returned matches."`
Results []SearchResult `json:"results" jsonschema:"Matching GitLab catalog actions."`
}
SearchOutput is the structured output for gitlab_search_tools.
type SearchResult ¶
type SearchResult struct {
ID string `json:"id" jsonschema:"Canonical action ID to pass to gitlab_describe_tools or gitlab_execute_tool."`
Tool string `json:"tool" jsonschema:"Backing meta-tool name."`
Domain string `json:"domain" jsonschema:"Canonical action domain."`
Action string `json:"action" jsonschema:"Action name inside the catalog group."`
SchemaURI string `json:"schema_uri" jsonschema:"MCP resource URI for the action parameter schema."`
Destructive bool `json:"destructive" jsonschema:"Whether this action is marked destructive and requires explicit confirmation."`
RequiredParams []string `json:"required_params,omitempty" jsonschema:"Required parameter names captured from the action input schema."`
Usage string `json:"usage,omitempty" jsonschema:"Short disambiguation note for commonly confused actions."`
Score int `json:"score" jsonschema:"Lexical relevance score for the query."`
}
SearchResult is one matching GitLab catalog action.
type StandaloneOptions ¶
StandaloneOptions controls which standalone tools are added to the canonical dynamic action catalog.