Skip to main content
Glama
TedyHub
by TedyHub

deeptap-mcp

MCP server for DeepTap — configure iOS Universal Links and Android App Links, and verify them, directly from your coding agent (Claude Code, etc.).

It's a thin wrapper over the DeepTap public REST API: each tool is one API call. Point your agent at it, and it can create a deep-link domain, wire up the iOS/Android config, and run a pre-flight check on the generated apple-app-site-association and assetlinks.json files.

Install

Get an API key from Dashboard → Settings → API Keys at https://deeptap.io/dashboard/settings, then add the server:

claude mcp add --scope user --transport stdio deeptap \
  --env DEEPTAP_API_KEY=dt_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx \
  -- npx -y deeptap-mcp

Or run it directly: DEEPTAP_API_KEY=dt_live_… npx -y deeptap-mcp.

Related MCP server: Grovs

Configuration

Env var

Required

Default

Description

DEEPTAP_API_KEY

yes

API key (dt_live_…), sent as Authorization: Bearer.

DEEPTAP_API_URL

no

https://deeptap.io

Base URL of the DeepTap API (override for self-hosting/staging).

Tools

Tool

API call

Purpose

get_account

GET /me

Account, plan, and live limits. Call first to check capacity.

list_domains

GET /domains

All domains with their iOS/Android config and file URLs.

get_domain

GET /domains/:id

One domain by id (e.g. dom_42).

create_domain

POST /domains

Create a subdomain and configure iOS/Android.

update_domain

PUT /domains/:id

Partial update of iOS/Android config.

verify_domain

GET /domains/:id/verify

Pre-flight: fetch and validate AASA + assetlinks.

Every response includes a meta block with the plan, domain/link usage, and rate-limit state — the agent reads it to report limits.

Typical flow

  1. get_account — check the plan and how many domains are available.

  2. create_domain{ "name": "myapp", "ios": { "team_id": "ABCDE12345", "bundle_id": "com.example.myapp", "paths": ["*"], "fallback_url": "https://example.com" }, "android": { "package_name": "com.example.myapp", "sha256_fingerprints": ["AA:BB:…"] } }

  3. verify_domain — confirm the generated files are reachable and match the app identifiers.

verify_domain checks everything verifiable server-side (file reachability, JSON validity, appID/package match, fingerprints, paths). Rebuilding the app and on-device checks are still required — the agent should also confirm associatedDomains / package config in your project (app.json, Xcode).

Development

npm install
npm run build      # tsc -> dist/
npm start          # run the built server on stdio

License

MIT

Available Tools

6 tools
create_domainCreate domainA

Create a DeepTap subdomain and configure iOS Universal Links and/or Android App Links. Pass name (the subdomain label, e.g. 'myapp' → myapp.deeptap.io). For working routing also set fallback_url and app_store_url / play_store_url. After creating, call verify_domain.

ParametersJSON Schema
NameRequiredDescriptionDefault
iosNo
nameYesSubdomain label, e.g. 'myapp' for myapp.deeptap.io
androidNo

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the transparency burden. It discloses that working routing requires specific parameters and that verification is a separate step, but does not mention side effects, permissions, or reversibility. It adds some context beyond the basic create operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is four concise sentences, front-loaded with purpose, includes a concrete example, and contains no unnecessary words. Every sentence adds value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a creation tool with nested objects and no output schema or annotations, the description adequately covers the main purpose, the required parameter, the prerequisites for working routing, and the next step. It does not explain return values, but no output schema exists, and the schema covers nested property requirements.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low (33%), so the description supplements by explaining the 'name' parameter with an example and noting the importance of fallback_url and store URLs. However, it does not detail all nested required fields, leaving some gaps that the schema descriptions partially fill.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: 'Create a DeepTap subdomain' and 'configure iOS Universal Links and/or Android App Links.' This clearly distinguishes the tool from siblings like update_domain, verify_domain, and get_domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It provides clear context for when to use the tool (creating a new subdomain) and gives a follow-up step ('After creating, call verify_domain'). It also notes conditions for working routing, but does not explicitly mention alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_accountGet DeepTap accountA

Return the current DeepTap account, plan, and limits. Call this first to check the plan and how many domains/links are available before creating resources. Read the meta block for live usage and rate limits.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It discloses the return content (account, plan, limits) and highlights the `meta` block for live usage and rate limits, which is valuable behavioral context beyond a simple getter.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first clearly states the purpose, the second provides actionable usage guidance and directs attention to the `meta` block. No word is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is complete for the tool's simplicity: it explains the return values (account, plan, limits, meta block) and when to use it. Sibling tools are domain-related, so this account-level tool is well-contextualized.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters, so the description need not explain parameter semantics. This is the baseline score for a no-parameter tool.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states exactly what the tool does: 'Return the current DeepTap account, plan, and limits.' It uses a specific verb and resource, clearly distinguishing it from sibling domain-focused tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly says 'Call this first to check the plan and how many domains/links are available before creating resources,' providing clear when-to-use guidance. It also implies it is a preliminary step distinct from domain operations.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_domainGet domainA

