Class: OmnifocusMcp::Tools::Definitions::RemoveItemTool

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

Overview

‘FastMcp::Tool` for `remove_item`.

Instance Method Summary collapse

Methods included from OperationFactory

default_operation_factory, extended, operation_factory, operation_factory=

Instance Method Details

#call(**args) ⇒ Object



32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# File 'lib/omnifocus_mcp/tools/definitions/remove_item_tool.rb', line 32

def call(**args)
  if missing_identifier?(args)
    return McpEnvelope::ToolReply.failure(Messages::RemoveItem.missing_identifier).to_envelope
  end

  unless %w[task project].include?(args[:itemType])
    return McpEnvelope::ToolReply.failure(Messages::RemoveItem.invalid_item_type(args[:itemType])).to_envelope
  end

  McpEnvelope.safely("removing #{args[:itemType]}") do
    operation.call(Params::RemoveItemParams.from_mcp(args)).fold(
      on_ok: ->(removed) { McpEnvelope::ToolReply.success(Messages::RemoveItem.success(args, removed)) },
      on_error: ->(err) { McpEnvelope::ToolReply.failure(Messages::RemoveItem.failure(args, err)) }
    )
  end
end