MMetadata /docs
Docs/Tools/find_offer_url

find_offer_url

Locate the BEST specific landing-page URL for a marketing offer on a given domain.

Read campaigns

Returns data. Calling it changes nothing, so it is safe in an unattended loop.

What it does

Locate the BEST specific landing-page URL for a marketing offer on a given domain.

                    Runs three discovery strategies in parallel:
                      1. Direct path probe — conventional paths per offer_type (e.g. /request-demo, /case-studies, /roi-calculator)
                      2. Sitemap scan      — <loc> entries filtered by offer-type keywords + optional topic
                      3. Footer/body scrape — CTA/nav links matching the offer intent

                    Candidates are scored by specificity. Generic hub pages (/resources/, /content/, /library/, homepages)
                    are HARD REJECTED — this tool exists precisely to avoid shipping them.

                    USE THIS BEFORE create_update_offer WHENEVER offer_type = "Landing Page"
                    AND the user did NOT provide an explicit URL.
                    Do NOT guess a URL. Do NOT rely on web_search for landing pages — this tool is more reliable.

                    USER-PROVIDED URL OVERRIDE (HARD RULE):
                    If the user already specified a landing-page URL in their request (e.g. "use
                    https://acme.com/demo-fintech" or "point offers at our pricing page"), DO NOT
                    call find_offer_url — use the user's URL verbatim in create_update_offer.
                    Never overwrite an explicit user-provided URL, even if it looks generic.

                    WHEN TO USE:
                    - Before every create_update_offer call with offer_type="Landing Page"
                    - When you need a specific demo / case-study / whitepaper / ROI calculator / guide URL
                    - When web_search returned only generic /resources/ or homepage URLs

                    FALLBACK BEHAVIOR:
                    - On success: use `offer_url` verbatim in create_update_offer.landingPageUrl
                    - On success=false: DO NOT create a Landing Page offer. Switch to offer_type="Lead Gen" instead.

                    RETURNS:
                    {
                        "success": true,
                        "domain": "snowflake.com",
                        "offer_type": "case_study",
                        "topic": "fintech",
                        "offer_url": "https://www.snowflake.com/customers/square/",
                        "source": "sitemap",
                        "link_text": "Square",
                        "score": 95,
                        "steps_tried": ["direct-probe", "sitemap", "footer-scrape"],
                        "candidate_count": 42
                    }

                    On failure: { "success": false, "suggestion": "Switch offer_type to 'Lead Gen'..." }

                    EXAMPLES:
                    - find_offer_url(domain="snowflake.com", offer_type="case_study", topic="fintech")
                    - find_offer_url(domain="servicenow.com", offer_type="demo")
                    - find_offer_url(domain="mongodb.com", offer_type="roi_calculator")

Arguments

ArgumentTypeNotes
domain string required Company website URL or domain. Examples: 'snowflake.com', 'www.servicenow.com'
offer_type string required Type of offer content to locate. Drives which paths are probed and which keywords score higher.
one of: case_study, demo, whitepaper, roi_calculator, guide, report, ebook, webinar
topic string Optional topic keywords to bias scoring (e.g., 'fintech', 'servicenow integration', 'data warehousing'). Improves hit rate when the domain has many offers of the same type.

Request

curl
curl -s -X POST https://mcp-server.metadata.io/mcp \
  -H "Authorization: $METADATA_PAT" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"find_offer_url","arguments":{"domain":"<domain>","offer_type":"case_study"}}}'

Response

Recorded with these arguments. Enum values are the first the tool's own schema declares; ids were fetched live from a list_ call immediately before.

arguments used
{
 "domain": "metadata.io",
 "offer_type": "case_study"
}

Real, from the production server, in 1817 ms. Values that identify a customer or disclose money are replaced with typed placeholders; keys, types and nesting are exactly as returned.

recorded response
{
 "domain": "[domain redacted]",
 "offer_type": "case_study",
 "topic": null,
 "offer_url": null,
 "source": null,
 "link_text": null,
 "score": null,
 "steps_tried": [
  "direct-probe",
  "sitemap",
  "footer-scrape"
 ],
 "candidate_count": 4,
 "success": false,
 "suggestion": "[suggestion redacted]"
}

Other campaigns tools:

All 160 tools · machine-readable index