{"serverId":"mcp-registry/io.github.arslan2012/qpost-mcp","tools":[{"name":"create_post","fixed":{"name":"create_post","description":"Create and publish (or schedule) a video or image post to connected platforms. Media must be supplied as a publicly reachable URL (mediaUrl / imageUrls) or base64 (mediaBase64) — this is a hosted server and cannot read files from your machine. Omit scheduledFor to publish immediately.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["caption","platforms","mediaKind"],"properties":{"title":{"type":"string","description":"Optional title (YouTube)"},"caption":{"type":"string","minLength":1,"description":"Main text/caption of the post"},"mediaUrl":{"type":"string","format":"uri","description":"Publicly reachable URL of the video or single image"},"timezone":{"type":"string","description":"IANA timezone, default \"UTC\""},"imageUrls":{"type":"array","items":{"type":"string","format":"uri"},"description":"Multiple image URLs for a carousel"},"mediaKind":{"enum":["video","image"],"type":"string"},"platforms":{"type":"array","items":{"type":"object","required":["platform"],"properties":{"metadata":{"type":"object","description":"Platform-specific options (privacy, tags, category…). See https://qpost.dev/docs","propertyNames":{"type":"string"},"additionalProperties":{}},"platform":{"enum":["YOUTUBE","TIKTOK","INSTAGRAM"],"type":"string"}}},"minItems":1},"mediaBase64":{"type":"string","description":"Base64-encoded media bytes, if you have no public URL"},"scheduledFor":{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$","description":"ISO datetime; omit to publish immediately"},"mediaFilename":{"type":"string","description":"Filename for mediaBase64, e.g. clip.mp4 — sets the MIME type"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":546,"tokensAfter":546},{"name":"delete_post","fixed":{"name":"delete_post","description":"Permanently delete a post you own.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":true,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: true, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":60,"tokensAfter":60},{"name":"get_post","fixed":{"name":"get_post","description":"Get a single post by ID, including per-platform publish status.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":67,"tokensAfter":67},{"name":"get_post_stats","fixed":{"name":"get_post_stats","description":"How a published post is doing: views, likes, comments and shares per platform, read live from the platform (TikTok so far), plus each platform's public URL.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":94,"tokensAfter":94},{"name":"list_connected_accounts","fixed":{"name":"list_connected_accounts","description":"List the YouTube/TikTok/Instagram accounts connected to this QPost account. Call this before creating a post to see which platforms are available.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":83,"tokensAfter":83},{"name":"list_posts","fixed":{"name":"list_posts","description":"List posts on this account, optionally filtered by status or platform.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","properties":{"status":{"enum":["DRAFT","SCHEDULED","POSTED","FAILED"],"type":"string"},"platform":{"enum":["YOUTUBE","TIKTOK","INSTAGRAM"],"type":"string"}}},"annotations":{"readOnlyHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: true (inferred from the name).","verify":true}],"tokensBefore":98,"tokensAfter":98},{"name":"retry_post","fixed":{"name":"retry_post","description":"Retry publishing a post that previously failed.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string"}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":false}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: false (inferred from the name).","verify":true}],"tokensBefore":63,"tokensAfter":63},{"name":"update_post","fixed":{"name":"update_post","description":"Update a post's caption, schedule, timezone, or status. Only the fields you pass are changed.","inputSchema":{"type":"object","$schema":"http://json-schema.org/draft-07/schema#","required":["id"],"properties":{"id":{"type":"string"},"status":{"enum":["DRAFT","SCHEDULED","POSTED","FAILED"],"type":"string"},"caption":{"type":"string"},"timezone":{"type":"string"},"scheduledFor":{"anyOf":[{"type":"string","format":"date-time","pattern":"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$"},{"type":"null"}]}}},"annotations":{"readOnlyHint":false,"destructiveHint":false,"idempotentHint":true}},"changes":[{"kind":"annotations","detail":"Added readOnlyHint: false, destructiveHint: false, idempotentHint: true (inferred from the name).","verify":true}],"tokensBefore":215,"tokensAfter":215}],"toolsChanged":8,"tokensSaved":0,"todo":[{"tool":"create_post","params":["mediaKind","platforms"]},{"tool":"delete_post","params":["id"]},{"tool":"get_post","params":["id"]},{"tool":"get_post_stats","params":["id"]},{"tool":"list_posts","params":["status","platform"]},{"tool":"retry_post","params":["id"]},{"tool":"update_post","params":["id","status","caption","timezone","scheduledFor"]}],"note":"Deterministic fixes. Changes marked verify need a human look before shipping (renames, inferred annotations, inferred types, removed text). Parameter descriptions in `todo` need to be written by someone who knows the API."}