get_related_images
Find visually similar images using an Openverse image ID. Specify pagination to retrieve related images for creative, research, or design purposes.
Instructions
Get images related to a specific image
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| image_id | Yes | Openverse image ID | |
| page | No | Page number (default: 1) | |
| page_size | No | Results per page (default: 10) |
Input Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"additionalProperties": false,
"properties": {
"image_id": {
"description": "Openverse image ID",
"type": "string"
},
"page": {
"description": "Page number (default: 1)",
"type": "number"
},
"page_size": {
"description": "Results per page (default: 10)",
"type": "number"
}
},
"required": [
"image_id"
],
"type": "object"
}
Implementation Reference
- src/index.ts:122-149 (handler)The execute function that implements the tool logic: fetches related images from the Openverse API endpoint using the provided image_id, page, and page_size parameters.execute: async (args) => { const params = new URLSearchParams({ page: String(args.page || 1), page_size: String(args.page_size || 10) }); try { const response = await fetch( `${OPENVERSE_API_BASE}/images/${args.image_id}/related/?${params}`, { headers: { 'User-Agent': 'MCP-Openverse/1.0' } } ); if (!response.ok) { throw new Error(`Failed to fetch related images: ${response.status} ${response.statusText}`); } const data = await response.json(); return JSON.stringify(data, null, 2); } catch (error) { return JSON.stringify({ error: error instanceof Error ? error.message : 'Unknown error' }); } }
- src/index.ts:33-37 (schema)Zod schema defining the input parameters for the get_related_images tool: image_id (required), optional page and page_size.const relatedImagesSchema = z.object({ image_id: z.string().describe('Openverse image ID'), page: z.number().optional().describe('Page number (default: 1)'), page_size: z.number().optional().describe('Results per page (default: 10)') });
- src/index.ts:118-150 (registration)Registration of the get_related_images tool using server.addTool, specifying name, description, parameters schema, and execute handler.server.addTool({ name: 'get_related_images', description: 'Get images related to a specific image', parameters: relatedImagesSchema, execute: async (args) => { const params = new URLSearchParams({ page: String(args.page || 1), page_size: String(args.page_size || 10) }); try { const response = await fetch( `${OPENVERSE_API_BASE}/images/${args.image_id}/related/?${params}`, { headers: { 'User-Agent': 'MCP-Openverse/1.0' } } ); if (!response.ok) { throw new Error(`Failed to fetch related images: ${response.status} ${response.statusText}`); } const data = await response.json(); return JSON.stringify(data, null, 2); } catch (error) { return JSON.stringify({ error: error instanceof Error ? error.message : 'Unknown error' }); } } });