Fetch one domain by id (e.g. 'dom_42'), including its iOS/Android settings and generated file URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain id, e.g. dom_42

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses that the response includes iOS/Android settings and generated file URLs, but does not explicitly state whether the operation is read-only, error behaviors, or any side effects. The word 'Fetch' implies a read, but lacks explicit disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, focused sentence with no redundancy. It front-loads the core purpose ('Fetch one domain by id') then adds useful specifics about the response content, earning every word.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple 1-parameter read tool with no output schema, the description adequately covers the return content and ID format. It lacks explicit error handling or authentication notes, but these are not critical for such a simple fetch operation, so it is nearly complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and the single parameter 'id' is already described with an example. The description repeats the ID format (dom_42) but adds no new meaning beyond the schema, so the baseline score of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific action (fetch) on a specific resource (domain by id), with the exact ID format example. This distinguishes it from sibling tools like list_domains (fetching all) and verify_domain (verification), leaving no ambiguity about the tool's purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for retrieving a single domain by ID, contrasting with list_domains for bulk retrieval. However, it does not explicitly state when not to use it or name alternative tools, so it falls short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_domainsList domainsA

List all DeepTap domains for the account, with their iOS/Android config and AASA/assetlinks URLs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden. It clarifies that the operation returns all domains with their configuration data, which implies a read-only action and gives an expectation of output content. It does not mention pagination, limits, or authentication, but for a list operation this is reasonable transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, well-structured sentence that states the action, resource, and included details without any redundancy or filler. It is front-loaded with 'List all' and wastes no words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a list tool with no parameters and no output schema, the description fully covers what the tool does and what the response will contain. The sibling tools cover creation, update, verification, and singular fetch; this description clearly completes the list function. No critical gaps are evident.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so no semantic explanation is needed. The schema coverage is complete (100% of nothing). The baseline for zero parameters is 4, and the description appropriately does not attempt to add parameter details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('List') and identifies the resource ('all DeepTap domains for the account'), clearly distinguishing it from siblings like get_domain (singular) and create_domain. It also specifies the included details (iOS/Android config, AASA/assetlinks URLs), making the scope unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase 'List all ... for the account' conveys the context: use this to enumerate all domains rather than fetching a specific one via get_domain. It does not explicitly mention when not to use it or name alternatives, but the distinction from the singular get_domain is implied by 'all domains'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

update_domainUpdate domainA

Update a domain's iOS/Android configuration (partial — only the fields you pass change). iOS caches AASA aggressively; existing installs may take up to 24h to pick up changes.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain id, e.g. dom_42
iosNo
androidNo

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses partial-update semantics (only passed fields change) and the iOS AASA caching delay (up to 24h), which are non-obvious and valuable. However, it does not mention authentication, error handling, or response behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with verb+object, and no fluff. The caching caveat is important and concisely stated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given nested objects and no output schema, the description covers key semantics (partial update, platform scope, caching delay) but omits response format and error conditions. Still, it is reasonably complete for the tool's complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is low (33%), but the description adds meaning by explaining that ios and android represent platform configuration and that only passed fields change. It does not describe id or sub-property details, leaving much to the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States 'Update a domain's iOS/Android configuration' with a specific verb and resource, clearly distinguishing from sibling tools like get_domain, create_domain, and verify_domain. The partial-update note further clarifies the tool's scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implies usage for updating existing domain configurations rather than creation or retrieval, providing clear context via the 'update' verb and partial-update behavior. Does not explicitly name alternatives like create_domain, but the context is sufficient.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

verify_domainVerify domain (pre-flight)A

Fetch the domain's generated apple-app-site-association and assetlinks.json and check them against the configured app identifiers (reachable, valid JSON, appID/package match, fingerprints, paths). Run after create_domain/update_domain. Note: this checks what is verifiable server-side; rebuilding the app and on-device checks are still required.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesDomain id, e.g. dom_42

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently explains what the tool checks and clearly notes its limitation ('only verifiable server-side; rebuilding the app and on-device checks are still required'). This gives the agent a clear understanding of the tool's scope.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences long and front-loaded with the action. It conveys all necessary information without redundancy, making it easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the purpose, usage timing, and limitations, but it does not describe the return value or result format. Since there is no output schema, an agent cannot know how to interpret the tool's result (e.g., success/failure report), which is a significant gap for a verification tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has full coverage for the single 'id' parameter, including a description. The tool description doesn't add much detail about the parameter beyond implying it comes from a previously created/updated domain. Baseline 3 is appropriate since the schema already handles the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states a specific verb and resource: it fetches the domain's generated association files and checks them against configured app identifiers. It lists specific checks (reachable, valid JSON, appID/package match, fingerprints, paths), making it distinct from sibling tools like get_domain or create_domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly states when to run the tool: 'Run after create_domain/update_domain.' It also provides context by noting it only verifies server-side and that on-device checks are still required. However, it does not explicitly mention when not to use it or compare it with alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.4/5.0
Disambiguation5/5

Each tool has a unique purpose: account info, domain verification, listing, retrieval, creation, and updating. No two tools overlap, and the distinction between list/get and create/update is clear.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case (get_account, verify_domain, list_domains, get_domain, create_domain, update_domain). This makes the API predictable and easy to navigate.

Tool Count5/5

With 6 tools, the server covers its domain management purpose without excess. Each tool is necessary and the count is typical for a focused CRUD-style API.

Completeness4/5

The domain lifecycle is mostly complete with list, get, create, and update, but a delete_domain operation is missing. The verify_domain tool adds value, yet the absence of delete is a minor gap for full resource management.

Maintenance

ActivityStale
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for managing deep links, analytics, and app configuration on Grovs. Works with Claude Code, Cursor, Windsurf, and any MCP-compatible client.
    16
    2
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    MCP server for domainagent.dev, enabling AI agents to search, register, deploy, host, and manage domains with USDC payment on Base via x402. Supports static site deployment via Cloudflare Pages and DNS management.
    19
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A unified MCP server providing x402 payments, TAP identity verification, referral onboarding, and domain registration for Claude Code and other MCP clients.

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/TedyHub/deeptap-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server