tools

package
v0.9.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 11, 2025 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Overview

Copyright 2025 Google LLC

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func ConvertAnySliceToTyped added in v0.9.0

func ConvertAnySliceToTyped(s []any, itemType string) (any, error)

func ConvertArrayParamToString added in v0.7.0

func ConvertArrayParamToString(param any) (string, error)

helper function to convert a string array parameter to a comma separated string

func IsAuthorized added in v0.0.4

func IsAuthorized(authRequiredSources []string, verifiedAuthServices []string) bool

Helper function that returns if a tool invocation request is authorized

func IsValidName

func IsValidName(s string) bool

func ProcessParameters added in v0.7.0

func ProcessParameters(templateParams Parameters, params Parameters) (Parameters, []ParameterManifest, McpToolsSchema)

ProcessParameters concatenate templateParameters and parameters from a tool. It returns a list of concatenated parameters, concatenated Toolbox manifest, and concatenated MCP Manifest.

func Register added in v0.7.0

func Register(kind string, factory ToolConfigFactory) bool

Register allows individual tool packages to register their configuration factory function. This is typically called from an init() function in the tool's package. It associates a 'kind' string with a function that can produce the specific ToolConfig type. It returns true if the registration was successful, and false if a tool with the same kind was already registered.

func ResolveTemplateParams added in v0.7.0

func ResolveTemplateParams(templateParams Parameters, originalStatement string, paramsMap map[string]any) (string, error)

Types

type ArrayParameter

type ArrayParameter struct {
	CommonParameter `yaml:",inline"`
	Default         *[]any    `yaml:"default"`
	Items           Parameter `yaml:"items"`
}

ArrayParameter is a parameter representing the "array" type.

func NewArrayParameter

func NewArrayParameter(name string, desc string, items Parameter) *ArrayParameter

NewArrayParameter is a convenience function for initializing a ArrayParameter.

func NewArrayParameterWithAuth added in v0.0.4

func NewArrayParameterWithAuth(name string, desc string, items Parameter, authServices []ParamAuthService) *ArrayParameter

NewArrayParameterWithAuth is a convenience function for initializing a ArrayParameter with a list of ParamAuthService.

func NewArrayParameterWithDefault added in v0.8.0

func NewArrayParameterWithDefault(name string, defaultV []any, desc string, items Parameter) *ArrayParameter

NewArrayParameterWithDefault is a convenience function for initializing a ArrayParameter with default value.

func (*ArrayParameter) GetAuthServices added in v0.2.0

func (p *ArrayParameter) GetAuthServices() []ParamAuthService

func (*ArrayParameter) GetDefault added in v0.8.0

func (p *ArrayParameter) GetDefault() any

func (*ArrayParameter) GetItems added in v0.9.0

func (p *ArrayParameter) GetItems() Parameter

func (*ArrayParameter) Manifest added in v0.2.0

func (p *ArrayParameter) Manifest() ParameterManifest

Manifest returns the manifest for the ArrayParameter.

func (*ArrayParameter) McpManifest added in v0.3.0

func (p *ArrayParameter) McpManifest() ParameterMcpManifest

McpManifest returns the MCP manifest for the ArrayParameter.

func (*ArrayParameter) Parse

func (p *ArrayParameter) Parse(v any) (any, error)

func (*ArrayParameter) UnmarshalYAML

func (p *ArrayParameter) UnmarshalYAML(ctx context.Context, unmarshal func(interface{}) error) error

type BooleanParameter

type BooleanParameter struct {
	CommonParameter `yaml:",inline"`
	Default         *bool `yaml:"default"`
}

BooleanParameter is a parameter representing the "boolean" type.

func NewBooleanParameter

func NewBooleanParameter(name string, desc string) *BooleanParameter

NewBooleanParameter is a convenience function for initializing a BooleanParameter.

func NewBooleanParameterWithAuth added in v0.0.4

func NewBooleanParameterWithAuth(name string, desc string, authServices []ParamAuthService) *BooleanParameter

NewBooleanParameterWithAuth is a convenience function for initializing a BooleanParameter with a list of ParamAuthService.

