protogrid

Search / io.github.chrisschouk/newsjack

NewsJack

R0· no sign-in

Music-industry news scored for your brand, with a drafted post in your voice.

v0.2.1 · active · repository · website · descriptor JSON · versions

An agent can connect right now, no human step.Remote endpoint, no authentication, reachable on the last probe.
Quality89new
Trust97of 100
Uptime, 30 days100%
Latency p50391 ms

Connect

8 clients · secrets stay placeholders
{
  "mcpServers": {
    "newsjack": {
      "type": "http",
      "url": "https://newsjack.cc/api/mcp"
    }
  }
}
claude mcp add --transport http newsjack https://newsjack.cc/api/mcp
[mcp_servers.newsjack]
url = "https://newsjack.cc/api/mcp"
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "newsjack": {
      "type": "remote",
      "url": "https://newsjack.cc/api/mcp",
      "enabled": true
    }
  }
}
{
  "mcpServers": {
    "newsjack": {
      "type": "http",
      "url": "https://newsjack.cc/api/mcp"
    }
  },
  "deeplink": "cursor://anysphere.cursor-deeplink/mcp/install?name=newsjack&config=eyJ0eXBlIjoiaHR0cCIsInVybCI6Imh0dHBzOi8vbmV3c2phY2suY2MvYXBpL21jcCJ9"
}
{
  "servers": {
    "newsjack": {
      "type": "http",
      "url": "https://newsjack.cc/api/mcp"
    }
  }
}
{
  "mcpServers": {
    "newsjack": {
      "httpUrl": "https://newsjack.cc/api/mcp"
    }
  }
}
extensions:
  "newsjack":
    enabled: true
    name: "newsjack"
    type: streamable_http
    uri: "https://newsjack.cc/api/mcp"
    timeout: 300

Quality 89 / 100new

protocol75 · weight 25
  • warn
    protocol.modernnewest supported version is 2024-11-05; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
  • n/a
    protocol.statelessonly applies to 2026-07-28 servers
  • pass
    protocol.transportstreamable HTTP
  • n/a
    protocol.list_ttlonly applies to 2026-07-28 servers
authorizationn/a · weight 15
  • n/a
    auth.prm, auth.as_metadata, auth.cimdno remote uses OAuth
  • n/a
    auth.secret_in_urlno templated URL
tool hygiene100 · weight 30
  • pass
    tools.descriptionsevery tool has a description
  • pass
    tools.description_lengthdescriptions are concise
  • pass
    tools.schemasevery tool has an object input schema
  • pass
    tools.annotations21 of 21 tools declare readOnlyHint or destructiveHint
  • pass
    tools.directory_hintsevery tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
  • pass
    tools.token_costabout 4,201 tokens to load every tool
  • pass
    tools.api_dumptools are not a one-to-one API dump
  • pass
    tools.hidden_textno hidden text in tool names, descriptions, schemas or annotations
stabilityn/a · weight 15
  • n/a
    stability.changes, stability.rug_pull, stability.new_linkstool history recorded for 5 of the 7 days needed
dependenciesn/a · weight 15
  • n/a
    deps.known_vulns, deps.mcp_sdk_version, deps.resolvableno npm or PyPI package

21 tools, about 4,201 tokens to load them all · tool set 9214210c9a88 · tools last changed 2026-11-09 · checked 2026-11-14 08:10 UTC

