You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
docuseal/lib/mcp/tools/search_templates.rb

54 lines
1.4 KiB

# frozen_string_literal: true
module Mcp
module Tools
module SearchTemplates
SCHEMA = {
name: 'search_templates',
title: 'Search Templates',
description: 'Search document templates by name',
inputSchema: {
type: 'object',
properties: {
q: {
type: 'string',
description: 'Search query to filter templates by name'
},
limit: {
type: 'integer',
description: 'The number of templates to return (default 10)'
}
},
required: %w[q]
},
annotations: {
readOnlyHint: true,
destructiveHint: false,
idempotentHint: true,
openWorldHint: false
}
}.freeze
module_function
def call(arguments, current_user, current_ability)
templates = Templates.search(current_user, Template.accessible_by(current_ability).active, arguments['q'])
limit = arguments.fetch('limit', 10).to_i
limit = 10 if limit <= 0
limit = [limit, 100].min
templates = templates.order(id: :desc).limit(limit)
{
content: [
{
type: 'text',
text: templates.map { |t| { id: t.id, name: t.name } }.to_json
}
]
}
end
end
end
end