Skip to main content
Glama

preference.reset

Reset or permanently delete user preference profiles and associated signals in ReftrixMCP's design analysis system, supporting GDPR compliance requirements.

Instructions

嗜好プロファイルをリセットします。confirm: trueが必須です。preference_signalsもCASCADE削除されます。Reset preference profile. confirm: true is required. preference_signals are CASCADE deleted.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
profile_idYesプロファイルID(必須) / Profile ID (required)
confirmYesリセット確認フラグ(trueでリセット実行) / Reset confirmation flag (true to execute reset)
hard_deleteNo完全削除フラグ(trueでプロファイルとシグナルを完全に削除、GDPR忘れられる権利対応) / Hard delete flag (true to permanently delete profile and signals, GDPR Right to Erasure)

Implementation Reference

  • Handler function that executes the preference.reset tool, including validation, confirmation check, and calling the preference service to reset or delete the profile.
    export async function preferenceResetHandler(input: unknown): Promise<PreferenceResetOutput> {
      if (isDevelopment()) {
        logger.info("[MCP Tool] preference.reset called", {
          profileId: truncateId((input as Record<string, unknown>)?.profile_id as string | undefined),
        });
      }
    
      // 入力バリデーション / Input validation
      let validated: PreferenceResetInput;
      try {
        validated = preferenceResetInputSchema.parse(input);
      } catch (error) {
        if (error instanceof ZodError) {
          const errorMessage = error.errors.map((e) => `${e.path.join(".")}: ${e.message}`).join(", ");
    
          logger.warn("[MCP Tool] preference.reset validation error", {
            errors: error.errors,
          });
    
          return {
            success: false,
            error: {
              code: PREFERENCE_MCP_ERROR_CODES.VALIDATION_ERROR,
              message: `Validation error: ${errorMessage}`,
            },
          };
        }
        throw error;
      }
    
      // confirm チェック / Confirm check
      if (!validated.confirm) {
        if (isDevelopment()) {
          logger.info("[MCP Tool] preference.reset rejected: confirm is false");
        }
    
        return {
          success: false,
          error: {
            code: PREFERENCE_MCP_ERROR_CODES.RESET_NOT_CONFIRMED,
            message: "Reset not confirmed. Set confirm: true to proceed with profile reset.",
          },
        };
      }
    
      // サービスファクトリーチェック / Service factory check
      if (!preferenceServiceFactory) {
        logger.warn("[MCP Tool] preference.reset service factory not set");
    
        return {
          success: false,
          error: {
            code: PREFERENCE_MCP_ERROR_CODES.SERVICE_UNAVAILABLE,
            message: "Preference service is not available",
          },
        };
      }
    
      const service = preferenceServiceFactory();
    
      try {
        // hard_delete: true → プロファイル完全削除(GDPR忘れられる権利)
        // hard_delete: true → permanently delete profile (GDPR Right to Erasure)
        if (validated.hard_delete) {
          const result = await service.deleteProfile(validated.profile_id);
    
          if (isDevelopment()) {
            logger.info("[MCP Tool] preference.reset hard delete completed", {
              profileId: truncateId(result.profile_id),
              deleted: result.deleted,
            });
          }
    
          return {
            success: true,
            data: { reset: true, profile_id: result.profile_id },
          };
        }
    
        const result = await service.resetProfile(validated.profile_id);
    
        if (isDevelopment()) {
          logger.info("[MCP Tool] preference.reset completed", {
            profileId: truncateId(result.profile_id),
            reset: result.reset,
          });
        }
    
        return {
          success: true,
          data: result,
        };
      } catch (error) {
        const errorInstance = error instanceof Error ? error : new Error(String(error));
        const errorCode = mapErrorToCode(errorInstance);
    
        // 全環境でログ出力(isDevelopmentガードなし)
        // Log in all environments (no isDevelopment guard)
        logger.warn("[MCP Tool] preference.reset error", {
          code: errorCode,
          error: errorInstance.message,
        });
    
        return {
          success: false,
          error: {
            code: errorCode,
            message: sanitizeErrorMessage(errorCode),
          },
        };
      }
    }
  • Definition for the preference.reset MCP tool, including its name, description, and input schema.
    export const preferenceResetToolDefinition = {
      name: "preference.reset",
      description:
        "嗜好プロファイルをリセットします。confirm: trueが必須です。preference_signalsもCASCADE削除されます。" +
        "Reset preference profile. confirm: true is required. preference_signals are CASCADE deleted.",
      annotations: {
        title: "Preference Reset",
        readOnlyHint: false,
        idempotentHint: true,
        openWorldHint: false,
      },
      inputSchema: {
        type: "object" as const,
        properties: {
          profile_id: {
            type: "string",
            format: "uuid",
            description: "プロファイルID(必須) / Profile ID (required)",
          },
          confirm: {
            type: "boolean",
            description:
              "リセット確認フラグ(trueでリセット実行) / Reset confirmation flag (true to execute reset)",
          },
          hard_delete: {
            type: "boolean",
            description:
              "完全削除フラグ(trueでプロファイルとシグナルを完全に削除、GDPR忘れられる権利対応) / " +
              "Hard delete flag (true to permanently delete profile and signals, GDPR Right to Erasure)",
          },
        },
        required: ["profile_id", "confirm"],
      },
    };

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TKMD/reftrix-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server