validate_s3
Test read and write access to an S3 bucket using provided credentials and region. Ensures S3 export jobs will succeed by verifying bucket permissions before submission.
Instructions
Validate S3 credentials by testing read/write access to the specified bucket. Use before submitting a job with S3 export.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| s3_bucket | Yes | S3 bucket name | |
| s3_access_key_id | Yes | AWS access key ID | |
| s3_secret_access_key | Yes | AWS secret access key | |
| s3_region | Yes | AWS region (e.g. us-east-1) |
Implementation Reference
- src/mcp.ts:259-273 (registration)MCP tool registration for 'validate_s3' with name, description, and JSON inputSchema defining required params: s3_bucket, s3_access_key_id, s3_secret_access_key, s3_region.
{ name: "validate_s3", description: "Validate S3 credentials by testing read/write access to the specified bucket. Use before submitting a job with S3 export.", inputSchema: { type: "object" as const, properties: { s3_bucket: { type: "string", description: "S3 bucket name" }, s3_access_key_id: { type: "string", description: "AWS access key ID" }, s3_secret_access_key: { type: "string", description: "AWS secret access key" }, s3_region: { type: "string", description: "AWS region (e.g. us-east-1)" }, }, required: ["s3_bucket", "s3_access_key_id", "s3_secret_access_key", "s3_region"], }, }, - src/mcp.ts:785-792 (handler)Handler case that extracts args from the MCP request and calls getClient().validateS3() with the provided S3 parameters.
case "validate_s3": result = await getClient().validateS3({ s3_bucket: args!.s3_bucket as string, s3_access_key_id: args!.s3_access_key_id as string, s3_secret_access_key: args!.s3_secret_access_key as string, s3_region: args!.s3_region as string, }); break; - src/client.ts:174-181 (helper)Client-side helper method that sends a POST request to /api/v1/jobs/validate_s3 with the S3 credential params object.
async validateS3(params: { s3_bucket: string; s3_access_key_id: string; s3_secret_access_key: string; s3_region: string; }): Promise<any> { return this.request("POST", "/api/v1/jobs/validate_s3", params); } - src/commands/jobs.ts:330-357 (handler)CLI command handler for 'validate-s3' that collects S3 options from command line, calls client.validateS3(), and outputs results.
.command("validate-s3") .description("Validate S3 credentials before submitting a job") .requiredOption("--s3-bucket <bucket>", "S3 bucket name") .requiredOption("--s3-key <key>", "AWS access key ID") .requiredOption("--s3-secret <secret>", "AWS secret access key") .requiredOption("--s3-region <region>", "AWS region") .option("--json", "Output as JSON") .action(async (opts) => { try { const client = getClient(); const result = await client.validateS3({ s3_bucket: opts.s3Bucket, s3_access_key_id: opts.s3Key, s3_secret_access_key: opts.s3Secret, s3_region: opts.s3Region, }); if (opts.json) { output.json(result); return; } console.log("S3 credentials validated successfully."); } catch (err: any) { console.error(`S3 validation failed: ${err.message}`); process.exit(1); } }); - src/mcp.ts:263-272 (schema)Input schema for validate_s3 tool: object type with string properties s3_bucket, s3_access_key_id, s3_secret_access_key, s3_region, all required.
inputSchema: { type: "object" as const, properties: { s3_bucket: { type: "string", description: "S3 bucket name" }, s3_access_key_id: { type: "string", description: "AWS access key ID" }, s3_secret_access_key: { type: "string", description: "AWS secret access key" }, s3_region: { type: "string", description: "AWS region (e.g. us-east-1)" }, }, required: ["s3_bucket", "s3_access_key_id", "s3_secret_access_key", "s3_region"], },