PendiumDocs

Analyze URLs and competitors

Run deep competitive briefs on cited sources and competitor pages, then poll, list, refresh, and delete them.

Produce a deep, structured brief for any URL — a cited source, a competitor page, or a page you want to outperform. Pendium scrapes the page, runs SERP and competitive analysis, and returns topic coverage, content-structure patterns, gaps, and writer guidance. This job also covers reading, listing, refreshing, and deleting those analyzed URLs (bookmarks).

When to use

  • Reach for this when you have a specific URL to understand or beat — often a source from get_cited_sources, a competitor page, or a page ranking for a keyword you want.
  • Analysis and refresh use LLM credits and require a Starter or Pro plan.
  • Analysis is async: analyze_url returns a briefId you poll with get_analyzed_url until status: completed.

Typical sequence

  1. analyze_url — kick off the brief for a URL. Returns a briefId.
  2. get_analyzed_url — poll every 15–30s until status: "completed".
  3. list_analyzed_urls — find existing briefIds and understand the content pipeline.
  4. refresh_analyzed_url — re-run the analysis for an existing brief when the page has changed.
  5. delete_analyzed_url — permanently remove a brief and its analysis from the agent's knowledge.

Tools

analyze_url

Analyze a URL and generate a deep brief: scrapes the page, runs SERP analysis for the target keyword, analyzes competing pages, and produces a structured brief with topic coverage, content-structure patterns, competitive gaps, and writer guidance.

Authentication: Paid (Starter or Pro — uses LLM credits for scraping and analysis). An account in read-only mode can't analyze a URL (LLM spend) — the tool errors with a read-only message.

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent ID to create the brief for. Grounds the analysis in this brand's context.
sourceUrlstring (URL)YesThe URL to analyze — a cited source, competitor page, or any URL.

Async. Returns briefId, status, and reused. Calling the tool twice on the same agent + URL returns the existing brief instead of re-billing. Poll get_analyzed_url with the briefId (typically 30–60 seconds).

get_analyzed_url

Get the status and data for an analyzed URL created by analyze_url. Poll every 15–30s until status is completed. Once complete, returns the full analysis with topic coverage, content structure, competitive analysis, and writer guidance.

Authentication: Required

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent ID the brief belongs to.
briefIdstring (uuid)YesThe analyzed-URL ID returned by analyze_url.

Status progression: pending → scraping → searching → analyzing → gap_analysis → completed (or failed). Returns the brief's status, keyword, sourceUrl, and timestamps; once completed, also the full analysis and gapAnalysis objects. Use list_analyzed_urls to find brief IDs.

refresh_analyzed_url

Re-run the analysis for an existing analyzed URL: re-scrapes the page, re-runs SERP and competitive analysis, and refreshes the brief.

Authentication: Paid (Starter or Pro — re-analysis uses LLM credits, same as analyze_url).

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent the analyzed URL belongs to.
briefIdstring (uuid)YesThe analyzed-URL id to refresh (the briefId from list_analyzed_urls).

Async. Returns immediately with status: "queued" when a fresh re-analysis started, or status: "already_in_flight" when one was already running (a no-op). Poll get_analyzed_url after a minute or two.

Note: Refresh updates the brief itself. If this URL was already embedded into the knowledge base, its embedded summary (what query_knowledge searches) is not re-embedded by a refresh — that content can stay as it was at first analysis. This matches the web app's refresh behavior.

delete_analyzed_url

Permanently remove an analyzed URL — a bookmark — and its deep analysis from the agent's knowledge. Destructive and irreversible. Anyone with access to the agent, including shared team members, can delete one.

Authentication: Required

ParameterTypeRequiredDescription
syntheticIdintegerYesThe agent the analyzed URL belongs to.
briefIdstring (uuid)YesThe analyzed-URL id to delete (the briefId from list_analyzed_urls).

Returns success: true with syntheticId and deletedBriefId.

list_analyzed_urls

List analyzed URLs for a brand — structured content plans with goals, key messages, creative direction, and strategic guidance. Use it to understand the content pipeline and avoid duplicating planned work, and to find briefIds for the tools above.

Authentication: Required

ParameterTypeRequiredDefaultDescription
syntheticIdintegerYesThe agent ID to list analyzed URLs for.
limitinteger (1–50)No20Number of briefs to return.

Returns briefCount and a briefs array. Key per-brief fields: title (working title), goal (strategic goal), seedIdea (original idea), postConcept (detailed concept), creativeDirection (format/style guidance), keyMessage (core message), and status ("planned", "in_progress", "completed", etc.).

On this page