{"$schema":"https://modelcontextprotocol.io/schemas/server-card.json","serverInfo":{"name":"newsjack","version":"0.2.0","description":"Real-time music industry newsjacking. Monitor, score, generate, schedule, post."},"transport":{"type":"stdio","command":"npx","args":["newsjack-mcp","mcp"]},"transports":[{"type":"http-sse","url":"https://newsjack.cc/api/mcp/sse","messageUrl":"https://newsjack.cc/api/mcp/messages","auth":{"type":"oauth2","authorizationServer":"https://newsjack.cc","scopes":["read:stories","generate:posts","roast:posts"]}},{"type":"http-jsonrpc","url":"https://newsjack.cc/api/mcp"},{"type":"stdio","command":"npx","args":["newsjack-mcp","mcp"]}],"capabilities":{"tools":true,"resources":true,"prompts":true},"tools":[{"name":"list_stories","title":"List Music News Stories","description":"Search and list live music industry news stories scored by relevance to artist topics. Returns an array of scored headlines, source names, and summaries. Does NOT generate posts — use generate_post for drafting.","annotations":{"title":"List Music News Stories","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_story","title":"Get Single Story Details","description":"Retrieve complete details, full summary, publication metadata, and source URL for a specific story by ID. Use list_stories first to obtain valid story IDs.","annotations":{"title":"Get Single Story Details","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"generate_post","title":"Generate Newsjacking Post","description":"Generate a tailored social media post or newsletter snippet for a news story using the user brand voice profile and anti-slop guidelines. Returns ready-to-post text and saves draft to content library.","annotations":{"title":"Generate Newsjacking Post","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},{"name":"generate_post_dry_run","title":"Dry Run Post Generation","description":"Generate a draft post without persisting to the database or incrementing quota. Returns evaluation metadata including style rule checks and grounding verification. Use to test voice profiles and prompt configurations.","annotations":{"title":"Dry Run Post Generation","readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},{"name":"roast_post","title":"Roast Draft Post","description":"Evaluate a draft social post against the live music industry news cycle. Returns critical editorial feedback, quality score (0-100), timeliness verdict, and an improved rewrite. Does NOT publish or modify content.","annotations":{"title":"Roast Draft Post","readOnlyHint":true,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},{"name":"get_voice_profile","title":"Get Brand Voice Profile","description":"Retrieve the authenticated user brand voice profile including tone guidelines, sample posts, forbidden words, and style formatting toggles. Returns null if default house voice is active.","annotations":{"title":"Get Brand Voice Profile","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"set_voice_profile","title":"Update Brand Voice Profile","description":"Save custom brand voice settings (tone, sample posts, avoid words, emoji/hashtag rules) for the authenticated user. Applied to all future post generations.","annotations":{"title":"Update Brand Voice Profile","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_generation_config","title":"Get Generation Configuration","description":"Retrieve current AI model selection, sampling temperature, max token limits, and custom prompt guardrails for post generation.","annotations":{"title":"Get Generation Configuration","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"set_generation_config","title":"Update Generation Configuration","description":"Update AI model parameters and custom extra system prompt rules for post generation.","annotations":{"title":"Update Generation Configuration","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_sources","title":"List News Monitoring Sources","description":"List all news sources monitored for your account, including custom RSS feeds and disabled global source overrides.","annotations":{"title":"List News Monitoring Sources","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"add_source","title":"Add Custom News Source","description":"Add a new RSS or Atom feed URL to automated news monitoring. Feeds are polled every 5 minutes.","annotations":{"title":"Add Custom News Source","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":true}},{"name":"remove_source","title":"Remove Custom News Source","description":"Delete a custom news feed by its ID. Use list_sources to find source IDs.","annotations":{"title":"Remove Custom News Source","readOnlyHint":false,"destructiveHint":true,"idempotentHint":true,"openWorldHint":false}},{"name":"toggle_source","title":"Toggle Custom Source Active State","description":"Activate or temporarily pause polling for a custom news source feed.","annotations":{"title":"Toggle Custom Source Active State","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"disable_global_source","title":"Disable Global Industry Source","description":"Mute a default global news source so its stories do not appear in your feed.","annotations":{"title":"Disable Global Industry Source","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"enable_global_source","title":"Enable Global Industry Source","description":"Re-enable a previously muted global news source in your feed.","annotations":{"title":"Enable Global Industry Source","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"list_scheduled","title":"List Scheduled Posts Queue","description":"List posts queued for publication ordered by scheduled time.","annotations":{"title":"List Scheduled Posts Queue","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"schedule_post","title":"Schedule Post for Publishing","description":"Schedule a draft post for publishing at a designated future time. Supply content directly or reference existing content_id.","annotations":{"title":"Schedule Post for Publishing","readOnlyHint":false,"destructiveHint":false,"idempotentHint":false,"openWorldHint":false}},{"name":"cancel_scheduled","title":"Cancel Scheduled Post","description":"Revert a scheduled post back to draft status and remove it from publishing queue.","annotations":{"title":"Cancel Scheduled Post","readOnlyHint":false,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"export_to_tap","title":"Export to Total Audio Promo Pipeline","description":"Format and export post content as a standard Total Audio Promo (TAP) JSON payload for social dispatch.","annotations":{"title":"Export to Total Audio Promo Pipeline","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_usage_metrics","title":"Get Account Usage & Quota Metrics","description":"Retrieve current monthly post generation volume, remaining quota, and subscription tier limits.","annotations":{"title":"Get Account Usage & Quota Metrics","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}},{"name":"get_service_health","title":"Get NewsJack Service Health","description":"Check operational status of NewsJack core engine, RSS scanner daemon, and AI provider availability.","annotations":{"title":"Get NewsJack Service Health","readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":true}}]}