func NewBooleanParameterWithDefault added in v0.8.0

func NewBooleanParameterWithDefault(name string, defaultV bool, desc string) *BooleanParameter

NewBooleanParameterWithDefault is a convenience function for initializing a BooleanParameter with default value.

func (*BooleanParameter) GetAuthServices added in v0.2.0

func (p *BooleanParameter) GetAuthServices() []ParamAuthService

func (*BooleanParameter) GetDefault added in v0.8.0

func (p *BooleanParameter) GetDefault() any

func (*BooleanParameter) Manifest added in v0.8.0

func (p *BooleanParameter) Manifest() ParameterManifest

Manifest returns the manifest for the BooleanParameter.

func (*BooleanParameter) Parse

func (p *BooleanParameter) Parse(v any) (any, error)

type CommonParameter

type CommonParameter struct {
	Name         string             `yaml:"name" validate:"required"`
	Type         string             `yaml:"type" validate:"required"`
	Desc         string             `yaml:"description" validate:"required"`
	AuthServices []ParamAuthService `yaml:"authServices"`
	AuthSources  []ParamAuthService `yaml:"authSources"` // Deprecated: Kept for compatibility.
}

CommonParameter are default fields that are emebdding in most Parameter implementations. Embedding this stuct will give the object Name() and Type() functions.

func (*CommonParameter) GetName

func (p *CommonParameter) GetName() string

GetName returns the name specified for the Parameter.

func (*CommonParameter) GetType

func (p *CommonParameter) GetType() string

GetType returns the type specified for the Parameter.

func (*CommonParameter) McpManifest added in v0.3.0

func (p *CommonParameter) McpManifest() ParameterMcpManifest

McpManifest returns the MCP manifest for the Parameter.

type FloatParameter

type FloatParameter struct {
	CommonParameter `yaml:",inline"`
	Default         *float64 `yaml:"default"`
}

FloatParameter is a parameter representing the "float" type.

func NewFloatParameter

func NewFloatParameter(name string, desc string) *FloatParameter

NewFloatParameter is a convenience function for initializing a FloatParameter.

func NewFloatParameterWithAuth added in v0.0.4

func NewFloatParameterWithAuth(name string, desc string, authServices []ParamAuthService) *FloatParameter

NewFloatParameterWithAuth is a convenience function for initializing a FloatParameter with a list of ParamAuthService.

func NewFloatParameterWithDefault added in v0.8.0

func NewFloatParameterWithDefault(name string, defaultV float64, desc string) *FloatParameter

NewFloatParameterWithDefault is a convenience function for initializing a FloatParameter with default value.

func (*FloatParameter) GetAuthServices added in v0.2.0

func (p *FloatParameter) GetAuthServices() []ParamAuthService

func (*FloatParameter) GetDefault added in v0.8.0

func (p *FloatParameter) GetDefault() any

func (*FloatParameter) Manifest added in v0.8.0

func (p *FloatParameter) Manifest() ParameterManifest

Manifest returns the manifest for the FloatParameter.

func (*FloatParameter) Parse

func (p *FloatParameter) Parse(v any) (any, error)

type HTTPMethod added in v0.3.0

type HTTPMethod string

HTTPMethod is a string of a valid HTTP method (e.g "GET")

func (*HTTPMethod) UnmarshalYAML added in v0.3.0

func (i *HTTPMethod) UnmarshalYAML(ctx context.Context, unmarshal func(interface{}) error) error

type IntParameter

type IntParameter struct {
	CommonParameter `yaml:",inline"`
	Default         *int `yaml:"default"`
}

IntParameter is a parameter representing the "int" type.

func NewIntParameter

func NewIntParameter(name string, desc string) *IntParameter

NewIntParameter is a convenience function for initializing a IntParameter.

func NewIntParameterWithAuth added in v0.0.4

func NewIntParameterWithAuth(name string, desc string, authServices []ParamAuthService) *IntParameter

NewIntParameterWithAuth is a convenience function for initializing a IntParameter with a list of ParamAuthService.

func NewIntParameterWithDefault added in v0.8.0

