Create and edit Appy smart links for apps, and read their click and install stats.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Bearer appy_sk_... secret key from a Business or Enterprise account. Listing tools works without it; calling them needs it.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a smart link. Only fallbackUrl is required; add targets for app stores, countryRules for per-country Android stores, a deeplinkUrl to open the installed app, a socialPreview for how the link looks when shared, and a slug for a readable URL. Returns the new link with its public url.
http(s) page for desktop visitors and anyone without a matching target
custom slug of 5 to 64 lowercase letters, digits or hyphens; omit for a random one
name shown in the dashboard, up to 200 characters
store or app page URL per platform; allowed keys: iphone, ipad, android, huawei, samsung (Galaxy Store), xiaomi (GetApps), rustore (RuStore, used for Android visitors in Russia)
in-app URL that opens the installed app, for example acme://product/42
up to 50 rules, one per country, that send Android visitors from that country to their own URL; huawei, samsung and xiaomi targets still win, and a rule for RU wins over the rustore target
title, description and image that WhatsApp, iMessage, Slack, X, LinkedIn and other apps show when the link is shared; leave it out to show the destination's own preview
pass the query string of each click on to the destination (Business and Enterprise)
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Create a smart link. Only fallbackUrl is required; add targets for app stores, countryRules for per-country Android stores, a deeplinkUrl to open the installed app, a socialPreview for how the link looks when shared, and a slug for a readable URL. Returns the new link with its public url.
| Argument | Type | Description |
|---|---|---|
| slug | string | custom slug of 5 to 64 lowercase letters, digits or hyphens; omit for a random one |
| title | string | name shown in the dashboard, up to 200 characters |
| targets | object | store or app page URL per platform; allowed keys: iphone, ipad, android, huawei, samsung (Galaxy Store), xiaomi (GetApps), rustore (RuStore, used for Android visitors in Russia) |
| deeplinkUrl | string | in-app URL that opens the installed app, for example acme://product/42 |
| fallbackUrl* | string | http(s) page for desktop visitors and anyone without a matching target |
| countryRules | array | up to 50 rules, one per country, that send Android visitors from that country to their own URL; huawei, samsung and xiaomi targets still win, and a rule for RU wins over the rustore target |
| socialPreview | object | title, description and image that WhatsApp, iMessage, Slack, X, LinkedIn and other apps show when the link is shared; leave it out to show the destination's own preview |
| parameterForwarding | boolean | pass the query string of each click on to the destination (Business and Enterprise) |
{
"type": "object",
"required": [
"fallbackUrl"
],
"properties": {
"slug": {
"type": "string",
"description": "custom slug of 5 to 64 lowercase letters, digits or hyphens; omit for a random one"
},
"title": {
"type": "string",
"description": "name shown in the dashboard, up to 200 characters"
},
"targets": {
"type": "object",
"description": "store or app page URL per platform; allowed keys: iphone, ipad, android, huawei, samsung (Galaxy Store), xiaomi (GetApps), rustore (RuStore, used for Android visitors in Russia)",
"additionalProperties": {
"type": "string"
}
},
"deeplinkUrl": {
"type": "string",
"description": "in-app URL that opens the installed app, for example acme://product/42"
},
"fallbackUrl": {
"type": "string",
"description": "http(s) page for desktop visitors and anyone without a matching target"
},
"countryRules": {
"type": "array",
"items": {
"type": "object",
"required": [
"country",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "http(s) store or page URL for Android visitors from that country"
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code of the visitor, for example RU; use GB for the United Kingdom"
}
},
"additionalProperties": false
},
"description": "up to 50 rules, one per country, that send Android visitors from that country to their own URL; huawei, samsung and xiaomi targets still win, and a rule for RU wins over the rustore target"
},
"socialPreview": {
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"description": "headline of the preview card, up to 120 characters"
},
"imageUrl": {
"type": "string",
"description": "https URL of the preview image, ideally 1200 x 630 pixels"
},
"description": {
"type": "string",
"description": "line under the headline, up to 300 characters"
}
},
"description": "title, description and image that WhatsApp, iMessage, Slack, X, LinkedIn and other apps show when the link is shared; leave it out to show the destination's own preview",
"additionalProperties": false
},
"parameterForwarding": {
"type": "boolean",
"description": "pass the query string of each click on to the destination (Business and Enterprise)"
}
},
"additionalProperties": false
}Delete a link. It stops redirecting immediately, so confirm with the user first.
| Argument | Type | Description |
|---|---|---|
| slug* | string | the link slug, the last part of the link URL |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "the link slug, the last part of the link URL"
}
},
"additionalProperties": false
}Plan of the account behind the API key, the features it includes (api, mcp, sdk), its link limit (null means unlimited) and how many links it has.
No arguments.
{
"type": "object",
"additionalProperties": false
}Clicks across all of the account's links over a date range, with the same daily series and breakdowns as get_link_stats.
| Argument | Type | Description |
|---|---|---|
| end | string | last day, YYYY-MM-DD in UTC; default today |
| start | string | first day, YYYY-MM-DD in UTC; default 29 days before end |
{
"type": "object",
"properties": {
"end": {
"type": "string",
"description": "last day, YYYY-MM-DD in UTC; default today"
},
"start": {
"type": "string",
"description": "first day, YYYY-MM-DD in UTC; default 29 days before end"
}
},
"additionalProperties": false
}Read one link by slug: its public url, fallbackUrl, deeplinkUrl, per-platform targets, country rules and settings.
| Argument | Type | Description |
|---|---|---|
| slug* | string | the link slug, the last part of the link URL |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "the link slug, the last part of the link URL"
}
},
"additionalProperties": false
}Clicks for one link over a date range: total and unique clicks, clicks per day, and breakdowns by country, operating system, device, browser, referrer and outcome (app store, app opened, fallback page).
| Argument | Type | Description |
|---|---|---|
| end | string | last day, YYYY-MM-DD in UTC; default today |
| slug* | string | the link slug |
| start | string | first day, YYYY-MM-DD in UTC; default 29 days before end |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"end": {
"type": "string",
"description": "last day, YYYY-MM-DD in UTC; default today"
},
"slug": {
"type": "string",
"description": "the link slug"
},
"start": {
"type": "string",
"description": "first day, YYYY-MM-DD in UTC; default 29 days before end"
}
},
"additionalProperties": false
}Clicks per day for one link over a date range, without the breakdowns. Use it for trends and charts.
| Argument | Type | Description |
|---|---|---|
| end | string | last day, YYYY-MM-DD in UTC; default today |
| slug* | string | the link slug |
| start | string | first day, YYYY-MM-DD in UTC; default 29 days before end |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"end": {
"type": "string",
"description": "last day, YYYY-MM-DD in UTC; default today"
},
"slug": {
"type": "string",
"description": "the link slug"
},
"start": {
"type": "string",
"description": "first day, YYYY-MM-DD in UTC; default 29 days before end"
}
},
"additionalProperties": false
}The account's links ranked by clicks over a date range, best first. Use it to answer which links or campaigns performed best.
| Argument | Type | Description |
|---|---|---|
| end | string | last day, YYYY-MM-DD in UTC; default today |
| limit | integer | how many links to return, 1 to 100, default 10 |
| start | string | first day, YYYY-MM-DD in UTC; default 29 days before end |
{
"type": "object",
"properties": {
"end": {
"type": "string",
"description": "last day, YYYY-MM-DD in UTC; default today"
},
"limit": {
"type": "integer",
"description": "how many links to return, 1 to 100, default 10"
},
"start": {
"type": "string",
"description": "first day, YYYY-MM-DD in UTC; default 29 days before end"
}
},
"additionalProperties": false
}The account's custom domains (for example go.acme.com) with their status (pending, verifying, active, error), the DNS record to add, which domain is the default for link URLs, and how many domains the plan allows (limits.used and limits.max). Business and Enterprise plans.
No arguments.
{
"type": "object",
"additionalProperties": false
}List the account's links, newest first, with their destinations and targets. Use search to find a link by slug or title.
| Argument | Type | Description |
|---|---|---|
| limit | integer | page size from 1 to 100, default 20 |
| offset | integer | number of links to skip when paging |
| search | string | only links whose slug or title contains this text |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "page size from 1 to 100, default 20"
},
"offset": {
"type": "integer",
"description": "number of links to skip when paging"
},
"search": {
"type": "string",
"description": "only links whose slug or title contains this text"
}
},
"additionalProperties": false
}Change an existing link. Only the fields you send change; the slug itself cannot be changed. Returns the updated link.
| Argument | Type | Description |
|---|---|---|
| slug* | string | slug of the link to change |
| title | string | new title; an empty string removes it |
| targets | object | targets to change per platform (iphone, ipad, android, huawei, samsung, xiaomi, rustore); an empty string removes that platform, platforms not listed stay as they are |
| deeplinkUrl | string | new in-app URL; an empty string removes it |
| fallbackUrl | string | new fallback page |
| countryRules | array | the complete new list of country rules; it replaces the current list, an empty list removes every rule, leave it out to keep the rules as they are |
| socialPreview | object | the complete new social preview; it replaces the current one, an empty title removes the preview, leave it out to keep it; send the current imageUrl back to keep an image uploaded in the dashboard |
| parameterForwarding |
| boolean |
| turn parameter forwarding on or off |
{
"type": "object",
"required": [
"slug"
],
"properties": {
"slug": {
"type": "string",
"description": "slug of the link to change"
},
"title": {
"type": "string",
"description": "new title; an empty string removes it"
},
"targets": {
"type": "object",
"description": "targets to change per platform (iphone, ipad, android, huawei, samsung, xiaomi, rustore); an empty string removes that platform, platforms not listed stay as they are",
"additionalProperties": {
"type": "string"
}
},
"deeplinkUrl": {
"type": "string",
"description": "new in-app URL; an empty string removes it"
},
"fallbackUrl": {
"type": "string",
"description": "new fallback page"
},
"countryRules": {
"type": "array",
"items": {
"type": "object",
"required": [
"country",
"url"
],
"properties": {
"url": {
"type": "string",
"description": "http(s) store or page URL for Android visitors from that country"
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country code of the visitor, for example RU; use GB for the United Kingdom"
}
},
"additionalProperties": false
},
"description": "the complete new list of country rules; it replaces the current list, an empty list removes every rule, leave it out to keep the rules as they are"
},
"socialPreview": {
"type": "object",
"required": [
"title"
],
"properties": {
"title": {
"type": "string",
"description": "headline of the preview card, up to 120 characters"
},
"imageUrl": {
"type": "string",
"description": "https URL of the preview image, ideally 1200 x 630 pixels"
},
"description": {
"type": "string",
"description": "line under the headline, up to 300 characters"
}
},
"description": "the complete new social preview; it replaces the current one, an empty title removes the preview, leave it out to keep it; send the current imageUrl back to keep an image uploaded in the dashboard",
"additionalProperties": false
},
"parameterForwarding": {
"type": "boolean",
"description": "turn parameter forwarding on or off"
}
},
"additionalProperties": false
}