'market_management.search_markets', 'description' => 'Märkte suchen', 'inputSchema' => ['type' => 'object']], ['name' => 'market_management.get_market', 'description' => 'Markt mit Durchführungen lesen', 'inputSchema' => ['type' => 'object', 'required' => ['market_id']]], ['name' => 'market_management.create_market', 'description' => 'Markt mit bestehender Kategorie anlegen', 'inputSchema' => ['type' => 'object', 'required' => ['name', 'category_id']]], ['name' => 'market_management.update_market', 'description' => 'Markt ändern', 'inputSchema' => ['type' => 'object', 'required' => ['market_id']]], ['name' => 'market_management.archive_market', 'description' => 'Markt archivieren', 'inputSchema' => ['type' => 'object', 'required' => ['market_id']]], ['name' => 'market_management.reactivate_market', 'description' => 'Markt reaktivieren', 'inputSchema' => ['type' => 'object', 'required' => ['market_id']]], ['name' => 'market_management.list_categories', 'description' => 'Bestehende Kategorien lesen', 'inputSchema' => ['type' => 'object']], ['name' => 'market_management.create_occurrence', 'description' => 'Durchführung anlegen', 'inputSchema' => ['type' => 'object', 'required' => ['market_definition_id']]], ['name' => 'market_management.get_occurrence', 'description' => 'Durchführung mit Tagen lesen', 'inputSchema' => ['type' => 'object', 'required' => ['occurrence_id']]], ['name' => 'market_management.update_occurrence', 'description' => 'Durchführung ändern', 'inputSchema' => ['type' => 'object', 'required' => ['occurrence_id']]], ['name' => 'market_management.archive_occurrence', 'description' => 'Durchführung archivieren', 'inputSchema' => ['type' => 'object', 'required' => ['occurrence_id']]], ['name' => 'market_management.reactivate_occurrence', 'description' => 'Durchführung reaktivieren', 'inputSchema' => ['type' => 'object', 'required' => ['occurrence_id']]], ['name' => 'market_management.create_day', 'description' => 'Durchführungstag anlegen', 'inputSchema' => ['type' => 'object', 'required' => ['occurrence_id', 'date']]], ['name' => 'market_management.update_day', 'description' => 'Durchführungstag ändern', 'inputSchema' => ['type' => 'object', 'required' => ['day_id']]], ['name' => 'market_management.delete_day', 'description' => 'Durchführungstag entfernen', 'inputSchema' => ['type' => 'object', 'required' => ['day_id']]], ['name' => 'market_management.set_organizer', 'description' => 'Veranstalter einer Durchführung setzen', 'inputSchema' => ['type' => 'object', 'required' => ['occurrence_id', 'organization_contact_id', 'contact_person_id']]], ['name' => 'market_management.create_cost_item', 'description' => 'Kostenposition anlegen', 'inputSchema' => ['type' => 'object', 'required' => ['occurrence_id', 'cost_type', 'gross_amount', 'tax_status']]], ['name' => 'market_management.delete_cost_item', 'description' => 'Kostenposition entfernen', 'inputSchema' => ['type' => 'object', 'required' => ['cost_item_id']]], ]; } function market_management_mcp_call(PDO $pdo, string $tool, array $arguments): array { return match ($tool) { 'market_management.search_markets' => market_management_search_markets($pdo, $arguments), 'market_management.get_market' => market_management_get_market( $pdo, market_management_require_positive_id($arguments['market_id'] ?? null, 'market_id'), (bool) ($arguments['include_archived'] ?? false) ) ?? throw new RuntimeException('Markt nicht gefunden.'), 'market_management.create_market' => market_management_create_market($pdo, $arguments), 'market_management.update_market' => market_management_update_market( $pdo, market_management_require_positive_id($arguments['market_id'] ?? null, 'market_id'), $arguments ), 'market_management.archive_market' => market_management_set_market_archive( $pdo, market_management_require_positive_id($arguments['market_id'] ?? null, 'market_id'), true ), 'market_management.reactivate_market' => market_management_set_market_archive( $pdo, market_management_require_positive_id($arguments['market_id'] ?? null, 'market_id'), false ), 'market_management.list_categories' => market_management_list_categories($pdo), 'market_management.create_occurrence' => market_management_create_occurrence($pdo, $arguments), 'market_management.get_occurrence' => market_management_get_occurrence( $pdo, market_management_require_positive_id($arguments['occurrence_id'] ?? null, 'occurrence_id'), (bool) ($arguments['include_archived'] ?? false) ) ?? throw new RuntimeException('Durchführung nicht gefunden.'), 'market_management.update_occurrence' => market_management_update_occurrence( $pdo, market_management_require_positive_id($arguments['occurrence_id'] ?? null, 'occurrence_id'), $arguments ), 'market_management.archive_occurrence' => market_management_set_occurrence_archive( $pdo, market_management_require_positive_id($arguments['occurrence_id'] ?? null, 'occurrence_id'), true ), 'market_management.reactivate_occurrence' => market_management_set_occurrence_archive( $pdo, market_management_require_positive_id($arguments['occurrence_id'] ?? null, 'occurrence_id'), false ), 'market_management.create_day' => market_management_create_day($pdo, $arguments), 'market_management.update_day' => market_management_update_day( $pdo, market_management_require_positive_id($arguments['day_id'] ?? null, 'day_id'), $arguments ), 'market_management.delete_day' => market_management_delete_day( $pdo, market_management_require_positive_id($arguments['day_id'] ?? null, 'day_id') ), 'market_management.set_organizer' => market_management_set_organizer($pdo, $arguments), 'market_management.create_cost_item' => market_management_create_cost_item($pdo, $arguments), 'market_management.delete_cost_item' => market_management_delete_cost_item( $pdo, market_management_require_positive_id($arguments['cost_item_id'] ?? null, 'cost_item_id') ), default => throw new InvalidArgumentException('Unbekanntes MCP-Tool: ' . $tool), }; }