npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

postthatlater-mcp

v1.0.0

Published

MCP server for PostThatLater — schedule and manage social media posts from Claude Code

Readme

PostThatLater MCP Server

Schedule and manage social media posts from Claude Code — or any MCP-compatible AI assistant.

What you can do

  • "Schedule a post about our sale on Mastodon and BlueSky for tomorrow at 9am"
  • "Which post performed best last month?"
  • "Did any posts fail this week?"
  • "Move my 3pm post to 5pm"
  • "Post this screenshot to LinkedIn right now"
  • "Upload this image and schedule it with a caption on Instagram"

Installation

Claude Code (quickest)

Run this in your terminal, replacing the placeholder with your API key:

claude mcp add-json postthatLater '{"type":"stdio","command":"npx","args":["-y","postthatlater-mcp"],"env":{"PTL_API_KEY":"sk_ptl_your_key_here"}}'

Then restart Claude Code and try: "List my connected social accounts"


Claude Desktop

Add to your claude_desktop_config.json:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "postthatLater": {
      "command": "npx",
      "args": ["-y", "postthatlater-mcp"],
      "env": {
        "PTL_API_KEY": "sk_ptl_your_key_here"
      }
    }
  }
}

Restart Claude Desktop after saving.


Cursor / Windsurf / other MCP clients

Use the same npx -y postthatlater-mcp command with PTL_API_KEY set as an environment variable. Refer to your client's MCP documentation for the exact config format.


Getting an API key

  1. Sign in to PostThatLater
  2. Open Account Settings → API Keys
  3. Create a new key — copy the sk_ptl_... value (shown only once)

Available tools

| Tool | Description | |------|-------------| | list_accounts | List connected social accounts — call this first to get account IDs | | create_post | Schedule a post to one or more accounts | | get_posts | List posts filtered by status, platform, or date range | | get_post | Get full details of a single post including metrics | | update_post | Edit the text or scheduled time of a pending post | | delete_post | Permanently delete a pending post | | publish_now | Publish a pending post immediately | | upload_image | Upload an image by local path, URL, or base64 data | | list_images | List previously uploaded images available for reuse | | get_top_posts | Top posts ranked by engagement (last week / month / all time) | | get_analytics | Posting health summary with engagement totals | | get_platform_info | Character limits and capabilities per platform |


Example prompts

List my connected social accounts

Schedule a post saying "Happy Monday! 🚀" on my BlueSky account for
tomorrow at 9am UTC

What were my top 5 posts last month?

Post "We just launched a new feature!" to all my accounts right now

What's my posting success rate for March?

Move post #42 to 5pm today

Upload /home/me/screenshot.png and schedule it on LinkedIn tomorrow with
the caption "Shipping fast 🚀"

What's the character limit for Mastodon?

Show me all failed posts from this week

Configuration

| Environment variable | Default | Description | |---|---|---| | PTL_API_KEY | (required) | Your API key (sk_ptl_...) | | PTL_BASE_URL | https://postthatlater.com | Override for self-hosted or staging |


Tips for best results

  • Get account IDs first — ask Claude to "list my accounts" before scheduling posts
  • Tell Claude your timezone at the start of a session — all scheduled_at values must be ISO 8601 UTC (e.g. 2026-03-10T09:00:00Z)
  • Confirm before publishing — ask Claude to confirm details before using publish_now
  • Check platform limits — use get_platform_info when writing long posts; limits vary (Bluesky: 300, Mastodon: 500, LinkedIn: 3000)
  • Include alt text for images — most platforms display it; Claude will add it automatically when it knows what the image contains

Troubleshooting

PTL_API_KEY environment variable is not set Re-run the setup command with your key. Verify with claude mcp get postthatLater (Claude Code) or check your config file.

PostThatLater API error (invalid_api_key) The key may be revoked. Generate a new one in Account Settings → API Keys.

PostThatLater API error (subscription_required) An active PostThatLater subscription is required to use the API.

Tools don't appear in Claude Code Restart Claude Code after adding the server. Run claude mcp list to confirm it's configured.

Could not read file "..." (upload_image with a local path) The MCP server reads the file directly — make sure the path is absolute and the file exists.