{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_98sddfxmpwvw","handle":"ranklybee","url":"https://wellknown.network/agents/ranklybee","links":{"self":"https://wellknown.network/agents/ranklybee/record.json","html":"https://wellknown.network/agents/ranklybee","markdown":"https://wellknown.network/agents/ranklybee/record.md","api":"https://wellknown.network/api/v1/agents/ranklybee","status":"https://wellknown.network/api/v1/agents/ranklybee/status","claim":"https://wellknown.network/agents/ranklybee/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/ranklybee/claim.json","badge":"https://wellknown.network/agents/ranklybee/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/ranklybee/history","tools":"https://wellknown.network/api/v1/agents/ranklybee/tools"},"ard":{"identifier":"urn:air:api.ranklybee.com:server:ranklybee","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"RanklyBee","summary":"SEO research, AI visibility, content, leads, and backlink workflows. Sign in with RanklyBee OAuth.","description":"SEO research, AI visibility, content, leads, and backlink workflows. Sign in with RanklyBee OAuth.","publisher":{"name":"dazhiyu0235","url":null},"homepage":"https://ranklybee.com/mcp","repository":null,"version":"0.3.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://api.ranklybee.com/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-10-20T04:02:56.688687Z","publishedAt":"2026-10-20T04:02:56.688687Z","registryName":"io.github.dazhiyu0235/ranklybee"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"content.writing","name":"Writing & Editing","confidence":1,"provenance":"derived"},{"slug":"productivity.calendar","name":"Calendar & Scheduling","confidence":1,"provenance":"derived"},{"slug":"commerce.ecommerce","name":"E-commerce Operations","confidence":1,"provenance":"derived"},{"slug":"commerce.pricing","name":"Pricing & Quotes","confidence":0.992,"provenance":"derived"},{"slug":"content.seo","name":"SEO","confidence":0.88,"provenance":"derived"},{"slug":"productivity.crm","name":"CRM & Sales","confidence":0.859,"provenance":"derived"},{"slug":"data.web-search","name":"Web Search","confidence":0.583,"provenance":"derived"},{"slug":"dev.monitoring","name":"Monitoring & Observability","confidence":0.554,"provenance":"derived"}],"categories":["commerce","content","data","dev","productivity"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 3h ago.","lastOkAt":"2026-10-23T08:31:01.338Z","lastProbedAt":"2026-10-23T08:31:01.338Z","statusComputedAt":"2026-10-23T08:33:21.177Z","reliability30d":{"probes":2,"successRate":1,"p50Ms":3652,"basis":"service","measures":{"availability":"availability","latency":"response time","tools":"tool surface observed","summary":"Checks reached the service itself."},"checks":{"total":2,"ok":2,"authBoundaryOk":0,"serviceOk":2,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-23T08:31:01.338Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":5317,"error":null,"detail":{"tools":[{"name":"list_projects","description":"List the signed-in user's Projects with their role and websites. Start here to get a projectId."},{"name":"list_backlink_submission_projects","description":"List the signed-in user's Projects and their active Site details so the user can choose a target without knowing an internal Project ID."},{"name":"get_backlink_submission_profile","description":"Read the current active Site's backlink submission profile and readiness state."},{"name":"list_backlink_submission_sources","description":"List visible, available backlink sources that have a supported submission destination."},{"name":"preflight_backlink_submission","description":"Check paid access, profile confirmation, source policy, inventory, duplicate backlinks, and daily capacity before creating a submission job."},{"name":"create_backlink_submission","description":"After user review and approval, create one idempotent submission job in waiting_human state. This does not click the third-party site's final submit button."},{"name":"get_backlink_submission","description":"Read the current state and recorded outcome of a backlink submission job."},{"name":"record_backlink_submission_outcome","description":"Record the result after a user-approved browser interaction. Use needs_verification for CAPTCHA, MFA, email verification, rate limits, or ambiguous results."},{"name":"list_leads","description":"List scored leads for a Project, newest first. Filter by tier (hot, warm, explore), stage, platform, or text. Each lead has the evidence quote that shows the bu"},{"name":"get_lead","description":"Read one lead with its score, evidence quote, reason, stage, and link."},{"name":"list_lead_keywords","description":"List the monitoring keywords (search phrases and platforms) for a Project."},{"name":"move_lead_stage","description":"Move a lead to to_qualify, to_contact, in_conversation, or closed. This fires any stage-changed automations the user configured."},{"name":"list_sites","description":"List the websites in a Project. Most tools need a siteId from this list."},{"name":"get_site_profile","description":"Read what Ranklybee knows about a website: positioning, audience, products, competitors, and the latest analysis job."},{"name":"update_site_profile","description":"Replace the editable site profile. Read it with get_site_profile first and send every field back, changing only what the user asked for."},{"name":"analyze_site","description":"Crawl the website again and rebuild its profile. Runs in the background; poll get_site_profile for the result."},{"name":"get_plan_usage","description":"Read how much of each plan allowance the Project has used in the current period."},{"name":"get_content_plan","description":"Read the latest content plan for a website with its scheduled article briefs. Returns null when no plan exists."},{"name":"generate_content_plan","description":"Generate a new content plan from the site profile and keyword research. Uses the plan's content allowance."},{"name":"activate_content_plan","description":"Start a reviewed content plan so its briefs are written on their scheduled dates."},{"name":"decide_content_plan","description":"Approve or reject a whole content plan."},{"name":"decide_content_brief","description":"Approve or reject one article brief in a content plan."},{"name":"reschedule_content_brief","description":"Move an article brief to another date (YYYY-MM-DD) on the content calendar."},{"name":"update_content_brief_instructions","description":"Set the notes the writer follows for one article brief. Send an empty string to clear them."},{"name":"update_content_brief_keyword","description":"Change the target keyword of one article brief."},{"name":"search_article_keywords","description":"Look up keyword ideas for a seed phrase with volume, difficulty, and whether each is already in the plan. The ideas are saved to the website's keyword list."},{"name":"list_article_keywords","description":"List the keywords saved for a website's articles."},{"name":"add_article_keywords","description":"Add keywords to the content plan as article briefs, optionally on a given date. Returns the keywords that were skipped and why."},{"name":"import_article_keywords","description":"Save keywords to the website's keyword list without scheduling articles for them."},{"name":"remove_article_keywords","description":"Remove keywords from the website's saved keyword list."},{"name":"list_articles","description":"List a website's articles, newest first, with their state and publication. Each item is large, so pass a small limit such as 10 and page with offset."},{"name":"get_article","description":"Read one article with its full content, quality checks, and publication state."},{"name":"generate_article","description":"Write the article for an approved brief. Uses the plan's article allowance and takes a few minutes; poll get_article."},{"name":"update_article","description":"Replace an article's editable content. Read it with get_article first and send every content field back."},{"name":"regenerate_article_fields","description":"Rewrite the chosen fields of an article with AI."},{"name":"submit_article_for_review","description":"Send a draft article to the approval step."},{"name":"decide_article","description":"Approve or reject an article that is waiting for approval."},{"name":"list_cms_connections","description":"List the CMS connections an article can be published to."},{"name":"publish_article","description":"Publish an approved article to a connected CMS. The article goes live on the user's website, so confirm with the user first."},{"name":"verify_article_publication","description":"Record the live URL of an article the user published by hand, after checking the page."},{"name":"delete_article","description":"Delete an article from Ranklybee. This does not remove a page already published on the website."},{"name":"get_article_improvements","description":"Read the refresh opportunities found for published articles and the state of each improvement."},{"name":"detect_article_improvements","description":"Scan published articles against search data for new refresh opportunities."},{"name":"generate_article_improvement","description":"Write the improved version of an article for one opportunity."},{"name":"update_article_improvement","description":"Replace the drafted content of an improvement. Send every content field back."},{"name":"submit_article_improvement","description":"Send a drafted improvement to the approval step."},{"name":"decide_article_improvement","description":"Approve or reject an improvement that is waiting for approval."},{"name":"apply_article_improvement","description":"Apply an approved improvement to its article. Confirm with the user first."},{"name":"compare_article_improvement","description":"Compare search performance before and after an applied improvement and record the result."},{"name":"dismiss_article_improvement","description":"Dismiss an improvement opportunity with a reason."},{"name":"get_content_automation","description":"Read the automatic writing and publishing schedule for a website."},{"name":"update_content_automation","description":"Replace the automatic writing and publishing schedule. Read it with get_content_automation first; auto_publish_approved publishes without a human review."},{"name":"get_article_settings","description":"Read the writing preferences for a website: voice, structure, images, linking, and improvement rules."},{"name":"list_internal_link_targets","description":"List the pages articles are allowed to link to."},{"name":"add_internal_link_target","description":"Add a page of the website that articles should link to."},{"name":"remove_internal_link_target","description":"Stop articles from linking to a page."},{"name":"list_products","description":"List the products articles can feature."},{"name":"create_product","description":"Add a product to the catalog. Pass imageStorageKey as null."},{"name":"update_product","description":"Replace a product's fields. Send every field back."},{"name":"set_product_status","description":"Set whether articles may feature a product."},{"name":"delete_product","description":"Delete a product from the catalog."},{"name":"get_backlinks_overview","description":"Read totals for tracked backlinks, their health, and open replacement tasks."},{"name":"list_backlinks","description":"List the backlinks Ranklybee tracks for a website, with status and latest check."},{"name":"add_backlink","description":"Start tracking a backlink: the page that links (sourceUrl) and the page it links to (targetUrl)."},{"name":"check_backlink","description":"Fetch the linking page and record whether the backlink is still live."},{"name":"check_site_backlinks","description":"Queue a live check for every tracked backlink of a website."},{"name":"update_backlink_task","description":"Change the status or notes of a task opened for a lost backlink."},{"name":"close_backlink","description":"Close a tracked backlink with a reason."},{"name":"get_backlink_inventory_status","description":"Read whether the website's existing backlinks have been imported."},{"name":"start_backlink_inventory","description":"Import the website's existing backlinks so duplicates are detected."},{"name":"list_featured_backlinks","description":"Search Ranklybee's library of directories and other backlink sources, with quality, pricing, and link type."},{"name":"get_prospecting_summary","description":"Read prospect counts by status for a website."},{"name":"list_prospects","description":"List link prospects with scores, status, and contact. Filter by status, keyword, or Domain Rating."},{"name":"get_prospect_discovery_settings","description":"Read the Domain Rating range and page types used to find prospects."},{"name":"update_prospect_discovery_settings","description":"Replace the settings used to find prospects. Send every field."},{"name":"list_outreach_keywords","description":"List the keywords used to search for link prospects."},{"name":"add_outreach_keywords","description":"Add keywords to search for link prospects."},{"name":"remove_outreach_keyword","description":"Remove one prospecting keyword."},{"name":"list_linkable_assets","description":"List the pages the user pitches in outreach."},{"name":"save_linkable_asset","description":"Add or update a page worth pitching, with what makes it link-worthy."},{"name":"add_prospect","description":"Add a page as a link prospect and score it."},{"name":"start_prospect_discovery","description":"Search the web for link prospects. Runs in the background; poll get_prospect_discovery with the returned job. Uses the plan's prospecting allowance."},{"name":"start_competitor_backlink_discovery","description":"Find prospects among the sites that link to the given competitor domains. Runs in the background."},{"name":"get_prospect_discovery","description":"Read the progress and result counts of a discovery job."},{"name":"reject_prospect","description":"Reject one prospect, or block its whole domain from future discovery (a reason is required to block)."},{"name":"unblock_prospect_domain","description":"Allow a previously blocked domain to appear in discovery again."},{"name":"list_contacts","description":"List the people found for outreach, with email verification status."},{"name":"create_contact","description":"Add a contact by hand."},{"name":"verify_contact","description":"Check whether a contact's email address is deliverable."},{"name":"find_prospect_contact","description":"Look up who to email at a prospect's site. Uses the plan's contact allowance."},{"name":"select_prospect_contact","description":"Set which email address outreach to a prospect goes to."},{"name":"suppress_contact","description":"Add a contact to the do-not-email list with a reason."},{"name":"list_outreach_templates","description":"List the email templates available for outreach."},{"name":"create_outreach_template","description":"Create an email template."},{"name":"update_outreach_template","description":"Replace an email template's content."},{"name":"delete_outreach_template","description":"Delete an email template."},{"name":"get_outreach_draft_options","description":"List the sender identities and templates a new draft can use."},{"name":"list_outreach_threads","description":"List outreach threads in one bucket (ready, queued, sent, or replied) with their draft and latest message."},{"name":"create_outreach_draft","description":"Write a first email to a prospect's contact from a template and sender. Nothing is sent."},{"name":"prepare_outreach_draft","description":"Write a first email to a prospect's contact, letting Ranklybee pick the sender and template. Nothing is sent."}],"toolCount":194,"toolsHash":"96ad99f1bbb112aeee61b64ccabe62e7cdc7621ac9bfb8a2e57bf60e26f3d4b7","serverName":"ranklybee","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-23T02:23:07.468Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":1988,"error":null,"detail":{"tools":[{"name":"list_projects","description":"List the signed-in user's Projects with their role and websites. Start here to get a projectId."},{"name":"list_backlink_submission_projects","description":"List the signed-in user's Projects and their active Site details so the user can choose a target without knowing an internal Project ID."},{"name":"get_backlink_submission_profile","description":"Read the current active Site's backlink submission profile and readiness state."},{"name":"list_backlink_submission_sources","description":"List visible, available backlink sources that have a supported submission destination."},{"name":"preflight_backlink_submission","description":"Check paid access, profile confirmation, source policy, inventory, duplicate backlinks, and daily capacity before creating a submission job."},{"name":"create_backlink_submission","description":"After user review and approval, create one idempotent submission job in waiting_human state. This does not click the third-party site's final submit button."},{"name":"get_backlink_submission","description":"Read the current state and recorded outcome of a backlink submission job."},{"name":"record_backlink_submission_outcome","description":"Record the result after a user-approved browser interaction. Use needs_verification for CAPTCHA, MFA, email verification, rate limits, or ambiguous results."},{"name":"list_leads","description":"List scored leads for a Project, newest first. Filter by tier (hot, warm, explore), stage, platform, or text. Each lead has the evidence quote that shows the bu"},{"name":"get_lead","description":"Read one lead with its score, evidence quote, reason, stage, and link."},{"name":"list_lead_keywords","description":"List the monitoring keywords (search phrases and platforms) for a Project."},{"name":"move_lead_stage","description":"Move a lead to to_qualify, to_contact, in_conversation, or closed. This fires any stage-changed automations the user configured."},{"name":"list_sites","description":"List the websites in a Project. Most tools need a siteId from this list."},{"name":"get_site_profile","description":"Read what Ranklybee knows about a website: positioning, audience, products, competitors, and the latest analysis job."},{"name":"update_site_profile","description":"Replace the editable site profile. Read it with get_site_profile first and send every field back, changing only what the user asked for."},{"name":"analyze_site","description":"Crawl the website again and rebuild its profile. Runs in the background; poll get_site_profile for the result."},{"name":"get_plan_usage","description":"Read how much of each plan allowance the Project has used in the current period."},{"name":"get_content_plan","description":"Read the latest content plan for a website with its scheduled article briefs. Returns null when no plan exists."},{"name":"generate_content_plan","description":"Generate a new content plan from the site profile and keyword research. Uses the plan's content allowance."},{"name":"activate_content_plan","description":"Start a reviewed content plan so its briefs are written on their scheduled dates."},{"name":"decide_content_plan","description":"Approve or reject a whole content plan."},{"name":"decide_content_brief","description":"Approve or reject one article brief in a content plan."},{"name":"reschedule_content_brief","description":"Move an article brief to another date (YYYY-MM-DD) on the content calendar."},{"name":"update_content_brief_instructions","description":"Set the notes the writer follows for one article brief. Send an empty string to clear them."},{"name":"update_content_brief_keyword","description":"Change the target keyword of one article brief."},{"name":"search_article_keywords","description":"Look up keyword ideas for a seed phrase with volume, difficulty, and whether each is already in the plan. The ideas are saved to the website's keyword list."},{"name":"list_article_keywords","description":"List the keywords saved for a website's articles."},{"name":"add_article_keywords","description":"Add keywords to the content plan as article briefs, optionally on a given date. Returns the keywords that were skipped and why."},{"name":"import_article_keywords","description":"Save keywords to the website's keyword list without scheduling articles for them."},{"name":"remove_article_keywords","description":"Remove keywords from the website's saved keyword list."},{"name":"list_articles","description":"List a website's articles, newest first, with their state and publication. Each item is large, so pass a small limit such as 10 and page with offset."},{"name":"get_article","description":"Read one article with its full content, quality checks, and publication state."},{"name":"generate_article","description":"Write the article for an approved brief. Uses the plan's article allowance and takes a few minutes; poll get_article."},{"name":"update_article","description":"Replace an article's editable content. Read it with get_article first and send every content field back."},{"name":"regenerate_article_fields","description":"Rewrite the chosen fields of an article with AI."},{"name":"submit_article_for_review","description":"Send a draft article to the approval step."},{"name":"decide_article","description":"Approve or reject an article that is waiting for approval."},{"name":"list_cms_connections","description":"List the CMS connections an article can be published to."},{"name":"publish_article","description":"Publish an approved article to a connected CMS. The article goes live on the user's website, so confirm with the user first."},{"name":"verify_article_publication","description":"Record the live URL of an article the user published by hand, after checking the page."},{"name":"delete_article","description":"Delete an article from Ranklybee. This does not remove a page already published on the website."},{"name":"get_article_improvements","description":"Read the refresh opportunities found for published articles and the state of each improvement."},{"name":"detect_article_improvements","description":"Scan published articles against search data for new refresh opportunities."},{"name":"generate_article_improvement","description":"Write the improved version of an article for one opportunity."},{"name":"update_article_improvement","description":"Replace the drafted content of an improvement. Send every content field back."},{"name":"submit_article_improvement","description":"Send a drafted improvement to the approval step."},{"name":"decide_article_improvement","description":"Approve or reject an improvement that is waiting for approval."},{"name":"apply_article_improvement","description":"Apply an approved improvement to its article. Confirm with the user first."},{"name":"compare_article_improvement","description":"Compare search performance before and after an applied improvement and record the result."},{"name":"dismiss_article_improvement","description":"Dismiss an improvement opportunity with a reason."},{"name":"get_content_automation","description":"Read the automatic writing and publishing schedule for a website."},{"name":"update_content_automation","description":"Replace the automatic writing and publishing schedule. Read it with get_content_automation first; auto_publish_approved publishes without a human review."},{"name":"get_article_settings","description":"Read the writing preferences for a website: voice, structure, images, linking, and improvement rules."},{"name":"list_internal_link_targets","description":"List the pages articles are allowed to link to."},{"name":"add_internal_link_target","description":"Add a page of the website that articles should link to."},{"name":"remove_internal_link_target","description":"Stop articles from linking to a page."},{"name":"list_products","description":"List the products articles can feature."},{"name":"create_product","description":"Add a product to the catalog. Pass imageStorageKey as null."},{"name":"update_product","description":"Replace a product's fields. Send every field back."},{"name":"set_product_status","description":"Set whether articles may feature a product."},{"name":"delete_product","description":"Delete a product from the catalog."},{"name":"get_backlinks_overview","description":"Read totals for tracked backlinks, their health, and open replacement tasks."},{"name":"list_backlinks","description":"List the backlinks Ranklybee tracks for a website, with status and latest check."},{"name":"add_backlink","description":"Start tracking a backlink: the page that links (sourceUrl) and the page it links to (targetUrl)."},{"name":"check_backlink","description":"Fetch the linking page and record whether the backlink is still live."},{"name":"check_site_backlinks","description":"Queue a live check for every tracked backlink of a website."},{"name":"update_backlink_task","description":"Change the status or notes of a task opened for a lost backlink."},{"name":"close_backlink","description":"Close a tracked backlink with a reason."},{"name":"get_backlink_inventory_status","description":"Read whether the website's existing backlinks have been imported."},{"name":"start_backlink_inventory","description":"Import the website's existing backlinks so duplicates are detected."},{"name":"list_featured_backlinks","description":"Search Ranklybee's library of directories and other backlink sources, with quality, pricing, and link type."},{"name":"get_prospecting_summary","description":"Read prospect counts by status for a website."},{"name":"list_prospects","description":"List link prospects with scores, status, and contact. Filter by status, keyword, or Domain Rating."},{"name":"get_prospect_discovery_settings","description":"Read the Domain Rating range and page types used to find prospects."},{"name":"update_prospect_discovery_settings","description":"Replace the settings used to find prospects. Send every field."},{"name":"list_outreach_keywords","description":"List the keywords used to search for link prospects."},{"name":"add_outreach_keywords","description":"Add keywords to search for link prospects."},{"name":"remove_outreach_keyword","description":"Remove one prospecting keyword."},{"name":"list_linkable_assets","description":"List the pages the user pitches in outreach."},{"name":"save_linkable_asset","description":"Add or update a page worth pitching, with what makes it link-worthy."},{"name":"add_prospect","description":"Add a page as a link prospect and score it."},{"name":"start_prospect_discovery","description":"Search the web for link prospects. Runs in the background; poll get_prospect_discovery with the returned job. Uses the plan's prospecting allowance."},{"name":"start_competitor_backlink_discovery","description":"Find prospects among the sites that link to the given competitor domains. Runs in the background."},{"name":"get_prospect_discovery","description":"Read the progress and result counts of a discovery job."},{"name":"reject_prospect","description":"Reject one prospect, or block its whole domain from future discovery (a reason is required to block)."},{"name":"unblock_prospect_domain","description":"Allow a previously blocked domain to appear in discovery again."},{"name":"list_contacts","description":"List the people found for outreach, with email verification status."},{"name":"create_contact","description":"Add a contact by hand."},{"name":"verify_contact","description":"Check whether a contact's email address is deliverable."},{"name":"find_prospect_contact","description":"Look up who to email at a prospect's site. Uses the plan's contact allowance."},{"name":"select_prospect_contact","description":"Set which email address outreach to a prospect goes to."},{"name":"suppress_contact","description":"Add a contact to the do-not-email list with a reason."},{"name":"list_outreach_templates","description":"List the email templates available for outreach."},{"name":"create_outreach_template","description":"Create an email template."},{"name":"update_outreach_template","description":"Replace an email template's content."},{"name":"delete_outreach_template","description":"Delete an email template."},{"name":"get_outreach_draft_options","description":"List the sender identities and templates a new draft can use."},{"name":"list_outreach_threads","description":"List outreach threads in one bucket (ready, queued, sent, or replied) with their draft and latest message."},{"name":"create_outreach_draft","description":"Write a first email to a prospect's contact from a template and sender. Nothing is sent."},{"name":"prepare_outreach_draft","description":"Write a first email to a prospect's contact, letting Ranklybee pick the sender and template. Nothing is sent."}],"toolCount":194,"toolsHash":"96ad99f1bbb112aeee61b64ccabe62e7cdc7621ac9bfb8a2e57bf60e26f3d4b7","serverName":"ranklybee","capabilities":["tools"],"serverVersion":"0.3.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"list_projects","description":"List the signed-in user's Projects with their role and websites. Start here to get a projectId."},{"name":"list_backlink_submission_projects","description":"List the signed-in user's Projects and their active Site details so the user can choose a target without knowing an internal Project ID."},{"name":"get_backlink_submission_profile","description":"Read the current active Site's backlink submission profile and readiness state."},{"name":"list_backlink_submission_sources","description":"List visible, available backlink sources that have a supported submission destination."},{"name":"preflight_backlink_submission","description":"Check paid access, profile confirmation, source policy, inventory, duplicate backlinks, and daily capacity before creating a submission job."},{"name":"create_backlink_submission","description":"After user review and approval, create one idempotent submission job in waiting_human state. This does not click the third-party site's final submit button."},{"name":"get_backlink_submission","description":"Read the current state and recorded outcome of a backlink submission job."},{"name":"record_backlink_submission_outcome","description":"Record the result after a user-approved browser interaction. Use needs_verification for CAPTCHA, MFA, email verification, rate limits, or ambiguous results."},{"name":"list_leads","description":"List scored leads for a Project, newest first. Filter by tier (hot, warm, explore), stage, platform, or text. Each lead has the evidence quote that shows the bu"},{"name":"get_lead","description":"Read one lead with its score, evidence quote, reason, stage, and link."},{"name":"list_lead_keywords","description":"List the monitoring keywords (search phrases and platforms) for a Project."},{"name":"move_lead_stage","description":"Move a lead to to_qualify, to_contact, in_conversation, or closed. This fires any stage-changed automations the user configured."},{"name":"list_sites","description":"List the websites in a Project. Most tools need a siteId from this list."},{"name":"get_site_profile","description":"Read what Ranklybee knows about a website: positioning, audience, products, competitors, and the latest analysis job."},{"name":"update_site_profile","description":"Replace the editable site profile. Read it with get_site_profile first and send every field back, changing only what the user asked for."},{"name":"analyze_site","description":"Crawl the website again and rebuild its profile. Runs in the background; poll get_site_profile for the result."},{"name":"get_plan_usage","description":"Read how much of each plan allowance the Project has used in the current period."},{"name":"get_content_plan","description":"Read the latest content plan for a website with its scheduled article briefs. Returns null when no plan exists."},{"name":"generate_content_plan","description":"Generate a new content plan from the site profile and keyword research. Uses the plan's content allowance."},{"name":"activate_content_plan","description":"Start a reviewed content plan so its briefs are written on their scheduled dates."},{"name":"decide_content_plan","description":"Approve or reject a whole content plan."},{"name":"decide_content_brief","description":"Approve or reject one article brief in a content plan."},{"name":"reschedule_content_brief","description":"Move an article brief to another date (YYYY-MM-DD) on the content calendar."},{"name":"update_content_brief_instructions","description":"Set the notes the writer follows for one article brief. Send an empty string to clear them."},{"name":"update_content_brief_keyword","description":"Change the target keyword of one article brief."},{"name":"search_article_keywords","description":"Look up keyword ideas for a seed phrase with volume, difficulty, and whether each is already in the plan. The ideas are saved to the website's keyword list."},{"name":"list_article_keywords","description":"List the keywords saved for a website's articles."},{"name":"add_article_keywords","description":"Add keywords to the content plan as article briefs, optionally on a given date. Returns the keywords that were skipped and why."},{"name":"import_article_keywords","description":"Save keywords to the website's keyword list without scheduling articles for them."},{"name":"remove_article_keywords","description":"Remove keywords from the website's saved keyword list."},{"name":"list_articles","description":"List a website's articles, newest first, with their state and publication. Each item is large, so pass a small limit such as 10 and page with offset."},{"name":"get_article","description":"Read one article with its full content, quality checks, and publication state."},{"name":"generate_article","description":"Write the article for an approved brief. Uses the plan's article allowance and takes a few minutes; poll get_article."},{"name":"update_article","description":"Replace an article's editable content. Read it with get_article first and send every content field back."},{"name":"regenerate_article_fields","description":"Rewrite the chosen fields of an article with AI."},{"name":"submit_article_for_review","description":"Send a draft article to the approval step."},{"name":"decide_article","description":"Approve or reject an article that is waiting for approval."},{"name":"list_cms_connections","description":"List the CMS connections an article can be published to."},{"name":"publish_article","description":"Publish an approved article to a connected CMS. The article goes live on the user's website, so confirm with the user first."},{"name":"verify_article_publication","description":"Record the live URL of an article the user published by hand, after checking the page."},{"name":"delete_article","description":"Delete an article from Ranklybee. This does not remove a page already published on the website."},{"name":"get_article_improvements","description":"Read the refresh opportunities found for published articles and the state of each improvement."},{"name":"detect_article_improvements","description":"Scan published articles against search data for new refresh opportunities."},{"name":"generate_article_improvement","description":"Write the improved version of an article for one opportunity."},{"name":"update_article_improvement","description":"Replace the drafted content of an improvement. Send every content field back."},{"name":"submit_article_improvement","description":"Send a drafted improvement to the approval step."},{"name":"decide_article_improvement","description":"Approve or reject an improvement that is waiting for approval."},{"name":"apply_article_improvement","description":"Apply an approved improvement to its article. Confirm with the user first."},{"name":"compare_article_improvement","description":"Compare search performance before and after an applied improvement and record the result."},{"name":"dismiss_article_improvement","description":"Dismiss an improvement opportunity with a reason."},{"name":"get_content_automation","description":"Read the automatic writing and publishing schedule for a website."},{"name":"update_content_automation","description":"Replace the automatic writing and publishing schedule. Read it with get_content_automation first; auto_publish_approved publishes without a human review."},{"name":"get_article_settings","description":"Read the writing preferences for a website: voice, structure, images, linking, and improvement rules."},{"name":"list_internal_link_targets","description":"List the pages articles are allowed to link to."},{"name":"add_internal_link_target","description":"Add a page of the website that articles should link to."},{"name":"remove_internal_link_target","description":"Stop articles from linking to a page."},{"name":"list_products","description":"List the products articles can feature."},{"name":"create_product","description":"Add a product to the catalog. Pass imageStorageKey as null."},{"name":"update_product","description":"Replace a product's fields. Send every field back."},{"name":"set_product_status","description":"Set whether articles may feature a product."},{"name":"delete_product","description":"Delete a product from the catalog."},{"name":"get_backlinks_overview","description":"Read totals for tracked backlinks, their health, and open replacement tasks."},{"name":"list_backlinks","description":"List the backlinks Ranklybee tracks for a website, with status and latest check."},{"name":"add_backlink","description":"Start tracking a backlink: the page that links (sourceUrl) and the page it links to (targetUrl)."},{"name":"check_backlink","description":"Fetch the linking page and record whether the backlink is still live."},{"name":"check_site_backlinks","description":"Queue a live check for every tracked backlink of a website."},{"name":"update_backlink_task","description":"Change the status or notes of a task opened for a lost backlink."},{"name":"close_backlink","description":"Close a tracked backlink with a reason."},{"name":"get_backlink_inventory_status","description":"Read whether the website's existing backlinks have been imported."},{"name":"start_backlink_inventory","description":"Import the website's existing backlinks so duplicates are detected."},{"name":"list_featured_backlinks","description":"Search Ranklybee's library of directories and other backlink sources, with quality, pricing, and link type."},{"name":"get_prospecting_summary","description":"Read prospect counts by status for a website."},{"name":"list_prospects","description":"List link prospects with scores, status, and contact. Filter by status, keyword, or Domain Rating."},{"name":"get_prospect_discovery_settings","description":"Read the Domain Rating range and page types used to find prospects."},{"name":"update_prospect_discovery_settings","description":"Replace the settings used to find prospects. Send every field."},{"name":"list_outreach_keywords","description":"List the keywords used to search for link prospects."},{"name":"add_outreach_keywords","description":"Add keywords to search for link prospects."},{"name":"remove_outreach_keyword","description":"Remove one prospecting keyword."},{"name":"list_linkable_assets","description":"List the pages the user pitches in outreach."},{"name":"save_linkable_asset","description":"Add or update a page worth pitching, with what makes it link-worthy."},{"name":"add_prospect","description":"Add a page as a link prospect and score it."},{"name":"start_prospect_discovery","description":"Search the web for link prospects. Runs in the background; poll get_prospect_discovery with the returned job. Uses the plan's prospecting allowance."},{"name":"start_competitor_backlink_discovery","description":"Find prospects among the sites that link to the given competitor domains. Runs in the background."},{"name":"get_prospect_discovery","description":"Read the progress and result counts of a discovery job."},{"name":"reject_prospect","description":"Reject one prospect, or block its whole domain from future discovery (a reason is required to block)."},{"name":"unblock_prospect_domain","description":"Allow a previously blocked domain to appear in discovery again."},{"name":"list_contacts","description":"List the people found for outreach, with email verification status."},{"name":"create_contact","description":"Add a contact by hand."},{"name":"verify_contact","description":"Check whether a contact's email address is deliverable."},{"name":"find_prospect_contact","description":"Look up who to email at a prospect's site. Uses the plan's contact allowance."},{"name":"select_prospect_contact","description":"Set which email address outreach to a prospect goes to."},{"name":"suppress_contact","description":"Add a contact to the do-not-email list with a reason."},{"name":"list_outreach_templates","description":"List the email templates available for outreach."},{"name":"create_outreach_template","description":"Create an email template."},{"name":"update_outreach_template","description":"Replace an email template's content."},{"name":"delete_outreach_template","description":"Delete an email template."},{"name":"get_outreach_draft_options","description":"List the sender identities and templates a new draft can use."},{"name":"list_outreach_threads","description":"List outreach threads in one bucket (ready, queued, sent, or replied) with their draft and latest message."},{"name":"create_outreach_draft","description":"Write a first email to a prospect's contact from a template and sender. Nothing is sent."},{"name":"prepare_outreach_draft","description":"Write a first email to a prospect's contact, letting Ranklybee pick the sender and template. Nothing is sent."}],"package":null,"toolSurface":{"id":"ts_sehqcx92aj2z","endpointId":"ep_c3b3rgv2vk6m","hash":"96ad99f1bbb112aeee61b64ccabe62e7cdc7621ac9bfb8a2e57bf60e26f3d4b7","toolCount":194,"serverName":"ranklybee","serverVersion":"0.3.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-10-23T02:23:07.474Z","lastSeenAt":"2026-10-23T08:31:01.354Z","observations":2,"toolNames":["list_projects","list_backlink_submission_projects","get_backlink_submission_profile","list_backlink_submission_sources","preflight_backlink_submission","create_backlink_submission","get_backlink_submission","record_backlink_submission_outcome","list_leads","get_lead","list_lead_keywords","move_lead_stage","list_sites","get_site_profile","update_site_profile","analyze_site","get_plan_usage","get_content_plan","generate_content_plan","activate_content_plan","decide_content_plan","decide_content_brief","reschedule_content_brief","update_content_brief_instructions","update_content_brief_keyword","search_article_keywords","list_article_keywords","add_article_keywords","import_article_keywords","remove_article_keywords","list_articles","get_article","generate_article","update_article","regenerate_article_fields","submit_article_for_review","decide_article","list_cms_connections","publish_article","verify_article_publication","delete_article","get_article_improvements","detect_article_improvements","generate_article_improvement","update_article_improvement","submit_article_improvement","decide_article_improvement","apply_article_improvement","compare_article_improvement","dismiss_article_improvement","get_content_automation","update_content_automation","get_article_settings","list_internal_link_targets","add_internal_link_target","remove_internal_link_target","list_products","create_product","update_product","set_product_status","delete_product","get_backlinks_overview","list_backlinks","add_backlink","check_backlink","check_site_backlinks","update_backlink_task","close_backlink","get_backlink_inventory_status","start_backlink_inventory","list_featured_backlinks","get_prospecting_summary","list_prospects","get_prospect_discovery_settings","update_prospect_discovery_settings","list_outreach_keywords","add_outreach_keywords","remove_outreach_keyword","list_linkable_assets","save_linkable_asset","add_prospect","start_prospect_discovery","start_competitor_backlink_discovery","get_prospect_discovery","reject_prospect","unblock_prospect_domain","list_contacts","create_contact","verify_contact","find_prospect_contact","select_prospect_contact","suppress_contact","list_outreach_templates","create_outreach_template","update_outreach_template","delete_outreach_template","get_outreach_draft_options","list_outreach_threads","create_outreach_draft","prepare_outreach_draft","update_outreach_draft","regenerate_outreach_draft","mark_outreach_won","mark_outreach_lost","reopen_outreach_thread","get_outreach_sending_dashboard","update_outreach_send_policy","schedule_outreach","schedule_outreach_batch","send_outreach_follow_up","review_outreach_reply","stop_outreach_sequence","get_outreach_automation_overview","get_outreach_automation_policy","list_outreach_automation_runs","list_outreach_automation_exceptions","set_outreach_automation_status","update_outreach_automation_exception","get_leads_overview","get_brand_mentions_overview","list_mentions","run_lead_scan","set_lead_feedback","set_lead_favorite","dismiss_lead","restore_lead","generate_lead_reply","update_lead_reply","create_lead_keyword","update_lead_keyword","set_lead_keyword_status","delete_lead_keyword","create_lead_icp","update_lead_icp","delete_lead_icp","update_lead_sources","update_lead_monitor","list_lead_alert_rules","create_lead_alert_rule","set_lead_alert_rule_status","delete_lead_alert_rule","get_ai_visibility_overview","list_ai_visibility_prompts","list_ai_visibility_prompt_runs","get_ai_visibility_competitors","get_ai_visibility_competitor","get_ai_visibility_citations","get_ai_visibility_domain_pages","get_ai_sentiment_overview","get_ai_sentiment_driver","get_ai_sentiment_benchmark","get_ai_response","suggest_ai_visibility_prompts","create_ai_visibility_prompt","bulk_create_ai_visibility_prompts","update_ai_visibility_prompt","set_ai_visibility_prompt_status","run_ai_visibility_prompt","delete_ai_visibility_prompt","exclude_ai_visibility_brand","restore_ai_visibility_brand","add_ai_visibility_competitor","create_ai_visibility_topic","rename_ai_visibility_topic","delete_ai_visibility_topic","move_ai_visibility_prompts","set_ai_sentiment_task","get_search_performance","sync_search_console","get_seo_health","list_ctr_opportunities","review_page_snippet","list_seo_changes","log_seo_change","list_seo_diagnoses","get_seo_diagnosis","start_seo_diagnosis","get_distribution_status","list_distribution_pages","get_distribution_page_atoms","atomize_distribution_page","list_distribution_campaigns","get_distribution_campaign","create_distribution_campaign","update_distribution_campaign","activate_distribution_campaign","pause_distribution_campaign","resume_distribution_campaign","cancel_distribution_campaign","list_distribution_posts","approve_distribution_posts","edit_distribution_post","reject_distribution_posts","regenerate_distribution_post"],"distinctSurfaces":1},"endpointFacts":[{"id":"ep_c3b3rgv2vk6m","url":"https://api.ranklybee.com/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-23T02:23:07.497Z","auth":{"observedAt":"2026-10-23T02:23:07.548Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://api.ranklybee.com/.well-known/oauth-protected-resource/mcp","resource":"https://api.ranklybee.com/mcp","authorizationServers":["https://api.ranklybee.com"],"scopesSupported":["backlink-submissions:read","backlink-submissions:submit","leads:read","leads:write","site:read","site:write","articles:read","articles:write","backlinks:read","backlinks:write","outreach:read","outreach:write","ai-visibility:read","ai-visibility:write","search:read","search:write","distribution:read","distribution:write"]},"authorizationServer":{"url":"https://api.ranklybee.com/.well-known/oauth-authorization-server","issuer":"https://api.ranklybee.com","grantTypesSupported":["authorization_code","refresh_token"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":false},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-23T02:23:07.561Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"ranklybee.com","issuer":{"commonName":"WE1","organization":"Google Trust Services"},"validFrom":"2026-08-28T02:14:34.000Z","validTo":"2026-11-26T03:14:31.000Z","daysToExpiry":33,"sanCount":3,"fingerprint256":"09:53:0D:78:2B:A0:F5:97:43:4A:03:5A:89:3A:86:C5:B2:B3:40:85:6A:62:47:81:F0:80:F9:13:9C:4C:CD:AA"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"io.github.dazhiyu0235/ranklybee","url":"https://registry.modelcontextprotocol.io/v0/servers/io.github.dazhiyu0235%2Franklybee","firstSeenAt":"2026-10-23T01:23:12.846Z","fetchedAt":"2026-10-23T01:23:12.846Z","normalizedAt":"2026-10-23T01:23:12.846Z"}]},"firstSeenAt":"2026-10-23T01:23:12.846Z","updatedAt":"2026-10-23T08:35:34.217Z"}