Skip to main content
Glama
mambalabsdev

@mambalabsdev/mcp-link-in-bio-newsletter-checker

Official

Check a Link in Bio Page for a Newsletter

check_link_in_bio_and_newsletter
Read-onlyIdempotent

Follows a creator's link-in-bio page to check if they run a newsletter, identifies the email platform, and returns the page URL proving it.

Instructions

Follows the link in bio page behind a creator handle, or a link in bio URL you already hold, and reports whether the creator runs a newsletter, which email platform hosts it, and the page URL that proves it. Also returns the link in bio host, the creator own website resolved through any redirect, every outbound link found, the public business email, a manager or booking email with the page it came from, a matched talent agency name and domain, and what the creator sells: course, coaching, digital product, merch, membership, brand deals, and discount codes. Every row carries newsletter_check_method, row_status, and error_reason, so a no is told apart from an unknown. Charges $0.002 per run plus $0.008 per creator checked, and on top of that $0.004 per headless browser render, $0.005 per website email scan, $0.003 per agency match, and $0.01 per Instagram bio fetch, each only when that step runs. The AI check uses your own Anthropic or OpenAI key and is billed by them, not here. Requires an APIFY_TOKEN and consumes Apify credits. Read only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
handlesNoOne per line. A profile URL on any supported platform (https://www.tiktok.com/@name, https://www.instagram.com/name/, https://www.youtube.com/@name, a Pinterest, Twitch, or Threads profile, an Apple Podcasts show page, or a Spotify show), or platform:@handle (tiktok:@name). A bare @handle needs `platforms` and is looked up on each listed platform. One entry is a single run; a list is a batch. Duplicates are removed before any fetch.
ai_checkNoOff by default. When on, a model reads the rule classifier's evidence and rules on each row. Runs only with your own key in `ai_api_key`; the actor never uses a Mamba Labs key and never logs yours. Default: false.
bio_linksNoSkip the profile read and start from these pages directly (a Linktree, Stan Store, linkin.bio page, or the creator's own site). One per line. When one input item carries both a handle and bio links, the links are read as that creator's links and the actor returns one row for that creator, not one row per link; to get one row per link, pass the links in bio_links alone.
platformsNoWhich platforms a bare @handle is looked up on. A full profile URL carries its own platform and ignores this. This actor does not search; pass the creators you want read. Supported: TikTok, Instagram, YouTube, Pinterest, Twitch, Threads, and podcasts. Not X, not Facebook pages, not LinkedIn.
ai_api_keyNoYour own model API key. Used only when `ai_check` is on. Never stored, logged, or written to a row.
batch_sizeNoRows fetched at once. Leave empty for the measured per platform default; the measurement is in the README. Higher is faster and, above the measured point, loses rows.
ai_providerNoWhich API the key belongs to. Default: "anthropic".
match_agenciesNoMatches the domain of a manager or business email against the bundled talent agency list and fills agency_name, agency_domain, and agency_match_method. Charged per matched row (event agency-match). Default: true.
escalate_on_blockNoOn by default. A profile fetch that comes back as a bot detection page is retried once over the residential proxy. On Instagram the bio, bio link, and following are read from the profile page over residential when the embed and the datacenter API did not carry them, and a page that comes back readable charges instagram-bio-fetch ($0.010). Uncheck it to never pay that event: a blocked profile then returns a labeled error row, and Instagram rows keep an empty bio and bio link on about half of the reads. Default: true.
scan_website_for_emailNoOff by default. For creators with their own website (not a link-in-bio page), reads the home, contact, and about pages and the footer for an email and records where it was found. Charged per creator scanned (event website-scan). Default: false.
render_unreadable_pagesNoOff by default. Some link-in-bio pages (Stan Store, linkin.bio, Typeform shells) return an empty shell to a plain fetch and are classified unknown_fetch_failed. Turn this on to render them in a headless browser. Charged per page rendered (event browser-render) to cover the browser compute. Default: false.

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv1.0.0

TDQS

A4.4/5.0
Behavior5/5

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

The description goes far beyond the readOnlyHint annotation by detailing exact pricing per step, the AI key being user-provided and never logged, and the row-level error fields. It also explicitly states 'Read only,' reinforcing the annotation, and discloses that the tool requires an APIFY_TOKEN and consumes credits.

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?

The purpose is front-loaded in the first sentence, but the description is long with detailed pricing and output lists. While every detail is arguably useful for an agent, the length pushes the limit of conciseness; it could have been compressed without losing essential information.

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?

With no output schema, the description takes on the burden of explaining returns, and it delivers a thorough list of fields including error-handling details like newsletter_check_method, row_status, and error_reason. It also covers constraints like the APIFY_TOKEN requirement and the cost model, making it complete for the tool's complexity.

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

Parameters3/5

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

The input schema covers 100% of parameter descriptions, so the baseline of 3 applies. The tool description does not add extra parameter semantics; it focuses on overall behavior and outputs, which are already well documented in the schema.

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?

The description opens with a specific verb and resource: it 'follows the link in bio page' and 'reports whether the creator runs a newsletter.' It then enumerates a comprehensive set of additional outputs, making its purpose unmistakable even without sibling tools.

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?

The description implies the trigger clearly: you supply a creator handle or a link in bio URL, and the tool reads from there. It does not explicitly state when not to use it, but it notes the tool is read-only and does not search, which implies the user must already have targets. There are no sibling tools to contrast against.

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

Deploy Server

Other Tools