Tool changes

  • export_to_tapchangeddescription, input schema, annotationsmeaning changed
    before

    Write a Jack into a Total Audio Promo campaign and return TAP’s acknowledgement.

    after · 12% of words in common

    Send one Jack to a Total Audio Promo (TAP) campaign, creating a new draft campaign or writing into an existing one, and return TAP’s receipt. TAP is a separate product, so only call this when the person has asked for the Jack in TAP. Provide either content_id (a saved Post; its text, platform and title are used) or content (raw text). Without campaign_id it creates a draft TAP campaign named after title and stores the Jack as its goal. With campaign_id it overwrites that campaign’s existing goal field with the Jack, which cannot be undone from NewsJack. The write goes through the TAP API key configured on the NewsJack server (TAP_API_KEY), not a per-user TAP login, and fails if that key is missing or TAP refuses. Returns structuredContent { receipt: { campaignId, campaignUrl, created, acknowledgedAt } }. Not idempotent: repeating it without campaign_id creates another campaign. Needs the generate:posts scope; no NewsJack allowance is used.

  • cancel_scheduledchangeddescription, input schemameaning changed
    before

    Revert a scheduled post back to draft status and remove it from publishing queue.

    after · 22% of words in common

    Cancel a scheduled Post: move it from scheduled or ready back to draft and clear its scheduled time, so it leaves the publishing queue. The Post and its text are kept in the library; schedule it again with schedule_post. Idempotent: a Post that is already a draft is reported unchanged. A Post that is publishing, posted or failed cannot be cancelled and returns an error. Find the id with list_scheduled.

  • list_scheduledchangeddescription, input schemameaning changed
    before

    List posts queued for publication ordered by scheduled time.

    after · 8% of words in common

    List the signed-in account’s Posts from the library, filtered by lifecycle status and ordered by scheduled_for (soonest first, unscheduled last). By default it returns the scheduled queue. Pass status "all" to list every Post (drafts, waiting, posted and failed), which makes it the general Post listing tool. Statuses: draft (saved, no time set), scheduled (time set), ready (the time has passed and the Post is waiting for a person to publish it in the dashboard; nothing posts automatically), publishing, posted and failed. Returns a numbered summary with the first 8 characters of each id and the first 80 characters of text, plus structuredContent { count, posts } with the full Post rows (id, platform, content, status, scheduled_for, title, story_id, published_url). Use the full id with schedule_post, cancel_scheduled or export_to_tap. Read-only; needs the manage:schedule scope.

  • enable_global_sourcechangeddescriptionmeaning changed
    before

    Re-enable a previously muted global news source in your feed.

    after · 15% of words in common

    Unmute a built-in publication previously muted with disable_global_source, so its Stories return to this account’s feed. Pass the same exact name; list_sources shows the muted ones. Custom RSS feeds are resumed with toggle_source instead. Idempotent: unmuting a publication that is not muted changes nothing.

  • disable_global_sourcechangeddescriptionmeaning changed
    before

    Mute a default global news source so its stories do not appear in your feed.

    after · 20% of words in common

    Mute one of NewsJack’s built-in publications so its Stories stop appearing in this account’s feed. Identify it by its exact publication name. For a custom RSS feed the account added itself, use toggle_source with its source_id instead. Reversible with enable_global_source and idempotent.

  • toggle_sourcechangeddescription, input schemameaning changed
    before

    Activate or temporarily pause polling for a custom news source feed.

    after · 6% of words in common

    Pause or resume one of the account’s own custom RSS sources, identified by source_id from list_sources. It only works on feeds added with add_source. To mute or unmute one of NewsJack’s built-in publications, use disable_global_source and enable_global_source, which take the publication name instead. Reversible and idempotent: setting the same value twice changes nothing. Pausing keeps the source configured; remove_source deletes it.

  • generate_post_dry_runchangeddescriptionmeaning changed
    before

    Create a Jack preview without saving a Post. The preview performs the normal paid model work and consumes one generation allowance.

    after · 39% of words in common

    Create a Jack preview without saving a Post. The preview performs the normal paid model work and consumes one generation allowance, exactly like generate_post. Nothing is written to the library, so there is no Post id: to schedule or export the text afterwards, pass it as content to schedule_post or export_to_tap. Prefer generate_post when the Jack will probably be kept.

  • generate_postchangeddescriptionmeaning changed
    before

    Create a Jack from an owned Story using the saved voice and output controls, then save it as a draft Post in the library.

    after · 43% of words in common

    Create a Jack from an owned Story using the saved voice and output controls, then save it as a draft Post in the library. Returns the Jack text and the new Post id, which schedule_post and export_to_tap accept as content_id. Uses one generation from the daily allowance. Use generate_post_dry_run instead only when you want the text without a library entry; it costs the same allowance.

  • list_storieschangeddescription, input schemameaning changed
    before

    Search the authenticated account’s music-industry Stories by relevance, recency, and industry.

    after · 10% of words in common

    List the signed-in account’s scored news Stories, filtered by minimum relevance and industry and sorted by relevance or recency. Returns a readable summary per Story (ID, title, source, URL, relevance as a percentage, summary) and structuredContent { count, stories } where each Story has id, title, summary, source_name, url, relevance_score (0 to 1), detected_at, urgency, status and metadata. Use it to find what is worth writing about today, then pass a Story id to get_story for the full record or to generate_post to write a Jack from it. Only Stories NewsJack has already scanned into this account are returned; it does not fetch feeds or search the web. Read-only, no allowance used. Needs the read:stories scope; anonymous callers get an authentication error. An empty result means nothing matched, so lower min_relevance or drop category.

