Class: OmnifocusMcp::Tools::Definitions::BatchRemoveItemsTool

Inherits:
FastMcp::Tool
  • Object
show all
Extended by:
OperationFactory
Defined in:
lib/omnifocus_mcp/tools/definitions/batch_remove_items_tool.rb

Overview

‘FastMcp::Tool` for `batch_remove_items`.

Instance Method Summary collapse

Methods included from OperationFactory

default_operation_factory, extended, operation_factory, operation_factory=

Instance Method Details

#call(**args) ⇒ Object



36
37
38
39
40
41
42
43
44
45
46
47
48
# File 'lib/omnifocus_mcp/tools/definitions/batch_remove_items_tool.rb', line 36

def call(**args)
  items = Array(args[:items]).map { |item| Params::BatchRemoveItemParams.from_mcp(item) }
  if any_missing_identifier?(items)
    return McpEnvelope::ToolReply.failure(Messages::BatchRemoveItems.missing_identifier).to_envelope
  end

  McpEnvelope.safely("processing batch removal") do
    operation.call(items).fold(
      on_ok: ->(results) { success_reply(results, items) },
      on_error: ->(err) { McpEnvelope::ToolReply.failure(Presenters::BatchReport.format_failure(err)) }
    )
  end
end