Skip to main content
Glama
advanced_media.ts1.58 kB
import { z } from 'zod'; import { InstagramClient } from '../instagram/client.js'; export const uploadAlbumSchema = z.object({ urls: z.array(z.string()).describe('List of image/video URLs to include in the album'), caption: z.string().optional().default(''), }); export const uploadAlbumDescription = 'Post a carousel/album with multiple images or videos.'; export async function uploadAlbum(igClient: InstagramClient, params: any) { const items = await Promise.all( params.urls.map(async (url: string) => { const response = await fetch(url); const buffer = Buffer.from(await response.arrayBuffer()); // Simple detection based on extension for demo, in real world we should use content-type const type = url.toLowerCase().endsWith('.mp4') ? 'video' : 'photo'; return { file: buffer, type: type as 'photo' | 'video' }; }) ); const result = await igClient.uploadAlbum(items, params.caption); return { content: [{ type: 'text' as const, text: `Album posted successfully: ${result.postUrl}` }], }; } export const searchLocationsSchema = z.object({ query: z.string().describe('Search query for location'), lat: z.number().optional(), lng: z.number().optional(), }); export const searchLocationsDescription = 'Search for Instagram locations/places.'; export async function searchLocations(igClient: InstagramClient, params: any) { const result = await igClient.searchLocations(params.query, params.lat, params.lng); return { content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }], }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/arjun1194/insta-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server