Skip to main content
Glama

w3_up

Generates and uploads data securely using ed25519 key pairs to IPFS. Requires absolute paths for file arguments, ensuring precise and controlled data management on the MCP server.

Instructions

Generates and prints a new ed25519 key pair. Does not automatically use it for the agent. Requires ABSOLUTE paths for file arguments.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
hiddenNoInclude paths starting with '.'.
noWrapNoDon't wrap input files with a directory.
pathsYesArray of one or more ABSOLUTE paths to files or directories to upload.

Implementation Reference

  • The handler function that implements the core logic for the 'w3_up' tool. It validates input arguments using the W3UpArgsSchema, constructs the appropriate 'up' CLI command with paths and optional flags, executes it via runW3Command, and returns a structured response with success message and command output.
    const handleW3Up: ToolHandler = async (args) => {
      const parsed = Schemas.W3UpArgsSchema.safeParse(args);
      if (!parsed.success)
        throw new Error(`Invalid arguments for w3_up: ${parsed.error.message}`);
      const { paths, noWrap, hidden } = parsed.data;
      const quotedPaths = paths.map((p) => `"${p}"`).join(" ");
      let command = `up ${quotedPaths}`;
      if (noWrap) command += " --no-wrap";
      if (hidden) command += " --hidden";
      const { stdout } = await runW3Command(command);
      return {
        content: [
          {
            type: "text",
            text: JSON.stringify({
              message: "Upload successful.",
              output: stdout.trim(),
            }),
          },
        ],
      };
    };
  • Zod schema defining the input arguments for the w3_up tool: required array of absolute paths, optional noWrap and hidden booleans.
    export const W3UpArgsSchema = z
      .object({
        paths: z
          .array(z.string())
          .min(1)
          .describe(
            "Array of one or more ABSOLUTE paths to files or directories to upload."
          ),
        noWrap: z
          .boolean()
          .optional()
          .default(false)
          .describe("Don't wrap input files with a directory."),
        hidden: z
          .boolean()
          .optional()
          .default(false)
          .describe("Include paths starting with '.'."),
      })
      .describe(
        "Generates and prints a new ed25519 key pair. Does not automatically use it for the agent."
      );
  • The toolHandlers object maps tool names to their handler functions, registering 'w3_up' to handleW3Up. This map is used by the MCP server to route CallTool requests to the correct handler.
    export const toolHandlers: Record<string, ToolHandler> = {
      w3_login: handleW3Login,
      w3_space_ls: handleW3SpaceLs,
      w3_space_use: handleW3SpaceUse,
      w3_space_create: handleW3SpaceCreate,
      w3_up: handleW3Up,
      w3_ls: handleW3Ls,
      w3_rm: handleW3Rm,
      w3_open: handleW3Open,
      w3_space_info: handleW3SpaceInfo,
      w3_space_add: handleW3SpaceAdd,
      w3_delegation_create: handleW3DelegationCreate,
      w3_delegation_ls: handleW3DelegationLs,
      w3_delegation_revoke: handleW3DelegationRevoke,
      w3_proof_add: handleW3ProofAdd,
      w3_proof_ls: handleW3ProofLs,
      w3_key_create: handleW3KeyCreate,
      w3_bridge_generate_tokens: handleW3BridgeGenerateTokens,
      w3_can_blob_add: handleW3CanBlobAdd,
      w3_can_blob_ls: handleW3CanBlobLs,
      w3_can_blob_rm: handleW3CanBlobRm,
      w3_can_index_add: handleW3CanIndexAdd,
      w3_can_upload_add: handleW3CanUploadAdd,
      w3_can_upload_ls: handleW3CanUploadLs,
      w3_can_upload_rm: handleW3CanUploadRm,
      w3_plan_get: handleW3PlanGet,
      w3_account_ls: handleW3AccountLs,
      w3_space_provision: handleW3SpaceProvision,
      w3_coupon_create: handleW3CouponCreate,
      w3_usage_report: handleW3UsageReport,
      w3_can_access_claim: handleW3CanAccessClaim,
      w3_can_store_add: handleW3CanStoreAdd,
      w3_can_store_ls: handleW3CanStoreLs,
      w3_can_store_rm: handleW3CanStoreRm,
      w3_can_filecoin_info: handleW3CanFilecoinInfo,
      w3_reset: handleW3Reset,
    };
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the tool 'Does not automatically use it for the agent' and 'Requires ABSOLUTE paths for file arguments', adding some behavioral context. However, it lacks details on permissions, side effects, or output format. The description is partially helpful but incomplete for a tool with no annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise with two sentences that are front-loaded with key information. However, the first sentence about key generation is misleading and wastes space, reducing efficiency. It could be more structured by clarifying the tool's true purpose upfront.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the complexity (3 parameters, no annotations, no output schema) and the contradiction between description and schema, the description is incomplete. It fails to accurately describe the tool's purpose or provide sufficient context for safe and effective use. The mismatch between description and schema creates confusion, making it inadequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters (paths, hidden, noWrap). The description adds 'Requires ABSOLUTE paths for file arguments', which provides extra meaning for the 'paths' parameter beyond the schema. However, it doesn't fully explain parameter interactions or usage. Baseline 3 is appropriate given high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Generates and prints a new ed25519 key pair' which is a specific verb+resource, but the input schema and sibling tools reveal a contradiction: the schema describes file upload parameters (paths, hidden, noWrap), not key generation. The description is misleading about the tool's actual purpose, making it unclear what the tool truly does.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It mentions 'Does not automatically use it for the agent' but this is vague and doesn't help differentiate from sibling tools like w3_key_create or other key-related operations. No explicit when/when-not or alternative tools are named.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Related Tools

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/alexbakers/mcp-ipfs'

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