get_experiment
Retrieve detailed status and node states for a specific CloudLab experiment using its UUID to monitor experiment progress and troubleshoot issues.
Instructions
Get detailed status of a specific experiment including node states
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| experiment_id | Yes | Experiment UUID (from list_experiments) |
Implementation Reference
- src/index.ts:302-313 (handler)Handler for 'get_experiment' tool: extracts experiment_id from arguments, calls cloudlabRequest to fetch experiment details from API, and returns JSON-formatted result as text content.case "get_experiment": { const { experiment_id } = args as { experiment_id: string }; const result = await cloudlabRequest(`/experiments/${experiment_id}`); return { content: [ { type: "text", text: JSON.stringify(result, null, 2), }, ], }; }
- src/index.ts:139-152 (schema)Tool schema definition including name, description, and input schema requiring 'experiment_id' string.{ name: "get_experiment", description: "Get detailed status of a specific experiment including node states", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, }, required: ["experiment_id"], }, },
- src/index.ts:97-255 (registration)Registration of all tools including 'get_experiment' via ListToolsRequestSchema handler.server.setRequestHandler(ListToolsRequestSchema, async () => { return { tools: [ { name: "list_experiments", description: "List all your CloudLab experiments", inputSchema: { type: "object", properties: {}, required: [], }, }, { name: "create_experiment", description: "Create a new CloudLab experiment from a profile", inputSchema: { type: "object", properties: { project: { type: "string", description: "Project name (e.g., 'UCY-CS499-DC')", }, profile_name: { type: "string", description: "Profile name (e.g., 'small-lan')", }, profile_project: { type: "string", description: "Project that owns the profile (e.g., 'PortalProfiles')", }, name: { type: "string", description: "Optional experiment name (auto-generated if not provided)", }, bindings: { type: "object", description: "Optional profile parameter bindings (e.g., {nodeCount: '2', phystype: 'c220g1'})", }, }, required: ["project", "profile_name", "profile_project"], }, }, { name: "get_experiment", description: "Get detailed status of a specific experiment including node states", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, }, required: ["experiment_id"], }, }, { name: "reboot_node", description: "Reboot a specific node in an experiment", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, node: { type: "string", description: "Node client_id (e.g., 'node0')", }, }, required: ["experiment_id", "node"], }, }, { name: "reboot_all_nodes", description: "Reboot all nodes in an experiment", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, }, required: ["experiment_id"], }, }, { name: "reload_node", description: "Reload/reimage a node with its disk image", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, node: { type: "string", description: "Node client_id", }, }, required: ["experiment_id", "node"], }, }, { name: "powercycle_node", description: "Power cycle a node (hard reboot)", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, node: { type: "string", description: "Node client_id", }, }, required: ["experiment_id", "node"], }, }, { name: "extend_experiment", description: "Extend the expiration time of an experiment", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, hours: { type: "number", description: "Number of hours to extend", }, }, required: ["experiment_id", "hours"], }, }, { name: "terminate_experiment", description: "Terminate an experiment (WARNING: destroys all data)", inputSchema: { type: "object", properties: { experiment_id: { type: "string", description: "Experiment UUID (from list_experiments)", }, }, required: ["experiment_id"], }, }, ], }; });