ReadImage
Extract and process image data from files to enable visual content analysis and integration within development workflows.
Instructions
Read an image from the shell.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes |
Implementation Reference
- src/wcgw/client/tools.py:486-502 (handler)The core handler function that reads the image file from the filesystem, encodes it to base64, determines the MIME type, and returns an ImageData object.def read_image_from_shell(file_path: str, context: Context) -> ImageData: # Expand the path before checking if it's absolute file_path = expand_user(file_path) # If not absolute after expansion, join with current working directory if not os.path.isabs(file_path): file_path = os.path.join(context.bash_state.cwd, file_path) if not os.path.exists(file_path): raise ValueError(f"File {file_path} does not exist") with open(file_path, "rb") as image_file: image_bytes = image_file.read() image_b64 = base64.b64encode(image_bytes).decode("utf-8") image_type = mimetypes.guess_type(file_path)[0] return ImageData(media_type=image_type, data=image_b64) # type: ignore
- src/wcgw/types_.py:179-181 (schema)Pydantic model defining the input schema for the ReadImage tool, requiring a 'file_path' parameter.class ReadImage(BaseModel): file_path: str
- src/wcgw/client/tool_prompts.py:67-72 (registration)MCP tool registration defining the name, input schema from ReadImage model, description, and annotations.Tool( inputSchema=remove_titles_from_schema(ReadImage.model_json_schema()), name="ReadImage", description="Read an image from the shell.", annotations=ToolAnnotations(readOnlyHint=True, openWorldHint=False), ),
- src/wcgw/client/tools.py:1016-1020 (handler)Dispatch logic in the central get_tool_output function that invokes the ReadImage handler when the tool argument matches.elif isinstance(arg, ReadImage): context.console.print("Calling read image tool") image_data = read_image_from_shell(arg.file_path, context) output = image_data, 0.0 elif isinstance(arg, ReadFiles):
- src/wcgw/client/tools.py:461-468 (helper)Supporting Pydantic model for the image output data, including base64 data and MIME type, with a dataurl property.class ImageData(BaseModel): media_type: MEDIA_TYPES data: str @property def dataurl(self) -> str: return f"data:{self.media_type};base64," + self.data