Skip to main content
Glama

refresh_linkedin_posts

Refresh LinkedIn posts data to capture recently published content for up-to-date analysis.

Instructions

Force a refresh of LinkedIn posts data to capture recently published content.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Implementation Reference

  • The main handler function for the 'refresh_linkedin_posts' tool within the 'tools/call' method. It authenticates with the API key, makes a POST request to the backend refresh-posts endpoint, and handles success/error responses by sending appropriate MCP responses.
    } else if (name === 'refresh_linkedin_posts') { console.error(`${packageName}: Received call for refresh_linkedin_posts tool.`); const apiKey = process.env.LINKEDIN_MCP_API_KEY; if (!apiKey) { sendResponse({ jsonrpc: "2.0", error: { code: -32001, message: "Server Configuration Error: API Key not set." }, id }); return; } try { const headers = { "Authorization": `Bearer ${apiKey}`, "Content-Type": "application/json", "Accept": "application/json" }; console.error(`${packageName}: Calling refresh LinkedIn posts API: ${backendLinkedinRefreshPostsApiUrl}`); const apiResponse = await axios.post(backendLinkedinRefreshPostsApiUrl, {}, { headers, timeout: 60000 }); console.error(`${packageName}: Refresh LinkedIn posts API response status: ${apiResponse.status}`); console.error(`${packageName}: Refresh LinkedIn posts API response data:`, JSON.stringify(apiResponse.data, null, 2)); if (apiResponse.data && apiResponse.data.success) { sendResponse({ jsonrpc: "2.0", result: { content: [ { type: "text", text: apiResponse.data.message || "Successfully refreshed LinkedIn posts data." } ], isError: false }, id }); } else { const errorMessage = apiResponse.data?.error || "Backend API Error (no detail)"; console.error(`${packageName}: Refresh LinkedIn posts API Error: ${errorMessage}`); sendResponse({ jsonrpc: "2.0", result: { content: [ { type: "text", text: `Failed to refresh LinkedIn posts: ${errorMessage}` } ], isError: true }, id }); } } catch (error) { let errorMessage = `Failed to call refresh LinkedIn posts API: ${error.message}`; if (error.response) { // Extract complete error details from the response const responseData = error.response.data || {}; const extractedError = responseData.error || responseData.message || (typeof responseData === 'string' ? responseData : null); // Use the backend's full error message if (extractedError) { errorMessage = extractedError; } else { // Fallback with a generic message but including the status errorMessage = `Backend API Error (Status ${error.response.status}): Unknown error`; } console.error(`${packageName}: Refresh LinkedIn posts API Error Response:`, error.response.data); } else if (error.request) { errorMessage = "No response received from refresh LinkedIn posts API."; } console.error(`${packageName}: ${errorMessage}`); sendResponse({ jsonrpc: "2.0", result: { content: [ { type: "text", text: `Failed to refresh LinkedIn posts: ${errorMessage}` } ], isError: true }, id }); }
  • The input schema and description for the 'refresh_linkedin_posts' tool, defined in the 'tools/list' response. No input parameters required.
    name: "refresh_linkedin_posts", description: "Force a refresh of LinkedIn posts data to capture recently published content.", inputSchema: { type: "object", properties: {} } }
  • cli.js:1187-1372 (registration)
    The tool is registered in the 'tools/list' method response, where the full list of available tools is returned including 'refresh_linkedin_posts'.
    tools: [ { name: "publish_linkedin_post", description: "Publish a text post to LinkedIn, optionally including media (images/videos) specified by URL.", inputSchema: { type: "object", properties: { post_text: { type: "string", description: "The text content of the LinkedIn post." }, media: { type: "array", description: "Optional. A list of media items to attach to the post. Each item must have a 'file_url' pointing to a direct image or video URL and a 'filename'.", items: { type: "object", properties: { file_url: { type: "string", description: "A direct URL to the image or video file (e.g., ending in .jpg, .png, .mp4)." }, filename: { type: "string", description: "A filename for the media item (e.g., 'promo_video.mp4')." } }, required: ["file_url", "filename"] } } }, required: ["post_text"] } }, { name: "schedule_linkedin_post", description: "Schedule a text post for LinkedIn at a specific future date and time, optionally including media (images/videos) specified by URL.", inputSchema: { type: "object", properties: { post_text: { type: "string", description: "The text content of the LinkedIn post to be scheduled." }, scheduled_date: { type: "string", description: "The date and time to publish the post, in ISO 8601 format (e.g., '2025-12-31T10:00:00Z' or '2025-12-31T15:30:00+05:30'). Must be in the future." }, media: { type: "array", description: "Optional. A list of media items to attach to the post. Each item must have a 'file_url' pointing to a direct image or video URL and a 'filename'.", items: { type: "object", properties: { file_url: { type: "string", description: "A direct URL to the image or video file (e.g., ending in .jpg, .png, .mp4)." }, filename: { type: "string", description: "A filename for the media item (e.g., 'meeting_notes.mp4')." } }, required: ["file_url", "filename"] } } }, required: ["post_text", "scheduled_date"] } }, { name: "publish_twitter_post", description: "Publish a text post (tweet) to Twitter.", inputSchema: { type: "object", properties: { post_text: { type: "string", description: "The text content of the tweet (maximum 280 characters)." } }, required: ["post_text"] } }, { name: "analyze_linkedin_chat", description: "Ask questions about the user's LinkedIn profile, content, or network, with support for multi-turn conversations.", inputSchema: { type: "object", properties: { query: { type: "string", description: "The question or request about LinkedIn data to be analyzed." }, conversation_history: { type: "array", description: "Optional. Previous messages in the conversation for context. Each message must have 'role' (user/assistant) and 'content' (text).", items: { type: "object", properties: { role: { type: "string", description: "The sender of the message: 'user' or 'assistant'." }, content: { type: "string", description: "The text content of the message." } }, required: ["role", "content"] } } }, required: ["query"] } }, { name: "generate_linkedin_post", description: "Generate three LinkedIn post variants from any content (article, newsletter, notes, etc.) to optimize engagement.", inputSchema: { type: "object", properties: { content: { type: "string", description: "The source content to transform into LinkedIn posts. Can be articles, emails, newsletters, notes, etc." }, content_type: { type: "string", description: "Optional. A short description of the content type (e.g., 'article', 'newsletter', 'notes'). Defaults to 'article'." } }, required: ["content"] } }, { name: "get_linkedin_posts", description: "Retrieve the user's recent LinkedIn posts with engagement metrics.", inputSchema: { type: "object", properties: { limit: { type: "number", description: "Optional. Number of posts to retrieve (1-20). Defaults to 5." } } } }, { name: "get_linkedin_profile", description: "Retrieve the user's LinkedIn profile information including headline, summary, experience, and education.", inputSchema: { type: "object", properties: {} } }, { name: "set_linkedin_url", description: "Set or update the LinkedIn profile URL to analyze. Required before using profile/posts retrieval tools if not set previously.", inputSchema: { type: "object", properties: { linkedin_url: { type: "string", description: "The full LinkedIn profile URL (e.g., https://www.linkedin.com/in/username/)" } }, required: ["linkedin_url"] } }, { name: "refresh_linkedin_profile", description: "Force a refresh of the LinkedIn profile data to update any recent changes.", inputSchema: { type: "object", properties: {} } }, { name: "refresh_linkedin_posts", description: "Force a refresh of LinkedIn posts data to capture recently published content.", inputSchema: { type: "object", properties: {} } } ] }
  • cli.js:20-20 (helper)
    Backend API URL constant used by the refresh_linkedin_posts handler to call the refresh-posts endpoint.
    const backendLinkedinRefreshPostsApiUrl = 'https://ligo.ertiqah.com/api/mcp/linkedin/refresh-posts';

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/ertiqah/linkedin-mcp-runner'

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