func NewIntParameterWithDefault(name string, defaultV int, desc string) *IntParameter

NewIntParameterWithDefault is a convenience function for initializing a IntParameter with default value.

func (*IntParameter) GetAuthServices added in v0.2.0

func (p *IntParameter) GetAuthServices() []ParamAuthService

func (*IntParameter) GetDefault added in v0.8.0

func (p *IntParameter) GetDefault() any

func (*IntParameter) Manifest added in v0.8.0

func (p *IntParameter) Manifest() ParameterManifest

Manifest returns the manifest for the IntParameter.

func (*IntParameter) Parse

func (p *IntParameter) Parse(v any) (any, error)

type Manifest added in v0.0.2

type Manifest struct {
	Description  string              `json:"description"`
	Parameters   []ParameterManifest `json:"parameters"`
	AuthRequired []string            `json:"authRequired"`
}

Manifest is the representation of tools sent to Client SDKs.

type McpManifest added in v0.3.0

type McpManifest struct {
	// The name of the tool.
	Name string `json:"name"`
	// A human-readable description of the tool.
	Description string `json:"description,omitempty"`
	// A JSON Schema object defining the expected parameters for the tool.
	InputSchema McpToolsSchema `json:"inputSchema,omitempty"`
}

Definition for a tool the MCP client can call.

type McpToolsSchema added in v0.3.0

type McpToolsSchema struct {
	Type       string                          `json:"type"`
	Properties map[string]ParameterMcpManifest `json:"properties"`
	Required   []string                        `json:"required"`
}

McpToolsSchema is the representation of input schema for McpManifest.

type ParamAuthService added in v0.2.0

type ParamAuthService struct {
	Name  string `yaml:"name"`
	Field string `yaml:"field"`
}

type ParamValue added in v0.0.3

type ParamValue struct {
	Name  string
	Value any
}

ParamValue represents the parameter's name and value.

type ParamValues added in v0.0.3

type ParamValues []ParamValue

ParamValues is an ordered list of ParamValue

func GetParams added in v0.7.0

func GetParams(params Parameters, paramValuesMap map[string]any) (ParamValues, error)

GetParams return the ParamValues that are associated with the Parameters.

func ParseParams

func ParseParams(ps Parameters, data map[string]any, claimsMap map[string]map[string]any) (ParamValues, error)

ParseParams is a helper function for parsing Parameters from an arbitraryJSON object.

func (ParamValues) AsMap added in v0.0.3

func (p ParamValues) AsMap() map[string]interface{}

AsMap returns a map of ParamValue's names to values.

func (ParamValues) AsMapByOrderedKeys added in v0.0.3

func (p ParamValues) AsMapByOrderedKeys() map[string]interface{}

AsMapByOrderedKeys returns a map of a key's position to it's value, as necessary for Spanner PSQL. Example { $1 -> "value1", $2 -> "value2" }

func (ParamValues) AsMapWithDollarPrefix added in v0.1.0

func (p ParamValues) AsMapWithDollarPrefix() map[string]interface{}

AsMapWithDollarPrefix ensures all keys are prefixed with a dollar sign for Dgraph. Example: Input: {"role": "admin", "$age": 30} Output: {"$role": "admin", "$age": 30}

func (ParamValues) AsSlice added in v0.0.3

func (p ParamValues) AsSlice() []any

AsSlice returns a slice of the Param's values (in order).

type Parameter

type Parameter interface {
	// Note: It's typically not idiomatic to include "Get" in the function name,
	// but this is done to differentiate it from the fields in CommonParameter.
	GetName() string
	GetType() string
	GetDefault() any
	GetAuthServices() []ParamAuthService
	Parse(any) (any, error)
	Manifest() ParameterManifest
	McpManifest() ParameterMcpManifest
}

type ParameterManifest

type ParameterManifest struct {
	Name         string             `json:"name"`
	Type         string             `json:"type"`
	Required     bool               `json:"required"`
	Description  string             `json:"description"`
	AuthServices []string           `json:"authSources"`
	Items        *ParameterManifest `json:"items,omitempty"`
}

ParameterManifest represents parameters when served as part of a ToolManifest.

