Skip to main content
Glama

Track Publication Cadence

track_publication_cadence
Idempotent

Measure a company's long-form publishing cadence from its domain by returning recent post counts, monthly averages, format mix, and an accelerating, steady, declining, dormant, or unknown trend.

Instructions

Given a company domain, measure how much long-form work that company publishes and whether the rate is rising or falling. Returns post counts for the last 30 days, 90 days and 12 months, a monthly average, and a cadence_trend of accelerating, steady, declining, dormant or unknown, with the percent change behind it. The trend compares the last 90 days against the prior 275 days, both normalized to posts per month. Also returns the blog URL, the format mix (blog posts, guides, reports, case studies, whitepapers, podcasts, videos, press releases, research), the number of distinct bylines, and how the post list was discovered. This measures EDITORIAL output volume, not product changelogs: a release feed is detected and rejected rather than counted. Publication dates are read from the post pages, because sitemap lastmod was measured to be a modification date running later than publication by a median of 151 to 1653 days. When a site's date field tracks edits rather than publication, date_source_reliable comes back false and every count is nulled rather than reported wrong, so read that field before quoting a number. Counts are a census when the archive fits the page budget and a scaled even sample otherwise, flagged by counts_are_estimate. Public sitemaps, feeds and pages only. Returns flat, Clay-ready JSON. Reads public data and writes nothing; requires an APIFY_TOKEN and consumes Apify credits per domain analyzed.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
domainNoCompany domain to analyze, without https or www, e.g. zapier.com.
domainsNoBatch mode: several company domains analyzed in one call. Takes precedence over domain.
skipCacheNoForce a fresh crawl and ignore the 3 day result cache.
max_charge_usdNoOptional spending cap for this call, in USD, passed to the actor as max_charge_usd. The run stops before any charge that would take it past this amount and keeps every row already charged. Leave empty to rely only on the maximum charge per run set on your Apify account.
page_concurrencyNoHow many pages are fetched concurrently within one domain.
max_pages_to_dateNoHow many post pages to fetch per domain for dating. Default 400. Above this cap the counts are estimated from an even sample and counts_are_estimate is set true.
request_timeout_msNoPer-HTTP-request timeout in milliseconds.
max_sitemap_fetchesNoCap on how many sitemap files are fetched per domain. Lower it to bound run time on deeply nested sitemap indexes.
domain_time_budget_msNoHard wall-clock ceiling per domain, default 75000. When nearly spent the crawl stops and the row is returned with partial_result true rather than timing out.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changedv1.14.0
    • addedInput schema / properties / max_charge_usd
      Added value: +{
      +  "description": "Optional spending cap for this call, in USD, passed to the actor as max_charge_usd. The run stops before any charge that would take it past this amount and keeps every row already charged. Leave empty to rely only on the maximum charge per run set on your Apify account.",
      +  "minimum": 0,
      +  "type": "number"
      +}
  2. Addedv1.1.1

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With sparse annotations (readOnlyHint=false, idempotentHint=true, openWorldHint=true), the description carries the disclosure burden well: credit consumption, auth requirement, 3-day cache, sample-vs-census estimation, nulling instead of reporting unreliable dates, partial_result on timeout, and public-data-only sourcing. The 'writes nothing' claim sits slightly oddly against readOnlyHint=false, but false is a non-claim rather than an assertion of writes, so this is a clarifying detail rather than a contradiction.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Roughly 250 words, but front-loaded with the purpose and trend definition before the caveats. Almost every sentence carries a distinct fact (date_source_reliable, counts_are_estimate, credit cost), though the density is high enough that a couple of clauses could be tightened.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

There is no output schema, so the description must carry return values, and it does: the 30/90/12-month counts, monthly average, the cadence_trend enum values, the trend normalization window, format mix, byline count, and discovery method. Nothing an agent needs to call or interpret this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3, but the description goes further: it explains the page-budget/sampling tradeoff behind max_pages_to_date (counts_are_estimate), the per-domain wall clock that yields partial_result, the cost cap semantics, and cache bypass. Several parameters gain operational meaning beyond their schema text.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Opens with a specific verb and resource: 'measure how much long-form work that company publishes and whether the rate is rising or falling.' It explicitly bounds the scope ('EDITORIAL output volume, not product changelogs') and describes the exact outputs, so an agent can distinguish it from any sibling like capture_linkedin_posts_and_commenters without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear usage context: it rejects release feeds, requires an APIFY_TOKEN, consumes Apify credits per domain, reads only public sitemaps/feeds/pages, and instructs the agent to check date_source_reliable before quoting counts. It does not name a sibling alternative or state an explicit when-not-to-use condition, so it lands just short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.