read_omi_memories
Retrieve user memories from Omi with pagination support. Specify a user ID, limit, and offset to fetch memories efficiently for AI assistant integration.
Instructions
Retrieves user memories from Omi with pagination options
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | Maximum number of memories to return (max: 1000, default: 100) | |
| offset | No | Number of memories to skip for pagination (default: 0) | |
| user_id | Yes | The user ID to fetch memories for |
Implementation Reference
- src/index.ts:159-208 (handler)The handler function that implements the tool logic: constructs API URL for Omi memories endpoint, fetches data using API key, parses as MemoriesResponse, and returns JSON of memories.async ({ user_id, limit, offset }) => { try { log(`Using appId: ${APP_ID}`); log(`User ID: ${user_id}`); // Construct URL with query parameters const url = new URL(`https://api.omi.me/v2/integrations/${APP_ID}/memories`); const params = new URLSearchParams(); params.append('uid', user_id); if (typeof limit === 'number') { params.append('limit', String(limit)); } if (typeof offset === 'number') { params.append('offset', String(offset)); } url.search = params.toString(); const fetchUrl = url.toString(); log(`Fetching from URL: ${fetchUrl}`); const response = await fetch(fetchUrl, { method: 'GET', headers: { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json', }, }); log(`Response status: ${response.status}`); if (!response.ok) { const errorText = await response.text(); throw new Error(`Failed to fetch memories: ${response.status} ${response.statusText} - ${errorText}`); } const data = (await response.json()) as MemoriesResponse; log('Data received'); const memories = data.memories || []; return { content: [{ type: 'text', text: JSON.stringify({ memories }) }], }; } catch (error) { log(`Error fetching memories: ${error}`); throw new Error(`Failed to read memories: ${error instanceof Error ? error.message : String(error)}`); } }
- src/index.ts:154-158 (schema)Zod schema for input parameters: user_id (string), limit (number optional), offset (number optional).{ user_id: z.string().describe('The user ID to fetch memories for'), limit: z.number().optional().describe('Maximum number of memories to return (max: 1000, default: 100)'), offset: z.number().optional().describe('Number of memories to skip for pagination (default: 0)'), },
- src/index.ts:151-209 (registration)MCP server.tool registration of 'read_omi_memories' with description, input schema, and handler function.server.tool( 'read_omi_memories', 'Retrieves user memories from Omi with pagination options', { user_id: z.string().describe('The user ID to fetch memories for'), limit: z.number().optional().describe('Maximum number of memories to return (max: 1000, default: 100)'), offset: z.number().optional().describe('Number of memories to skip for pagination (default: 0)'), }, async ({ user_id, limit, offset }) => { try { log(`Using appId: ${APP_ID}`); log(`User ID: ${user_id}`); // Construct URL with query parameters const url = new URL(`https://api.omi.me/v2/integrations/${APP_ID}/memories`); const params = new URLSearchParams(); params.append('uid', user_id); if (typeof limit === 'number') { params.append('limit', String(limit)); } if (typeof offset === 'number') { params.append('offset', String(offset)); } url.search = params.toString(); const fetchUrl = url.toString(); log(`Fetching from URL: ${fetchUrl}`); const response = await fetch(fetchUrl, { method: 'GET', headers: { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json', }, }); log(`Response status: ${response.status}`); if (!response.ok) { const errorText = await response.text(); throw new Error(`Failed to fetch memories: ${response.status} ${response.statusText} - ${errorText}`); } const data = (await response.json()) as MemoriesResponse; log('Data received'); const memories = data.memories || []; return { content: [{ type: 'text', text: JSON.stringify({ memories }) }], }; } catch (error) { log(`Error fetching memories: ${error}`); throw new Error(`Failed to read memories: ${error instanceof Error ? error.message : String(error)}`); } } );
- src/types.ts:48-50 (schema)TypeScript interface for the Omi API memories response, used to type the parsed JSON.export interface MemoriesResponse { memories: Memory[]; }
- src/types.ts:5-10 (schema)TypeScript interface for individual Memory objects in the response.export interface Memory { id: string; content: string; created_at: string; tags: string[]; }