Full history: list_changes · trend: quality JSON.

Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed. How it is computed.

Trust 97 / 100

provenance90
liveness100
freshness100
hygiene100

+repository +namespace-matches-repo +website +reachable +uptime-100% +updated-5d-ago

Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed. How it is computed.

Endpoints

remoteauthreachableuptime 30dp50protocollast ok
https://newsjack.cc/api/mcp streamable-httpnoneyes100%391 ms2024-11-052026-11-14

Tools (21)

add_sourceAdd a new RSS or Atom feed URL to automated news monitoring. Feeds are polled every 5 minutes.
cancel_scheduledCancel a scheduled Post: move it from scheduled or ready back to draft and clear its scheduled time, so it leaves the publishing queue. The Post and its text are kept in the library; schedule it again with schedule_post. Idempotent: a Post that is already a draft is reported unchanged. A Post that is publishing, posted or failed cannot be cancelled and returns an error. Find the id with list_scheduled.
disable_global_sourceMute one of NewsJack’s built-in publications so its Stories stop appearing in this account’s feed. Identify it by its exact publication name. For a custom RSS feed the account added itself, use toggle_source with its source_id instead. Reversible with enable_global_source and idempotent.
enable_global_sourceUnmute a built-in publication previously muted with disable_global_source, so its Stories return to this account’s feed. Pass the same exact name; list_sources shows the muted ones. Custom RSS feeds are resumed with toggle_source instead. Idempotent: unmuting a publication that is not muted changes nothing.
export_to_tapdestructiveSend one Jack to a Total Audio Promo (TAP) campaign, creating a new draft campaign or writing into an existing one, and return TAP’s receipt. TAP is a separate product, so only call this when the person has asked for the Jack in TAP. Provide either content_id (a saved Post; its text, platform and title are used) or content (raw text). Without campaign_id it creates a draft TAP campaign named after title and stores the Jack as its goal. With campaign_id it overwrites that campaign’s existing goal field with the Jack, which cannot be undone from NewsJack. The write goes through the TAP API key configured on the NewsJack server (TAP_API_KEY), not a per-user TAP login, and fails if that key is missing or TAP refuses. Returns structuredContent { receipt: { campaignId, campaignUrl, created, acknowledgedAt } }. Not idempotent: repeating it without campaign_id creates another campaign. Needs the generate:posts scope; no NewsJack allowance is used.
generate_postCreate a Jack from an owned Story using the saved voice and output controls, then save it as a draft Post in the library. Returns the Jack text and the new Post id, which schedule_post and export_to_tap accept as content_id. Uses one generation from the daily allowance. Use generate_post_dry_run instead only when you want the text without a library entry; it costs the same allowance.
generate_post_dry_runCreate a Jack preview without saving a Post. The preview performs the normal paid model work and consumes one generation allowance, exactly like generate_post. Nothing is written to the library, so there is no Post id: to schedule or export the text afterwards, pass it as content to schedule_post or export_to_tap. Prefer generate_post when the Jack will probably be kept.
get_generation_configread-onlyRetrieve the sampling, length, and additional writing rules applied when NewsJack creates a Jack.
get_service_healthread-onlyReport the most recent observed health of the NewsJack model chain, including an unknown state when no recent probe exists.
get_storyread-onlyRetrieve complete details, full summary, publication metadata, and source URL for a specific story by ID. Use list_stories first to obtain valid story IDs.
get_usage_metricsread-onlyRetrieve today’s observed Jack and roast usage with the authenticated account’s tier limits.
get_voice_profileread-onlyRetrieve 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.
list_scheduledread-onlyList the signed-in account’s Posts from the library, filtered by lifecycle status and ordered by scheduled_for (soonest first, unscheduled last). By default it returns the scheduled queue. Pass status "all" to list every Post (drafts, waiting, posted and failed), which makes it the general Post listing tool. Statuses: draft (saved, no time set), scheduled (time set), ready (the time has passed and the Post is waiting for a person to publish it in the dashboard; nothing posts automatically), publishing, posted and failed. Returns a numbered summary with the first 8 characters of each id and the first 80 characters of text, plus structuredContent { count, posts } with the full Post rows (id, platform, content, status, scheduled_for, title, story_id, published_url). Use the full id with schedule_post, cancel_scheduled or export_to_tap. Read-only; needs the manage:schedule scope.
list_sourcesread-onlyList all news sources monitored for your account, including custom RSS feeds and disabled global source overrides.
list_storiesread-onlyList the signed-in account’s scored news Stories, filtered by minimum relevance and industry and sorted by relevance or recency. Returns a readable summary per Story (ID, title, source, URL, relevance as a percentage, summary) and structuredContent { count, stories } where each Story has id, title, summary, source_name, url, relevance_score (0 to 1), detected_at, urgency, status and metadata. Use it to find what is worth writing about today, then pass a Story id to get_story for the full record or to generate_post to write a Jack from it. Only Stories NewsJack has already scanned into this account are returned; it does not fetch feeds or search the web. Read-only, no allowance used. Needs the read:stories scope; anonymous callers get an authentication error. An empty result means nothing matched, so lower min_relevance or drop category.
remove_sourcedestructiveDelete a custom news feed by its ID. Use list_sources to find source IDs.
roast_postread-onlyEvaluate 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.
schedule_postSchedule a draft post for publishing at a designated future time. Supply content directly or reference existing content_id.
set_generation_configUpdate the sampling, length, and additional writing rules used for future Jacks.
set_voice_profileSave custom brand voice settings (tone, sample posts, avoid words, emoji/hashtag rules) for the authenticated user. Applied to future Jacks.
toggle_sourcePause or resume one of the account’s own custom RSS sources, identified by source_id from list_sources. It only works on feeds added with add_source. To mute or unmute one of NewsJack’s built-in publications, use disable_global_source and enable_global_source, which take the publication name instead. Reversible and idempotent: setting the same value twice changes nothing. Pausing keeps the source configured; remove_source deletes it.

Schemas: list_tools.

Similar MCP servers

More from io.github.chrisschouk

Official server.json
{
  "name": "io.github.chrisschouk/newsjack",
  "icons": [
    {
      "src": "https://newsjack.cc/favicon.svg",
      "sizes": [
        "any"
      ],
      "mimeType": "image/svg+xml"
    }
  ],
  "title": "NewsJack",
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
  "remotes": [
    {
      "url": "https://newsjack.cc/api/mcp",
      "type": "streamable-http"
    }
  ],
  "version": "0.2.1",
  "repository": {
    "url": "https://github.com/chrisschouk/newsjack",
    "source": "github"
  },
  "websiteUrl": "https://newsjack.cc",
  "description": "Music-industry news scored for your brand, with a drafted post in your voice."
}