@jclvsh/dropspace
v2.19.0
Published
MCP server and CLI for the Dropspace API
Readme
@jclvsh/dropspace
MCP server and CLI for the Dropspace API. Lets AI agents (Claude Code, Cursor) and humans manage launches, personas, media generation, boosts, autopilot, recommendations, reddit engagement, platform connections, API keys, and webhooks. 69 tools across 14 categories.
Installation
npm install -g @jclvsh/dropspaceThis installs two binaries:
dropspace— CLI for terminal usedropspace-mcp— MCP server for AI agents
CLI
# set your API key
export DROPSPACE_API_KEY=ds_live_...
# manage launches
dropspace launches list
dropspace launches create -t "my launch" --platforms twitter,reddit --publish
dropspace launches status <id>
dropspace launches analytics <id>
# manage personas
dropspace personas list
dropspace personas create -n "my brand voice"
# check your key
dropspace keys me
# table output
dropspace --format table launches list
# full help
dropspace --help
dropspace launches --helpCLI Commands
| Group | Commands | Count | | ---------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- | ----- | | launches | list, create, get, update, delete, publish, retry, generate, retry-content, analytics, batch-analytics, status, delete-post, delete-posts | 14 | | personas | list, create, get, update, delete, analyze | 6 | | media | generate, job | 2 | | connections | list | 1 | | boosts | create, list, get, activate, cancel, performance | 6 | | reddit | suggest, config, configure, discover, comments, approve, reject, standing, activate, deactivate | 10 | | credits | balance, purchase | 2 | | keys | me, list, create, rename, revoke, rotate | 6 | | webhooks | list, create, get, update, delete, test, rotate-secret, deliveries | 8 | | status | dropspace official account connections | 1 | | usage | plan, limits, and billing period | 1 | | autopilot | status, configure, review, approve, reject, run, runs | 7 | | recommendations (recs) | list, apply, dismiss | 3 |
MCP Server Configuration
Environment Variables
| Variable | Required | Description |
| ------------------- | -------- | --------------------------------------------------- |
| DROPSPACE_API_KEY | Yes | Your Dropspace API key |
| DROPSPACE_API_URL | No | API base URL (default: https://api.dropspace.dev) |
Note: the args use
-p @jclvsh/dropspace dropspace-mcpto explicitly select the MCP-server bin. The package ships two binaries (dropspacefor the CLI,dropspace-mcpfor the MCP server), so a barenpx @jclvsh/dropspacewould launch the CLI by default.
Claude Code
Add to your .claude/settings.json:
{
"mcpServers": {
"dropspace": {
"command": "npx",
"args": ["-y", "-p", "@jclvsh/dropspace", "dropspace-mcp"],
"env": {
"DROPSPACE_API_KEY": "ds_live_your_key_here"
}
}
}
}Cursor
Add to your .cursor/mcp.json:
{
"mcpServers": {
"dropspace": {
"command": "npx",
"args": ["-y", "-p", "@jclvsh/dropspace", "dropspace-mcp"],
"env": {
"DROPSPACE_API_KEY": "ds_live_your_key_here"
}
}
}
}Available Tools
Launches
| Tool | Description |
| ---------------------------- | -------------------------------------------------------------- |
| list_launches | List your launches with pagination |
| create_launch | Create a new launch with content, media, and account selection |
| get_launch | Get a launch by ID with posting status |
| update_launch | Update a launch's schedule, status, content, or media |
| delete_launch | Delete a launch |
| publish_launch | Publish a launch to all configured platforms |
| retry_launch | Retry failed platforms for a launch |
| generate_content | Generate AI content and video scripts for a launch |
| retry_launch_content | Retry AI content generation for failed platforms |
| get_launch_analytics | Get publishing analytics with per-post engagement metrics |
| get_batch_launch_analytics | Get analytics for multiple launches in one call |
| get_launch_status | Get detailed posting status with per-platform logs |
create_launch Parameters
| Parameter | Type | Required | Description |
| ----------------------------- | ------------------ | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| title | string | Yes | Launch title |
| product_description | string | Yes | Product description |
| platforms | string[] | Yes | Platforms to publish to (1-9) |
| product_url | string | No | Product URL |
| scheduled_date | string | No | ISO 8601 datetime (15+ min in the future) |
| persona_id | string | No | Persona ID for tone/style |
| dropspace_platforms | string[] | No | Platforms to post via official dropspace accounts |
| media_mode | string | No | "images" or "video" |
| user_platform_accounts | object | No | Map of platform key to token_id (UUID). Simple keys: twitter, reddit, instagram, tiktok. LinkedIn: linkedin:personal or linkedin:organization:<org_id>. Facebook: facebook:page:<page_id> |
| platform_contents | object | No | Per-platform content (mutually exclusive with custom_content). Reddit accepts metadata.subreddits (string[], max 10, no r/ prefix — one post per subreddit, each retryable) and metadata.first_comment (max 1500) |
| custom_content | string | string[] | No | Single content for all platforms, or array of tweets for twitter thread mode (mutually exclusive with platform_contents) |
| custom_content_reddit_title | string | No | Reddit title (required with custom_content + reddit) |
| media | object[] | No | Inline media, URL or base64 (1-10 items, mutually exclusive with media_assets) |
| media_assets | object[] | No | Pre-uploaded media references (mutually exclusive with media) |
| media_attach_platforms | string[] | No | Platforms to attach media to |
| generate_ai_videos | string[] | No | Auto-generate AI videos ("instagram", "tiktok") |
update_launch Parameters
| Parameter | Type | Required | Description |
| ------------------------ | -------------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| id | string | Yes | Launch ID |
| scheduled_date | string | null | No | ISO 8601 datetime or null to clear |
| status | string | No | "draft", "manual", "trigger", "scheduled", "cancelled" |
| platform_contents | object | No | Per-platform content overrides |
| dropspace_platforms | string[] | No | Official dropspace account platforms |
| user_platform_accounts | object | No | Map of platform key to token_id (UUID). Simple keys: twitter, reddit, instagram, tiktok. LinkedIn: linkedin:personal or linkedin:organization:<org_id>. Facebook: facebook:page:<page_id> |
| media | object[] | No | Inline media (URL or base64, 1-10 items) |
| media_assets | object[] | No | Pre-uploaded media references |
| media_attach_platforms | string[] | No | Platforms to attach media to |
| media_mode | string | No | "images" or "video" |
generate_content Parameters
| Parameter | Type | Required | Description |
| ------------------------ | -------- | -------- | ------------------------------------------------------------------- |
| id | string | Yes | Launch ID |
| platforms | string[] | No | Platforms to generate for (defaults to all) |
| generate_video_scripts | string[] | No | Platforms to generate video scripts for ("instagram", "tiktok") |
Personas
| Tool | Description |
| -------------------------- | ---------------------------------------------------- |
| list_personas | List your personas |
| create_persona | Create a new persona for content tone/style |
| get_persona | Get a persona by ID with analysis details |
| update_persona | Update a persona's name or writing samples |
| delete_persona | Delete a persona |
| analyze_persona | Trigger AI analysis of a persona's writing style |
| finalize_persona | Accept a completed analysis so the persona is usable |
| discard_persona_analysis | Discard a pending analysis result |
analyze_persona Parameters
| Parameter | Type | Required | Description |
| ------------------------ | ------------- | -------- | ------------------------------------------ |
| id | string (UUID) | Yes | Persona ID |
| platforms | string[] | No | Specific platforms to analyze samples from |
| include_custom_samples | boolean | No | Include custom writing samples in analysis |
update_persona Parameters
| Parameter | Type | Required | Description |
| ------------------- | ------ | -------- | ----------------------------------- |
| id | string | Yes | Persona ID |
| name | string | No | New persona name (1-100 characters) |
| custom_samples | array | No | Custom writing samples (max 50) |
| twitter_samples | array | No | Twitter writing samples (max 50) |
| reddit_samples | array | No | Reddit writing samples (max 50) |
| facebook_samples | array | No | Facebook writing samples (max 50) |
| instagram_samples | array | No | Instagram writing samples (max 50) |
| tiktok_samples | array | No | TikTok writing samples (max 50) |
| linkedin_samples | array | No | LinkedIn writing samples (max 50) |
Media
| Tool | Description |
| ---------------- | -------------------------------------------------------------------------- |
| generate_media | Submit an AI image or video generation job for a launch (returns a job ID) |
| get_media_job | Poll a media generation job's status; returns the result URL when complete |
Connections
| Tool | Description |
| ------------------ | ----------------------------------------- |
| list_connections | List your connected social media accounts |
Boosts
| Tool | Description |
| ----------------------- | ------------------------------------------------------------------------- |
| create_boost | Create a paid Meta boost on an organic Facebook/Instagram launch (paused) |
| list_boosts | List all boosts attached to a launch |
| get_boost | Get a boost by ID with current performance metrics |
| activate_boost | Activate a paused boost — ad spend begins immediately |
| cancel_boost | Cancel a boost (deletes the Meta campaign, irreversible) |
| get_boost_performance | Fetch latest boost metrics (impressions, clicks, reach, spend) |
Credits
| Tool | Description |
| ---------------------- | ------------------------------------------------------------ |
| get_credit_balance | Get MPP credit balance and available packs (agent payments) |
| purchase_credit_pack | Purchase a credit pack via MPP (Stripe-based agent payments) |
Posts
| Tool | Description |
| ------------------ | ------------------------------------------------------ |
| delete_post | Delete a single published post from its platform |
| delete_all_posts | Delete all published posts for a launch from platforms |
API Keys
| Tool | Description |
| --------------------- | -------------------------------------------------- |
| get_current_api_key | Get the current API key's info (no scope required) |
| list_api_keys | List your API keys (requires admin scope) |
| create_api_key | Create a new API key (raw key returned once) |
| rename_api_key | Rename an API key |
| revoke_api_key | Permanently revoke an API key |
| rotate_api_key | Rotate an API key (new raw key returned once) |
create_api_key Parameters
| Parameter | Type | Required | Description |
| --------- | -------- | -------- | ---------------------------------------------------------------------------------------------- |
| name | string | Yes | Key name (1-100 characters) |
| scopes | string[] | No | Permission scopes (defaults to all): read, write, delete, publish, generate, admin |
Webhooks
| Tool | Description |
| ------------------------- | ------------------------------------------------------------ |
| list_webhooks | List your webhooks |
| create_webhook | Create a webhook endpoint (secret returned once) |
| get_webhook | Get a webhook by ID |
| update_webhook | Update a webhook's URL, events, or active status |
| delete_webhook | Delete a webhook |
| test_webhook | Send a test delivery to a webhook endpoint |
| rotate_webhook_secret | Rotate a webhook's signing secret (new secret returned once) |
| list_webhook_deliveries | List delivery attempts for a webhook |
create_webhook Parameters
| Parameter | Type | Required | Description |
| --------- | -------- | -------- | -------------------------------------------------------------------------------------------------------------------------------- |
| url | string | Yes | HTTPS webhook URL |
| events | string[] | Yes | Events to subscribe to: launch.completed, launch.failed, launch.partial, media.ready, persona.analyzed, post.deleted |
update_webhook Parameters
| Parameter | Type | Required | Description |
| --------- | ------------- | -------- | ----------------------------- |
| id | string (UUID) | Yes | Webhook ID |
| url | string | No | New HTTPS webhook URL |
| events | string[] | No | New events to subscribe to |
| active | boolean | No | Enable or disable the webhook |
Dropspace
| Tool | Description |
| ---------------------- | -------------------------------------------------------- |
| get_dropspace_status | Check which platforms have a connected dropspace account |
Usage
| Tool | Description |
| ----------- | ------------------------------------------------------- |
| get_usage | Get your current plan, usage limits, and billing period |
Autopilot
| Tool | Description |
| ------------------------- | -------------------------------------------------------------------------- |
| get_autopilot | Get autopilot status: config, queued ideas, drafts pending review |
| configure_autopilot | Create or update the autopilot config (merge semantics) |
| list_autopilot_review | List autopilot drafts awaiting approval (review mode) |
| approve_autopilot_draft | Approve a draft — schedules it for publishing |
| reject_autopilot_draft | Reject a draft — deletes it, refunds the launch slot, learns from feedback |
| run_autopilot_now | Trigger a manual autopilot run immediately (2 per hour) |
| list_autopilot_runs | Recent run history with per-step stats and errors |
Autopilot is available on pro and premium plans.
Recommendations
| Tool | Description |
| ------------------------ | ---------------------------------------------------------------------------------------------------------- |
| list_recommendations | List actionable insights from your organic post performance (winners, boost/promote/pause signals) |
| apply_recommendation | Apply the one-click action: draft launch, PAUSED boost (needs ad_account_id), autopilot queue, directive |
| dismiss_recommendation | Dismiss a pending recommendation |
Applying never publishes or spends by itself — drafts need scheduling and boosts need explicit activation.
API Key & Scopes
Generate an API key at www.dropspace.dev/settings under the API section.
API keys support scoped permissions:
| Scope | Access |
| ---------- | --------------------------------------------------------------- |
| read | List and read launches, personas, connections, dropspace status |
| write | Create and update launches, personas |
| delete | Delete launches, personas |
| publish | Publish and retry launches |
| generate | Generate AI content, retry content generation |
| admin | Manage API keys and webhooks |
Recommended Scopes by Use Case
| Use Case | Recommended Scopes |
| ---------------- | --------------------------------------------------------- |
| AI agents / MCP | read, write, generate |
| CI/CD publishing | read, publish |
| Monitoring | read |
| Full management | read, write, delete, publish, generate, admin |
Webhook Events
| Event | Description |
| ------------------ | ------------------------------------------------------------ |
| launch.completed | All platforms finished posting successfully |
| launch.failed | Launch posting failed on all platforms |
| launch.partial | Launch posting succeeded on some platforms, failed on others |
| media.ready | Media generation job completed |
| persona.analyzed | Persona AI analysis completed |
| post.deleted | A published post was deleted from its platform |
Development
# Install dependencies
npm install
# Build
npm run build
# Run
DROPSPACE_API_KEY=ds_live_... npm start