type ParameterMcpManifest added in v0.3.0

type ParameterMcpManifest struct {
	Type        string                `json:"type"`
	Description string                `json:"description"`
	Items       *ParameterMcpManifest `json:"items,omitempty"`
}

ParameterMcpManifest represents properties when served as part of a ToolMcpManifest.

type Parameters

type Parameters []Parameter

Parameters is a type used to allow unmarshal a list of parameters

func (Parameters) Manifest added in v0.0.2

func (ps Parameters) Manifest() []ParameterManifest

func (Parameters) McpManifest added in v0.3.0

func (ps Parameters) McpManifest() McpToolsSchema

func (*Parameters) UnmarshalYAML

func (c *Parameters) UnmarshalYAML(ctx context.Context, unmarshal func(interface{}) error) error

type ParseTypeError

type ParseTypeError struct {
	Name  string
	Type  string
	Value any
}

ParseTypeError is a custom error for incorrectly typed Parameters.

func (ParseTypeError) Error

func (e ParseTypeError) Error() string

type StringParameter

type StringParameter struct {
	CommonParameter `yaml:",inline"`
	Default         *string `yaml:"default"`
}

StringParameter is a parameter representing the "string" type.

func NewStringParameter

func NewStringParameter(name string, desc string) *StringParameter

NewStringParameter is a convenience function for initializing a StringParameter.

func NewStringParameterWithAuth added in v0.0.4

func NewStringParameterWithAuth(name string, desc string, authServices []ParamAuthService) *StringParameter

NewStringParameterWithAuth is a convenience function for initializing a StringParameter with a list of ParamAuthService.

func NewStringParameterWithDefault added in v0.8.0

func NewStringParameterWithDefault(name string, defaultV, desc string) *StringParameter

NewStringParameterWithDefault is a convenience function for initializing a StringParameter with default value.

func (*StringParameter) GetAuthServices added in v0.2.0

func (p *StringParameter) GetAuthServices() []ParamAuthService

func (*StringParameter) GetDefault added in v0.8.0

func (p *StringParameter) GetDefault() any

func (*StringParameter) Manifest added in v0.8.0

func (p *StringParameter) Manifest() ParameterManifest

Manifest returns the manifest for the StringParameter.

func (*StringParameter) Parse

func (p *StringParameter) Parse(v any) (any, error)

Parse casts the value "v" as a "string".

type Tool

type Tool interface {
	Invoke(context.Context, ParamValues) ([]any, error)
	ParseParams(map[string]any, map[string]map[string]any) (ParamValues, error)
	Manifest() Manifest
	McpManifest() McpManifest
	Authorized([]string) bool
}

type ToolConfig added in v0.0.2

type ToolConfig interface {
	ToolConfigKind() string
	Initialize(map[string]sources.Source) (Tool, error)
}

func DecodeConfig added in v0.7.0

func DecodeConfig(ctx context.Context, kind string, name string, decoder *yaml.Decoder) (ToolConfig, error)

DecodeConfig looks up the registered factory for the given kind and uses it to decode the tool configuration.

type ToolConfigFactory added in v0.7.0

type ToolConfigFactory func(ctx context.Context, name string, decoder *yaml.Decoder) (ToolConfig, error)

ToolConfigFactory defines the signature for a function that creates and decodes a specific tool's configuration. It takes the context, the tool's name, and a YAML decoder to parse the config.

type Toolset

type Toolset struct {
	Name        string          `yaml:"name"`
	Tools       []*Tool         `yaml:",inline"`
	Manifest    ToolsetManifest `yaml:",inline"`
	McpManifest []McpManifest   `yaml:",inline"`
}

type ToolsetConfig

type ToolsetConfig struct {
	Name      string   `yaml:"name"`
	ToolNames []string `yaml:",inline"`
}

func (ToolsetConfig) Initialize

func (t ToolsetConfig) Initialize(serverVersion string, toolsMap map[string]Tool) (Toolset, error)

type ToolsetManifest

type ToolsetManifest struct {
	ServerVersion string              `json:"serverVersion"`
	ToolsManifest map[string]Manifest `json:"tools"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL