postcache
Public, short-lived media URLs for agents posting to Instagram, Threads and Facebook.
Should I use this
Quality & Safety
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"postcache": {
"url": "https://postcache.dev/mcp"
}
}
}Remote endpoints
https://postcache.dev/mcpstreamable-httpWhat it can do
Tool inventory
Tools (4)
🔴upload_media(target, source_url, data_base64, filename, ttl, ...)
Upload an image or video for a social platform. Returns a public URL that passes the platform media rules, or the problems with fixes. With convert, a fixable file comes back as status "converting": poll get_media until status is "ready" (url set) or "failed". Give the URL to the platform API (image_url / video_url), then call delete_media.
Input Schema
{
"type": "object",
"properties": {
"target": {
"type": "string",
"enum": [
"instagram.feed",
"instagram.carousel",
"instagram.reels",
"instagram.story",
"threads",
"facebook.page"
],
"description": "Platform the file is for."
},
"source_url": {
"description": "Public http(s) URL to fetch the file from.",
"type": "string",
"format": "uri"
},
"data_base64": {
"description": "The file, base64-encoded (max 10 MB). Use source_url for larger files.",
"type": "string",
"maxLength": 13400000
},
"filename": {
"type": "string"
},
"ttl": {
"description": "Seconds the URL stays valid, 3600-604800, default 86400.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"convert": {
"description": "Fix what fails the platform rules by cropping or padding and re-encoding.",
"type": "string",
"enum": [
"crop",
"pad"
]
}
},
"required": [
"target"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢check_media(target, source_url, data_base64, filename, ttl, ...)
Check a file against a platform without storing it. With convert, also says whether conversion can fix it.
Input Schema
{
"type": "object",
"properties": {
"target": {
"type": "string",
"enum": [
"instagram.feed",
"instagram.carousel",
"instagram.reels",
"instagram.story",
"threads",
"facebook.page"
],
"description": "Platform the file is for."
},
"source_url": {
"description": "Public http(s) URL to fetch the file from.",
"type": "string",
"format": "uri"
},
"data_base64": {
"description": "The file, base64-encoded (max 10 MB). Use source_url for larger files.",
"type": "string",
"maxLength": 13400000
},
"filename": {
"type": "string"
},
"ttl": {
"description": "Seconds the URL stays valid, 3600-604800, default 86400.",
"type": "integer",
"minimum": -9007199254740991,
"maximum": 9007199254740991
},
"convert": {
"description": "Fix what fails the platform rules by cropping or padding and re-encoding.",
"type": "string",
"enum": [
"crop",
"pad"
]
}
},
"required": [
"target"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢get_media(id)
Status (converting, ready, failed), URL, expiry and fetch count of an uploaded file.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴delete_media(id)
Delete an uploaded file now (call after the post is published).
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
}
},
"required": [
"id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence