Appy Smart Links
Server Details
Create, edit and manage Appy smart links for mobile app campaigns, and query link clicks, traffic breakdowns and campaign statistics through MCP. Connect to https://mcp.appy.to using Streamable HTTP; tool calls require an Appy Business or Enterprise secret API key. Enterprise accounts can also query app install attribution, in-app events and revenue. Documentation: https://appy.to/docs/mcp
- Status
- Healthy
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 11 tools
Link CRUD tools and account/domain readers are clearly distinct. The stats tools overlap somewhat—get_link_stats includes timeseries data that get_link_timeseries also returns—but the descriptions clarify intended use cases (full breakdowns vs. trends/charts).
All tools follow a consistent snake_case verb_noun pattern (create_link, get_link_stats, list_domains, update_link). The convention is predictable throughout the set.
Eleven tools is well-scoped for a smart-link management server, covering link lifecycle, analytics, account, and domains without excessive surface area. Each tool appears to earn its place.
Core link CRUD is fully covered (create, get, list, update, delete), along with analytics, account info, and domain listing. Minor gaps exist around domain management (no create/verify domain) and account updates, but agents can work around these for link-focused workflows.
Available Tools
11 toolscreate_linkAInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | custom slug of 5 to 64 lowercase letters, digits or hyphens; omit for a random one | |
| title | No | name shown in the dashboard, up to 200 characters | |
| targets | No | 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 | No | in-app URL that opens the installed app, for example acme://product/42 | |
| fallbackUrl | Yes | http(s) page for desktop visitors and anyone without a matching target | |
| countryRules | No | 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 | No | 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 | No | pass the query string of each click on to the destination (Business and Enterprise) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare the mutation profile (readOnlyHint=false, destructiveHint=false, idempotentHint=false), and the description confirms the tool returns the new link with its public url, which is useful. It adds no context on permissions, plan limits (parameterForwarding is noted as Business/Enterprise only in the schema, not the description), or failure behavior, so it goes only slightly beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the action and the required parameter, then a compact coverage list. The clause enumerating five optional fields is dense but each item maps to a real parameter, so little is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with nested objects and no output schema, it covers the required field, the major optional groups and the return value. Remaining gaps (title, parameterForwarding's plan restriction, error cases) are minor given full schema coverage and clear annotations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the baseline is 3. The description restates the purpose of most parameters (targets, countryRules, deeplinkUrl, socialPreview, slug) but omits title and parameterForwarding, and adds no syntax or constraint detail beyond what the schema already documents.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Create a smart link") and notes the minimum requirement (fallbackUrl) plus the return value (the new link with its public url). The create verb cleanly separates it from siblings like update_link, get_link and delete_link.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description enumerates optional capabilities (targets, countryRules, deeplinkUrl, socialPreview, slug) but gives no explicit when-to-use guidance, no exclusions, and never names an alternative such as update_link for modifying an existing link.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_linkADestructiveIdempotentInspect
Delete a link. It stops redirecting immediately, so confirm with the user first.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | the link slug, the last part of the link URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the safety profile is covered. The description adds genuine value beyond that by explaining the observable effect — the link stops redirecting immediately — which tells the agent the consequence is instant, not eventual.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler: the action first, then the consequence and the caution. Nothing to trim and the most important warning is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter destructive tool with annotations and no output schema, the description supplies the key missing pieces: immediate effect and the instruction to confirm. It could note whether deletion is permanent or reversible, but nothing essential for correct invocation is absent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the sole parameter 'slug' is documented in the schema as the last part of the link URL, so the schema carries the load. The description adds nothing about the parameter, which is the expected baseline for full coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb and resource ("Delete a link"), making the operation unambiguous against siblings like create_link or update_link. It stops short of an explicit contrast with siblings, but the name plus verb leave no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Confirm with the user first" gives one real invocation precondition, which is useful for a destructive action. However, it never states when to delete versus update_link (e.g., disable vs. remove) or what happens on an invalid/unknown slug.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_accountARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish that this is a read-only, non-open-world operation. The description adds useful behavioral context by naming the returned account details and clarifying that a null link limit means unlimited, which is meaningful information beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single compact sentence with no wasted words. It front-loads the account resource and then enumerates the key returned details efficiently.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With zero parameters and no output schema, the description carries the burden of explaining what the tool returns. It covers plan, features, link limit, null semantics, and link count, which is sufficient for a simple account lookup, though the exact response structure is not specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so baseline parameter semantics is 4. The description uses its space to describe returned fields rather than parameters, which is appropriate for a parameterless tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the resource as the account behind the API key and lists the details returned: plan, included features, link limit, and link count. It lacks an explicit verb like 'retrieve' and does not explicitly distinguish itself from sibling get_account_stats, but the resource is still clear.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives such as get_account_stats. The usage is implied by the content, but the description does not state conditions, exclusions, or preferred alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_account_statsARead-onlyInspect
Clicks across all of the account's links over a date range, with the same daily series and breakdowns as get_link_stats.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | last day, YYYY-MM-DD in UTC; default today | |
| start | No | first day, YYYY-MM-DD in UTC; default 29 days before end |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered; the description adds that results aggregate across every link in the account and that the response includes a daily series plus breakdowns, paralleling get_link_stats. It does not cover rate limits or whether the date range is clamped, but the added context is real.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence with no wasted words; the account-wide scope is front-loaded and the output-shape note follows. Nothing needs trimming or reordering.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description must convey return shape, and it does so by reference to get_link_stats' daily series and breakdowns. That is reasonably complete for a two-param read tool, though a self-contained one-clause summary of the return value would remove the cross-tool lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with start/end formats and defaults fully documented in the schema. The description only restates "over a date range" and adds no semantics (timezone handling, inclusive bounds, max span) beyond what the schema already provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (account-wide click counts over a date range) and implicitly contrasts with get_link_stats by scoping to "all of the account's links." It does not distinguish itself from get_top_links or get_link_timeseries, which an agent must infer.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the account-level scope, and the reference to get_link_stats hints at the relationship between the two tools. There is no explicit guidance on when to pick this over get_top_links or get_link_timeseries, and no statement of prerequisites such as account selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_linkARead-onlyInspect
Read one link by slug: its public url, fallbackUrl, deeplinkUrl, per-platform targets, country rules and settings.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | the link slug, the last part of the link URL |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description usefully discloses the shape of the returned resource, but says nothing about behavior for a missing/disabled slug, permissions, or whether unpublished links are returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One sentence, front-loaded with the verb and key, and the field list is tight. Nothing redundant or padded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the enumeration of returned fields is genuinely valuable, and for a one-parameter read tool almost everything needed to call it is present. The remaining gap is failure behavior when the slug does not resolve.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter and the schema documents it at 100% coverage ('the link slug, the last part of the link URL'). The description only echoes 'by slug' and adds no format, casing, or validation detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Read one link by slug') and enumerates the payload (public url, fallbackUrl, deeplinkUrl, targets, country rules, settings), which separates it from the list_* siblings by cardinality. It never names a sibling explicitly, so it falls short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: 'Read one link by slug' suggests fetching details for a known slug. There is no statement of when to prefer this over list_links or the get_link_stats / get_link_timeseries analytics siblings, and no exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_link_statsARead-onlyInspect
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).
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | last day, YYYY-MM-DD in UTC; default today | |
| slug | Yes | the link slug | |
| start | No | first day, YYYY-MM-DD in UTC; default 29 days before end |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds genuine value by itemizing the returned metrics (total/unique clicks, per-day, breakdowns by country, OS, device, browser, referrer, outcome), which is important since there is no output schema. It omits behavior on unknown slugs or empty ranges, hence 4 not 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence, front-loaded with the resource and scope, followed by the enumerated outputs. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by listing the return fields, and the schema covers date defaults. Minor gaps remain around empty results and error behavior for an invalid slug, but nothing essential to calling the tool is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the schema already documents slug, start and end with formats and defaults. The description only restates that the range is a date range and the target is one link — useful tie-in but no additional syntax or semantics beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb+resource ('Clicks for one link over a date range') and enumerates the metrics returned, so an agent knows exactly what it retrieves. It doesn't explicitly contrast with close siblings like get_link_timeseries or get_account_stats, which is why it stops short of 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by 'for one link over a date range' — the agent can infer it is the per-link aggregate stats call. However, there is no explicit when-to-use/when-not guidance and no mention of the sibling alternatives such as get_link_timeseries for finer granularity or get_account_stats for account-level data.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_link_timeseriesARead-onlyInspect
Clicks per day for one link over a date range, without the breakdowns. Use it for trends and charts.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | last day, YYYY-MM-DD in UTC; default today | |
| slug | Yes | the link slug | |
| start | No | first day, YYYY-MM-DD in UTC; default 29 days before end |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the useful fact that the series is daily and excludes breakdowns, but says nothing about date-range defaults, empty results, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with zero filler; the core scope is front-loaded and the usage hint follows immediately.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter read-only list tool with full schema coverage and annotations, the description covers what the tool returns conceptually ('clicks per day'). A note on the result shape (date/count pairs) or behavior with no clicks would close the remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so slug, start and end (including the UTC YYYY-MM-DD format and default windows) are fully documented in the schema. The description only gestures at 'date range' and adds no meaning beyond it, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource+granularity: 'Clicks per day for one link over a date range'. The clause 'without the breakdowns' distinguishes it from the sibling get_link_stats, which presumably offers those breakdowns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use it for trends and charts' gives a clear positive condition, and 'without the breakdowns' implies the when-not case. However, it never names get_link_stats explicitly as the alternative, leaving the agent to infer the routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_top_linksARead-onlyInspect
The account's links ranked by clicks over a date range, best first. Use it to answer which links or campaigns performed best.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | last day, YYYY-MM-DD in UTC; default today | |
| limit | No | how many links to return, 1 to 100, default 10 | |
| start | No | first day, YYYY-MM-DD in UTC; default 29 days before end |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description adds the ordering guarantee ("best first") and account-level scoping, but says nothing about result fields, truncation beyond limit, or why the tool is marked non-idempotent despite being a read.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with no filler; the resource and sort order lead, and the use case follows. Nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
All three parameters are optional and fully documented, so calling it is unambiguous, but with no output schema the description never indicates what a ranked row contains (link identifier? click count? campaign?). That leaves a real gap for interpreting results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, with each parameter's format, range, and defaults documented inline. The description only restates the shared date-range concept and adds no per-parameter meaning, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete resource and operation: the account's links ranked by clicks over a date range, returned best-first. The ranking and sort order clearly separate it from a plain enumeration like list_links, though it never names the sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use it to answer which links or campaigns performed best" implies the use case but offers no when-not guidance and no routing against get_link_stats, get_link_timeseries, or list_links, which an agent could easily confuse with this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_domainsARead-onlyInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered; the description adds meaningful behavioral detail by disclosing the exact payload shape (statuses including pending/verifying/active/error, the DNS record, the default-domain flag, and limits.used/limits.max). It omits empty-state behavior and auth specifics, keeping it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One dense sentence front-loads the resource and then enumerates return fields, with no filler or repetition. It is long for a single sentence, but every clause carries distinct information (statuses, DNS record, default, limits).
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, so the description must carry the return-value burden, and it does so thoroughly. The only remaining gaps are operational details such as empty-domain handling and whether results are ever paginated, which are minor for a zero-parameter list call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so there is nothing for the description to disambiguate and the baseline of 4 applies. The description correctly avoids inventing parameters and instead spends its words on what the tool returns.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description precisely identifies the resource (custom domains) and enumerates what is returned: statuses, DNS record, default flag, and plan limits. The verb is only implied by the tool name, and no sibling tools are named, but the scope is unmistakable against the link/account siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the plan note ('Business and Enterprise plans'), which tells an agent who this applies to. However, there is no explicit when-to-use guidance, no statement of prerequisites beyond the plan, and no named alternative for situations where this tool is not appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_linksARead-onlyInspect
List the account's links, newest first, with their destinations and targets. Use search to find a link by slug or title.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | page size from 1 to 100, default 20 | |
| offset | No | number of links to skip when paging | |
| search | No | only links whose slug or title contains this text |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so safety is covered. The description usefully adds the default sort order and the return shape, but says nothing about pagination behavior, result caps, or what an empty page looks like — the main behavioral questions for a paged list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences with the core behavior front-loaded and no filler. The trailing search sentence is slightly ambiguous in referent, but overall it is tight and readable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
There is no output schema, and the description partially compensates by naming the returned data ('destinations and targets') and the ordering. For a simple, read-only, zero-required-parameter list tool this is nearly complete; only paging semantics are left implicit in the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so limit, offset, and search are already fully documented in the schema. The description adds no syntax or interaction detail beyond restating that search matches slug/title, which is baseline performance when the schema does the work.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb (List) and resource (the account's links) and adds observable traits: ordering 'newest first' and returned fields 'destinations and targets'. It stops short of distinguishing itself from list-adjacent siblings like get_top_links or get_link, so it is clear but not fully differentiated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence implies that filtering by slug or title is done via this tool's search parameter, which hints at usage. However, it never states when to prefer get_link, get_top_links, or a dedicated search path, and the phrasing 'Use search' reads ambiguously as if referring to another tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
update_linkADestructiveIdempotentInspect
Change an existing link. Only the fields you send change; the slug itself cannot be changed. Returns the updated link.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | slug of the link to change | |
| title | No | new title; an empty string removes it | |
| targets | No | 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 | No | new in-app URL; an empty string removes it | |
| fallbackUrl | No | new fallback page | |
| countryRules | No | 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 | No | 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 | No | turn parameter forwarding on or off |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare destructiveHint=true and idempotentHint=true, so the bar is lower. The description adds meaningful behavior beyond them: patch-style partial mutation, slug immutability, and that the updated link is returned. It does not warn that some fields are wholesale-replaced or removable, but the schema covers that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences with zero filler, and the mutation scope constraint is front-loaded before the immutability caveat and the return behavior.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For an 8-parameter tool with nested objects, the description plus the richly annotated schema covers invocation adequately, and it discloses the return shape even though no output schema exists. Only permissions and the consequences of replacing list-valued fields could be spelled out further.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and every parameter carries a detailed description, including replacement and removal semantics for countryRules and socialPreview. The description's only parameter-level contribution is the slug immutability note, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("Change an existing link") and adds a hard scope rule that the slug is immutable, which an agent cannot infer from the name. It does not explicitly distinguish itself from create_link or delete_link, but those siblings' names make the split obvious.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Only the fields you send change" establishes patch rather than replace semantics, which is genuine usage guidance for invoking it correctly. However, nothing says when to prefer this over create_link or delete_link, nor are there stated prerequisites (ownership, permissions).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
- First observed
create_link - First observed
delete_link - First observed
get_account - First observed
get_account_stats - First observed
get_link - First observed
get_link_stats - First observed
get_link_timeseries - First observed
get_top_links - First observed
list_domains - First observed
list_links - First observed
update_link
Related MCP Servers
- AlicenseNot gradedqualityBmaintenancePerplexity for social: ask what competitors are running across social and get answers grounded in real ad and creative data, not guesses.2Apache 2.0
- AlicenseCqualityBmaintenanceCompetitor Monitor AI - MCP server providing AI-powered tools and automation by MEOK AI Labs113 npm54 PyPIMIT
- AlicenseAqualityCmaintenanceEnables brand visibility monitoring across major AI platforms like ChatGPT, Claude, Gemini, and Perplexity. It allows users to track visibility scores, analyze competitor data, and receive actionable insights to improve AI-generated brand recommendations.164 npm1MIT

industrylens-mcpofficial
AlicenseNot gradedqualityBmaintenanceBrowse IndustryLens's published competitive-intelligence reports and head-to-head competitor comparisons from any AI agent — real, source-backed data.MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.