Skip to main content
Glama
publish-tools.js5.52 kB
const publishTools = [ { name: "publish_vehicle", description: "Publish vehicle to specified portals (MyPortal and/or automobile.it)", inputSchema: { type: "object", properties: { vehicleId: { type: "number", description: "Vehicle ID to publish" }, portals: { type: "array", items: { type: "string", enum: ["myportal", "automobile.it"] }, description: "Portals to publish to", minItems: 1 } }, required: ["vehicleId", "portals"] } }, { name: "unpublish_vehicle", description: "Remove vehicle from specified portals", inputSchema: { type: "object", properties: { vehicleId: { type: "number", description: "Vehicle ID to unpublish" }, portals: { type: "array", items: { type: "string", enum: ["myportal", "automobile.it", "all"] }, description: "Portals to unpublish from (use 'all' to remove from all portals)", minItems: 1 } }, required: ["vehicleId", "portals"] } }, { name: "get_publication_status", description: "Check where a vehicle is currently published", inputSchema: { type: "object", properties: { vehicleId: { type: "number", description: "Vehicle ID to check publication status" } }, required: ["vehicleId"] } }, { name: "list_available_portals", description: "Get list of available portals for publication", inputSchema: { type: "object", properties: {} } } ]; const publishHandlers = { publish_vehicle: async (args, { publicationAPI }) => { try { if (args.portals.includes('all')) { const result = await publicationAPI.publishToAllPortals(args.vehicleId); return { content: [ { type: 'text', text: result.message, }, ], }; } else { const result = await publicationAPI.publishToMultiplePortals(args.vehicleId, args.portals); let message = `Published vehicle ${args.vehicleId} to ${result.successCount}/${result.totalRequested} portals\n\n`; result.results.forEach(res => { message += `✓ ${res.portal}: ${res.message}\n`; }); if (result.errors.length > 0) { message += '\nErrors:\n'; result.errors.forEach(err => { message += `✗ ${err.portal}: ${err.error}\n`; }); } return { content: [ { type: 'text', text: message, }, ], }; } } catch (error) { return { content: [ { type: 'text', text: `Failed to publish vehicle: ${error.message}`, }, ], isError: true, }; } }, unpublish_vehicle: async (args, { publicationAPI }) => { try { if (args.portals.includes('all')) { const result = await publicationAPI.unpublishFromAllPortals(args.vehicleId); return { content: [ { type: 'text', text: result.message, }, ], }; } else { const result = await publicationAPI.unpublishFromMultiplePortals(args.vehicleId, args.portals); let message = `Unpublished vehicle ${args.vehicleId} from ${result.successCount}/${result.totalRequested} portals\n\n`; result.results.forEach(res => { message += `✓ ${res.portal}: ${res.message}\n`; }); if (result.errors.length > 0) { message += '\nErrors:\n'; result.errors.forEach(err => { message += `✗ ${err.portal}: ${err.error}\n`; }); } return { content: [ { type: 'text', text: message, }, ], }; } } catch (error) { return { content: [ { type: 'text', text: `Failed to unpublish vehicle: ${error.message}`, }, ], isError: true, }; } }, get_publication_status: async (args, { publicationAPI }) => { try { const result = await publicationAPI.getPublicationStatus(args.vehicleId); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Failed to get publication status: ${error.message}`, }, ], isError: true, }; } }, list_available_portals: async (args, { publicationAPI }) => { try { const result = publicationAPI.getAvailablePortals(); return { content: [ { type: 'text', text: JSON.stringify(result, null, 2), }, ], }; } catch (error) { return { content: [ { type: 'text', text: `Failed to get available portals: ${error.message}`, }, ], isError: true, }; } } }; module.exports = { publishTools, publishHandlers };

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/loukach/stockspark-mcp-poc'

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