Skip to main content
Glama
redis

Redis Cloud API MCP Server

Official
by redis

create-essential-subscription

Set up a new essential subscription for Redis Cloud by specifying a name, payment method, and plan ID. Returns a TASK ID to monitor subscription creation progress.

Instructions

Create a new essential subscription. Returns a TASK ID that can be used to track the status of the subscription creation

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
nameYesSubscription name
paymentMethodNoPayment methodcredit-card
paymentMethodIdNoPayment method ID
planIdYesPlan ID. The plan ID can be taken from /fixed/plans

Implementation Reference

  • Handler function that extracts and validates input parameters (name, planId, paymentMethod, paymentMethodId), constructs the request body, calls SubscriptionsEssentialsService.createSubscription1 via executeApiCall, and returns the response.
    "create-essential-subscription": async (request) => {
      const { name, planId, paymentMethod, paymentMethodId } = extractArguments<{
        name: string;
        planId: number;
        paymentMethod?: FixedSubscriptionCreateRequest["paymentMethod"];
        paymentMethodId?: number;
      }>(request);
    
      // Validate input
      validateToolInput(
        createSubscriptionSchema,
        { name, planId, paymentMethod, paymentMethodId },
        "Create essential subscription",
      );
    
      // If paymentMethod is credit-card, paymentMethodId is required
      if (paymentMethod === "credit-card" && !paymentMethodId) {
        throw new Error(
          "paymentMethodId is required when paymentMethod is credit-card",
        );
      }
    
      const reqBody: FixedSubscriptionCreateRequest = {
        name,
        planId,
        ...(paymentMethod && { paymentMethod }),
        ...(paymentMethodId && { paymentMethodId }),
      };
    
      const result = await executeApiCall(
        () => SubscriptionsEssentialsService.createSubscription1(reqBody),
        "Create essential subscription",
      );
      return createToolResponse(result);
    },
  • Tool schema definition for create-essential-subscription, including input schema with properties for name, planId, paymentMethod, paymentMethodId, and required fields.
    const CREATE_ESSENTIAL_SUBSCRIPTION_TOOL: Tool = {
      name: "create-essential-subscription",
      description:
        "Create a new essential subscription. Returns a TASK ID that can be used to track the status of the subscription creation",
      inputSchema: {
        type: "object",
        properties: {
          name: {
            type: "string",
            description: "Subscription name",
          },
          planId: {
            type: "number",
            description: "Plan ID. The plan ID can be taken from /fixed/plans",
          },
          paymentMethod: {
            type: "string",
            description: "Payment method",
            enum: ["credit-card", "marketplace"],
            default: "credit-card",
          },
          paymentMethodId: {
            type: "number",
            description: "Payment method ID",
          },
        },
        required: ["name", "planId"],
      },
    };
  • Registration of the create-essential-subscription tool in the SUBSCRIPTIONS_ESSENTIALS_TOOLS array export.
    export const SUBSCRIPTIONS_ESSENTIALS_TOOLS = [
      GET_ESSENTIAL_SUBSCRIPTIONS_TOOL,
      GET_ESSENTIAL_SUBSCRIPTION_BY_ID_TOOL,
      CREATE_ESSENTIAL_SUBSCRIPTION_TOOL,
      DELETE_ESSENTIAL_SUBSCRIPTION_TOOL,
      GET_ESSENTIALS_PLANS_TOOL,
    ];
  • The handlers object export that includes the create-essential-subscription handler key.
    export const SUBSCRIPTIONS_ESSENTIALS_HANDLERS: ToolHandlers = {
      "get-essential-subscriptions": async (request) => {
        const { page = 0, size = DEFAULT_PAGE_SIZE } = extractArguments<{
          page?: number;
          size?: number;
        }>(request);
    
        // Validate input
        validateToolInput(
          getSubscriptionsSchema,
          { page, size },
          "Essential subscriptions request",
        );
    
        const response = await executeApiCall(
          () => SubscriptionsEssentialsService.getAllSubscriptions1(),
          "Get essential subscriptions",
        );
    
        const allSubscriptions = response.subscriptions || [];
    
        // Calculate pagination
        const startIndex = page * size;
        const endIndex = startIndex + size;
        const paginatedSubscriptions = allSubscriptions.slice(startIndex, endIndex);
    
        const pageable: Pageable = {
          page,
          size,
        };
    
        return createToolResponse(
          createPage(paginatedSubscriptions, pageable, allSubscriptions.length),
        );
      },
    
      "get-essential-subscription-by-id": async (request) => {
        const { subscriptionId } = extractArguments<{ subscriptionId: number }>(
          request,
        );
    
        // Validate input
        validateToolInput(
          subscriptionIdSchema,
          { subscriptionId },
          "Essential subscription ID",
        );
    
        const subscription = await executeApiCall(
          () => SubscriptionsEssentialsService.getSubscriptionById1(subscriptionId),
          `Get essential subscription ${subscriptionId}`,
        );
        return createToolResponse(subscription);
      },
    
      "delete-essential-subscription": async (request) => {
        const { subscriptionId } = extractArguments<{ subscriptionId: number }>(
          request,
        );
    
        // Validate input
        validateToolInput(
          subscriptionIdSchema,
          { subscriptionId },
          "Essential subscription ID",
        );
    
        const result = await executeApiCall(
          () =>
            SubscriptionsEssentialsService.deleteSubscriptionById1(subscriptionId),
          `Delete essential subscription ${subscriptionId}`,
        );
        return createToolResponse(result);
      },
    
      "get-essentials-plans": async (request) => {
        const {
          provider,
          redisFlex,
          page = 0,
          size = DEFAULT_PAGE_SIZE,
        } = extractArguments<{
          provider: "AWS" | "GCP" | "AZURE";
          redisFlex: boolean;
          page?: number;
          size?: number;
        }>(request);
    
        // Validate input
        validateToolInput(
          getPlansSchema,
          { provider, redisFlex, page, size },
          "Essential plans request",
        );
    
        const response = await executeApiCall(
          () =>
            SubscriptionsEssentialsService.getAllFixedSubscriptionsPlans(
              provider,
              redisFlex,
            ),
          `Get essential plans for ${provider}`,
        );
    
        const allPlans = response.plans.map((plan) => ({
          id: plan.id,
          name: plan.name,
          size: plan.size,
          sizeMeasurementUnit: plan.sizeMeasurementUnit,
          regionId: plan.regionId,
          price: plan.price,
          priceCurrency: plan.priceCurrency,
          pricePeriod: plan.pricePeriod,
        }));
    
        // Calculate pagination
        const startIndex = page * size;
        const endIndex = startIndex + size;
        const paginatedPlans = allPlans.slice(startIndex, endIndex);
    
        const pageable: Pageable = {
          page,
          size,
        };
    
        return createToolResponse(
          createPage(paginatedPlans, pageable, allPlans.length),
        );
      },
    
      "create-essential-subscription": async (request) => {
        const { name, planId, paymentMethod, paymentMethodId } = extractArguments<{
          name: string;
          planId: number;
          paymentMethod?: FixedSubscriptionCreateRequest["paymentMethod"];
          paymentMethodId?: number;
        }>(request);
    
        // Validate input
        validateToolInput(
          createSubscriptionSchema,
          { name, planId, paymentMethod, paymentMethodId },
          "Create essential subscription",
        );
    
        // If paymentMethod is credit-card, paymentMethodId is required
        if (paymentMethod === "credit-card" && !paymentMethodId) {
          throw new Error(
            "paymentMethodId is required when paymentMethod is credit-card",
          );
        }
    
        const reqBody: FixedSubscriptionCreateRequest = {
          name,
          planId,
          ...(paymentMethod && { paymentMethod }),
          ...(paymentMethodId && { paymentMethodId }),
        };
    
        const result = await executeApiCall(
          () => SubscriptionsEssentialsService.createSubscription1(reqBody),
          "Create essential subscription",
        );
        return createToolResponse(result);
      },
    };

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/redis/mcp-redis-cloud'

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