enrich_reddit_thread
enrich_reddit_thread MCP tool: trigger Bright Data scrape of a Reddit thread. Charges 50 credits on Agency or one slot from a monthly quota on Growth/Pro/Starter, idempotent on in-progress scrapes, async (1-3 min).
Updated 2026-05-08
enrich_reddit_thread
enrich_reddit_thread triggers a Bright Data scrape of a Reddit thread to pull the post body, top comments, upvotes and post date into the thread record. After the scrape lands, a follow-up get_reddit_thread (or list_reddit_threads) returns the full content so your agent can reason on it. Mentionable does not return a relevance score or suggested angle — the agent calling the MCP runs its own analysis.
When to use
Call it when list_reddit_threads returns a thread in NEW status and your agent decides it deserves a deeper read before engaging or dismissing. A typical loop: list threads with filters.status: ["NEW"], sort by score_desc, enrich the top N, poll get_reddit_thread until ENRICHED, then read content.postBody and content.topComments to draft a reply.
Requires
memberrole minimum,customerrole rejected.
Plan limits
Reddit enrichment is gated by plan. Two billing modes coexist:
| Plan | Mode | Allowance |
|---|---|---|
| Starter (legacy) | Quota | 2 enrichments / month |
| Growth | Quota | 4 enrichments / month |
| Pro | Quota | 16 enrichments / month |
| Agency | Credits | Unlimited, 50 credits per enrichment |
The monthly quota counts each thread that finished enriching (enrichedAt within the current billing period) plus any in-flight enrichment (status: "ENRICHING" triggered this period). The counter resets at the next renewal of the workspace's billing period.
When a workspace is over quota or under budget, the call returns success: false with a reason field — see "Error" cases below — and no scrape is triggered. The check is bypassed in development (NODE_ENV=development).
Idempotency
If the thread is already in ENRICHING status, the call is a no-op: it returns success: true, alreadyInProgress: true and does not re-charge or count against the quota. This makes it safe to retry on transient errors. If the thread is ENRICHED or DELETED, the call will charge again and re-trigger — call get_reddit_thread first if you want to avoid that.
Async
The scrape is asynchronous and typically lands in 1 to 3 minutes. Poll get_reddit_thread with a 30-second interval until status: "ENRICHED" (or "DELETED" if the post is gone on Reddit).
Input
| Field | Type | Description |
|---|---|---|
projectId |
string (CUID) | Project the thread belongs to. |
redditPostId |
string (CUID) | Thread to enrich. |
Response
Success — quota plan (Growth/Pro/Starter)
{
"success": true,
"alreadyInProgress": false,
"thread": {
"id": "clxred001",
"url": "https://reddit.com/r/SEO/comments/abc123",
"status": "ENRICHING"
},
"enrichment": {
"mode": "quota",
"quotaPerMonth": 4,
"remainingThisMonth": 2
},
"message": "Enrichment started. Poll get_reddit_thread to watch for status: ENRICHED (typically 1-3 minutes)."
}
Success — credit plan (Agency)
{
"success": true,
"alreadyInProgress": false,
"thread": {
"id": "clxred001",
"url": "https://reddit.com/r/SEO/comments/abc123",
"status": "ENRICHING"
},
"enrichment": {
"mode": "credits",
"charged": 50,
"remaining": 1240
},
"message": "Enrichment started. Poll get_reddit_thread to watch for status: ENRICHED (typically 1-3 minutes)."
}
Success — already in progress (no charge, no quota debit)
{
"success": true,
"alreadyInProgress": true,
"thread": {
"id": "clxred001",
"url": "https://reddit.com/r/SEO/comments/abc123",
"status": "ENRICHING"
},
"message": "Enrichment already in progress. Poll get_reddit_thread to watch for status: ENRICHED."
}
Error — quota reached (Growth/Pro/Starter)
{
"success": false,
"error": "Reddit enrichment quota reached (4/mo). Upgrade your plan to enrich more.",
"reason": "quota_reached",
"plan": "GROWTH",
"quotaPerMonth": 4,
"enrichmentsThisPeriod": 4,
"upgradeUrl": "/settings?tab=billing"
}
Error — insufficient credits (Agency)
{
"success": false,
"error": "Not enough credits (12 remaining, need 50). Raise your monthly overage cap or wait for the next renewal.",
"reason": "insufficient_credits",
"plan": "AGENCY",
"credits": {
"required": 50,
"remaining": 12,
"tier": "AGENCY"
}
}
Error — feature disabled
{
"success": false,
"error": "Reddit enrichment is not included in your plan. Upgrade to Growth or higher.",
"reason": "disabled",
"plan": "STARTER",
"upgradeUrl": "/settings?tab=billing"
}
Error — thread not found or cross-project
{
"success": false,
"error": "Reddit thread not found or does not belong to this project"
}
Tips and patterns
- Always check
successfirst, thenalreadyInProgressto know whether you spent quota or credits. - Inspect
enrichment.modeto know whether the workspace is on a quota plan or paying with credits — agents on Growth/Pro should respect the small monthly budget and avoid burning all 4–16 enrichments in one run. - Cap your enrichment loop. Burning the whole monthly allowance on Reddit threads when the user wanted competitor research is a real failure mode — set an upper bound per agent run.
- After enrichment, check
content.isDeletedOnReddit. Dead leads should be markedSKIPPEDviabulk_update_reddit_thread_status. - In development,
enrichmentreturns{ mode: "dev_bypass" }so you know no real budget was touched. - The quota / credit check reads the same counters as the in-app feature: an MCP-driven enrichment loop will consume from the dashboard budget visible at Settings → Billing.
Related tools
- list_reddit_threads — list candidates with
filters.status: ["NEW"]. - get_reddit_thread — poll the enrichment status.
- bulk_update_reddit_thread_status — mark the thread after the scrape (commented, skipped).