semalt_get_report_catalog Discover PDF report types, parameters, comparison modes, columns, and quotas.
Connect an MCP-compatible AI client to read and manage the Semalt accounts available to this API key.
https://semalt.com/mcpDeveloper access
Create a free Semalt account to access the Public API and connect AI tools through MCP.
Configure a remote Streamable HTTP MCP server with a URL that contains your Semalt API key as the token query parameter. This works for MCP clients that accept only a server URL.
{
"mcpServers": {
"semalt": {
"url": "https://semalt.com/mcp?token=YOUR_API_KEY"
}
}
} The connection key identifies the token owner. Call semalt_get_me to identify that owner’s account_id, then semalt_list_accounts to discover accounts available for selection by name and email. Keep the same connection and pass the chosen account_id to each account tool.
For example, a key owned by account 10 can list indexing URLs for another available account 20 using these tool-call arguments:
{
"name": "semalt_list_indexing_urls",
"arguments": {
"account_id": 20,
"page": 1,
"page_size": 50
}
} Every account tool requires account_id. The server does not remember a selected account between calls. semalt_get_account reads a selected account’s details; semalt_get_me always identifies the key owner. linked_account_ids describes the returned account’s linked group and includes the account itself; it is not the list of all accounts available to the API key. Use semalt_list_accounts to determine which account IDs are selectable. Responses return IDs as strings; supply account, site and campaign IDs as integers in tool arguments.
Account results include meta.actor_account_id for the key owner and meta.account_id for the selected account. The two global ranking tools do not take an account_id.
access_type=own to show only its own sites. Added websites belong to the selected account.semalt_list_my_seo_campaigns to obtain campaign_id. Use that ID together with the same selected account_id for keywords and backlinks. Campaigns for the same domain in different accounts remain separate. A launched FullSEO campaign can switch between auto and manual keyword mode. Auto mode permits rejecting keywords and restoring rejected keywords to pending; manual mode also permits approving and rejecting keywords, changing approved-keyword backlink weights, and applying a one-shot percentage allocation.semalt_add_indexing_urls spends that account’s balance; linked-account balances are not pooled.Check the intended account before submitting indexing URLs. If a submission response is lost, check that same account’s URL list before retrying; indexing submissions do not support an idempotency key.
semalt_get_me for the token owner or semalt_list_accounts for account contexts available for selection, then explicitly pass the intended account_id to each account tool.semalt_get_me or semalt_list_accounts when selecting an account. Treat linked_account_ids as relationship metadata, not as the account-selection list.semalt_list_*_sites tool in that account context to discover accessible site records.id as site_id in site detail tools. Its owner_account.account_id identifies the owner; it does not automatically select that account. Use campaign_id from semalt_list_my_seo_campaigns for campaign tools.next_cursor while has_more is true.model=gpt-4.1-nano or model=gpt-5-nano.Call semalt_get_report_catalog(account_id) first. Each item contains a ready-to-fill definition_template and a scope.id_field that names the exact ID field. Copy the template into semalt_generate_report and replace its null scope ID with a value from the matching site or campaign tool.
For custom PDF branding, call semalt_list_report_white_labels(account_id), take the returned white_label_id, and add it inside the report definition. The white-label tool lists active labels with uploaded logos. Omit white_label_id to use Semalt branding.
semalt_list_report_white_labels({ "account_id": 20, "search": "Acme" })
{
"data": [
{
"white_label_id": "42",
"name": "Acme Reports",
"company_name": "Acme Ltd"
}
],
"meta": { "limit": 50, "has_more": false }
} semalt_get_report_catalog({ "account_id": 20 })
semalt_generate_report({
"account_id": 20,
"idempotency_key": "keywords-456-latest",
"definition": {
"kind": "table",
"key": "my_seo.keywords",
"scope": { "campaign_id": 456 },
"period": { "type": "latest_snapshot" },
"filters": { "status": "approved" },
"white_label_id": "42"
},
"disposition": "attachment"
}) The template already contains kind, key, scope, period, and filters. Add only optional fields listed by that catalog item; white_label_id is the optional global field for custom PDF branding. For Search Console reports and supported tables, comparison: { type: "previous_period" } puts the preceding equal-length period into the same PDF.
semalt_generate_report({
"account_id": 20,
"idempotency_key": "gsc-123-2026-08-compare",
"definition": {
"kind": "report",
"key": "search_console.site_overview",
"scope": { "site_id": 123 },
"period": { "type": "fixed", "date_from": "2026-08-01", "date_to": "2026-08-31" },
"comparison": { "type": "previous_period" }
}
}) Anyone holding a report link can open the PDF for up to 90 days, unless the links are revoked. Use inline to open it or attachment to download it. A report generation does not send email.
If a tool response is lost, reuse the same idempotency_key and definition. A processing result can be checked with semalt_get_report_run. A failed generation requires a new key for another attempt. Existing files and new links retain their original expiry.
semalt_get_report_catalog Discover PDF report types, parameters, comparison modes, columns, and quotas.
semalt_list_report_white_labels Find active white labels with uploaded logos. Pass the returned white_label_id inside semalt_generate_report definition for custom PDF branding.
semalt_generate_report Generate a PDF synchronously and return public links valid for 90 days. Add white_label_id from semalt_list_report_white_labels inside definition for custom branding. Search Console reports and supported tables accept comparison.type=previous_period. Reuse the idempotency key after a lost response.
semalt_list_report_runs List report generation history.
semalt_get_report_run Get a report generation status and metadata.
semalt_create_report_links Issue public view and download links for a ready PDF.
semalt_revoke_report_links Revoke all existing public links for a report run.
semalt_get_me Get the API key owner’s account_id and that account’s linked_account_ids.
semalt_list_accounts List accounts available for selection with this API key.
semalt_get_account Get the selected account and its linked_account_ids.
semalt_list_sites List every accessible site record.
semalt_get_site Get one accessible site by site_id.
semalt_list_search_console_sites List Search Console properties with summary metrics.
semalt_get_search_console_overview Get Search Console summary cards and charts.
semalt_get_search_console_traffic Get a daily Search Console metric series.
semalt_list_search_console_data List Search Console queries, pages, devices, or countries.
semalt_list_google_serp_sites List sites with Google SERP metrics.
semalt_get_google_serp_overview Get Google SERP overview metrics.
semalt_get_google_serp_data Get Google SERP keywords, pages, or competitors.
semalt_list_google_serp_rankings List global Google SERP rankings.
semalt_list_ai_analytics_sites List sites with AI visibility metrics.
semalt_get_ai_analytics_overview Get AI visibility overview metrics.
semalt_get_ai_analytics_data Get AI Analytics queries, pages, or competitors.
semalt_list_ai_analytics_rankings List global AI visibility rankings.
semalt_list_my_seo_campaigns List the selected account’s campaigns and their campaign_id values.
semalt_list_my_seo_keywords List My SEO campaign keywords.
semalt_set_my_seo_keyword_mode Set a launched FullSEO campaign keyword mode to auto or manual.
semalt_update_my_seo_keyword_statuses Approve, reject, or restore selected campaign keywords according to campaign mode.
semalt_update_my_seo_keyword_backlink_weights Set backlink weights for approved campaign keywords in manual mode.
semalt_apply_my_seo_backlink_allocation Apply a one-shot percentage allocation across approved campaign keywords.
semalt_list_my_seo_backlinks List My SEO campaign backlinks.
semalt_list_indexing_urls List indexing URLs and statuses.
semalt_add_site Add a website to the selected account.
semalt_add_my_seo_keywords Add manual keyword and target URL pairs to a selected account campaign.
semalt_add_indexing_urls Submit URLs using the selected account’s indexing balance.
semalt_list_site_tags List site tags shared by the selected linked group.
semalt_create_site_tag Create a site tag shared by the selected linked group.
semalt_update_site_tag Rename or recolor a site tag.
semalt_delete_site_tag Delete a site tag after confirmation.
semalt_list_site_tag_sites List domains assigned to a site tag.
semalt_add_sites_to_tag Assign a site tag to accessible domains.
semalt_remove_sites_from_tag Remove a tag from domains after confirmation.
semalt_list_keyword_groups List reusable keyword groups for a site.
semalt_create_keyword_group Create a reusable keyword group.
semalt_update_keyword_group Rename an editable keyword group.
semalt_delete_keyword_group Delete a keyword group after confirmation.
semalt_list_keyword_group_keywords List keywords in a reusable group.
semalt_add_keyword_group_keywords Add keywords to an editable group.
semalt_remove_keyword_group_keywords Remove keyword rows after confirmation.
The MCP server uses the API key from your Semalt account. Each account tool checks access to the selected account and then to the requested resource. A shared website alone does not grant access to its owner’s account context. Hidden and removed records are excluded.
A campaign_id must belong to the selected account_id. Access to the selected account and requested resource is checked on every call; the selected account’s normal linked-group scope applies to site, tag and keyword-group operations. Product limits and campaign requirements continue to apply. Percentage allocation uses the same one-shot behavior as the dashboard: supplied approved-keyword percentages are fixed for that request, and omitted approved keywords share the remainder equally. It does not create a persistent fixed-percentage setting; call semalt_list_my_seo_keywords afterwards to inspect the resulting weights and shares.