Skip to main content
Glama

dsers.product.visibility

Switch product job visibility between draft and published modes before pushing to storefront. Control when imported products become visible to shoppers.

Instructions

Change the visibility mode of a prepared job before pushing it to the store. Call this between dsers.product.import and dsers.store.push to switch between draft and published. Returns: job_id, status, visibility_mode.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
job_idYesJob ID returned by dsers.product.import.
visibility_modeYesNew visibility mode. backend_only: save as draft, not visible to shoppers. sell_immediately: publish to storefront.

Implementation Reference

  • The actual logic for setting product visibility, which updates the job's visibility_mode and persists it.
    async setProductVisibility(
      payload: Record<string, any>,
    ): Promise<Record<string, any>> {
      const jobId = String(payload.job_id ?? "").trim();
      const visibilityMode = String(payload.visibility_mode ?? "").trim();
      if (!jobId || !visibilityMode) {
        throw new Error(
          "job_id and visibility_mode are both required. " +
            "Valid visibility_mode values: backend_only, sell_immediately.",
        );
      }
      const job = this.store.load(jobId);
      job.visibility_mode = visibilityMode;
      job.updated_at = utcNow();
      this.store.save(jobId, job);
      return { job_id: jobId, status: job.status, visibility_mode: visibilityMode };
    }
  • src/tools.ts:242-272 (registration)
    Registration of the 'dsers.product.visibility' tool, mapping the input parameters to the service handler.
    server.registerTool(
      "dsers.product.visibility",
      {
        title: "Shopify / Wix Product Visibility Toggle",
        description:
          "Change the visibility mode of a prepared job before pushing it to the store. " +
          "Call this between dsers.product.import and dsers.store.push to switch between draft and published. " +
          "Returns: job_id, status, visibility_mode.",
        inputSchema: {
          job_id: z
            .string()
            .describe("Job ID returned by dsers.product.import."),
          visibility_mode: z.string().describe(
            "New visibility mode. " +
              "backend_only: save as draft, not visible to shoppers. " +
              "sell_immediately: publish to storefront.",
          ),
        },
        annotations: {
          readOnlyHint: false,
          destructiveHint: false,
          idempotentHint: true,
          openWorldHint: false,
        },
      },
      async ({ job_id, visibility_mode }) => {
        try {
          return ok(await svc().setProductVisibility({ job_id, visibility_mode }));
        } catch (err) { return fail(err); }
      },
    );

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/lofder/dsers-mcp-product'

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