mcp-publication-cadence-tracker
LocalAbout mcp-publication-cadence-tracker
An Apify-backed MCP server that measures a company’s long-form publishing volume and whether its cadence is accelerating or declining. It is designed for content and market research, and checks publication dates to avoid counting page updates as new posts.
Key features
- 01Monthly publishing rates and counts
- 02Accelerating or declining trend
- 03Blog and publication discovery
- 04Publication-date reliability checks
- 05Evidence and confidence fields
Use cases
- 01Compare companies’ publishing activity
- 02Track changes in editorial output
- 03Assess a company’s content operation
MCP support
Exposes `track_publication_cadence` to MCP clients, passing domain or batch requests to the Apify actor and returning its analysis. An `APIFY_TOKEN` is required.
Configuration
Local server config is the same for every client. Copy it into your client’s MCP config file.
npx -y @mambalabsdev/mcp-publication-cadence-trackerAPIFY_TOKENSecretApify API token from https://console.apify.com/account/integrationsLocal servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.
Tools
1Saved tool list · updated 2w ago
| Parameter | Type | Required | Description |
|---|---|---|---|
| domain | string | No | A single company domain, e.g. zapier.com. Provide either domain or domains. |
| domains | array | No | Batch mode: several company domains analyzed in one call. Takes precedence over domain. Each domain can take up to domain_time_budget_ms (default 75 seconds), and batchSize domains run at once, so a list of 20 at the defaults takes about 12 minutes; this call waits for the whole run. |
| batchSize | integer | No | How many domains to analyze concurrently. Default 2. |
| skipCache | boolean | No | Force a fresh crawl and ignore the 3 day result cache. |
| page_concurrency | integer | No | How many pages are fetched concurrently within one domain, 1 to 16, default 8. |
| max_pages_to_date | integer | No | How many post pages to fetch per domain for dating. Default 400. Above this cap the counts are estimated from an even sample across the archive and counts_are_estimate is set true. Raise it for a tighter number on a large archive, at the cost of run time. |
| request_timeout_ms | integer | No | Per HTTP request timeout in milliseconds, 3000 to 20000, default 9000. |
| max_sitemap_fetches | integer | No | Cap on how many sitemap files are fetched per domain, 4 to 40, default 18. Lower it to bound run time on sites with deeply nested sitemap indexes. |
| domain_time_budget_ms | integer | No | Hard wall-clock ceiling per domain, default 75000. When it is nearly spent the crawl stops and the row is returned with partial_result true and reduced confidence rather than timing out. |
Details
From the project READMEPublication Cadence Tracker MCP Server
MCP server for the Mamba Labs Publication Cadence Tracker actor on Apify.
Give it a company domain. It tells your agent how much long-form work that company publishes per month, and whether that rate is rising or falling.
Tool
track_publication_cadence
Returns a flat row per domain: posts_last_30d, posts_last_90d, posts_last_12m, avg_posts_per_month, cadence_trend (accelerating, steady, declining, dormant, unknown), trend_pct_change, most_recent_post_date, days_since_last_post, publication_url, formats_detected[], distinct_authors_count, discovery_method, confidence, and an evidence[] array of quotable strings.
Why the trend and not the count
Four pieces a month is unremarkable. Going from four to twelve in six months is a content operation outgrowing its staff. The comparison is stated rather than implied: the last 90 days against the prior 275 days, both normalized to posts per month, with accelerating and declining set at 25 percent either way.
This is editorial output volume, not changelog monitoring. A release feed is detected and rejected rather than counted as published work.
The number it refuses to give you
Publication dates come from the post pages, never from sitemap lastmod. Across 100 measured URL pairs, lastmod tracked the page's own dateModified and ran later than datePublished by a median of 151 to 1653 days on four of six sites. A cadence built on it would report a company that refreshed 200 old posts as a company that published 200 posts.
A page field can fail the same way, so it is checked against its own distribution and against the site's feed. When it fails, date_source_reliable comes back false and every count is nulled. Check that field before quoting a number.
Measured on nine live domains: a rate recovered on 5 of 6 publishers, 3 of 3 controls correctly returning nothing. The one miss is the guard refusing a site whose date field tracks edits.
track_publication_cadence
| Input | Type | Notes |
|---|---|---|
domain | string | One company domain. |
domains | string[] | Batch. Takes precedence over domain. |
max_pages_to_date | integer | Post pages fetched per domain, default 400. Above this the counts are estimated from an even sample. |
domain_time_budget_ms | integer | Hard per-domain wall-clock ceiling, default 75000. |
batchSize | integer | Concurrent domains, default 2. |
skipCache | boolean | Ignore the 3 day result cache. |
page_concurrency | integer | 1 to 16, default 8. Pages fetched at once within one domain. |
max_sitemap_fetches | integer | 4 to 40, default 18. Cap on sitemap files fetched per domain. |
request_timeout_ms | integer | 3000 to 20000, default 9000. Per HTTP request timeout. |
max_charge_usd | number | Optional spending cap for this call, in USD. The actor stops before any charge that would take the run past this amount and keeps every row already charged. |
What it actually measures
Not whether a company has a blog. How much it published, when, and whether the rate moved.
Finding the blog is most of the work, and it is where a naive version fails. The blog often lives on a different host from the apex and the apex sitemap never mentions it (blog.hubspot.com). A homepage sometimes advertises only a changelog feed while linking to the real blog repeatedly (about.gitlab.com). Paths are often locale prefixed, so /en-uk/ and /bg-bg/ fragment the archive into forty pieces. All three are handled, and publication_url reports a locale-prefixed section as https://example.com/*/knowledge/.
Three fields to read before you trust a number. date_source_reliable false means the site's date field tracks edits rather than publication and every count has been nulled. counts_are_estimate true means the archive was larger than the page budget and the counts come from a scaled even sample, so two runs can differ by a few posts. partial_result true means the wall-clock budget stopped the crawl and the numbers are lower bounds.
Pricing
You pay per event on Apify, billed to your own Apify account. Prices from the live pricing record, read 2026-10-16:
| Event | Price per event (USD) | Fires when |
|---|---|---|
actor-start | $0.00005 | Charged once when the run starts. |
domain-analyzed | $0.004 on the Free plan, down to $0.0034 on higher Apify plans | Charged once per domain analyzed. Domains with no publication section, and domains whose date field turns out to track edits rather than publication, still count as analyzed and are charged. |
The actor's Apify page carries the current prices. Running this server consumes Apify credits.
Setup
{
"mcpServers": {
"mamba-publication-cadence-tracker": {
"command": "npx",
"args": ["-y", "@mambalabsdev/mcp-publication-cadence-tracker"],
"env": { "APIFY_TOKEN": "your-apify-token" }
}
}
}
Get a token at console.apify.com/account/integrations. Read-only; consumes Apify credits per domain analyzed.
Also available
This tool is also exposed by the GTM Suite umbrella server, alongside the rest of the Mamba Labs GTM actors, if you would rather run one server than many.
Built by Mamba Labs.
Comments
New to MCP?
From what the protocol is to installing your first server, these answers cover most first questions.
An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.