Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

ShipDapp

REMOTE · API.SHIPDAPP.COM · SCANNED AUG 3

Deploy Dockerized apps to Akash devnet with ShipDapp MCP build, deploy, update, and logs tools.

Available components

−1 this week 57 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score →

Endpoint Security46
Transport & Reachability40
Schema Quality & AI Usability80
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Context-footprint check failed: tool/resource definitions use about 2491 tokens (~155/item across 16 items; 16 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management27
  • Stability observed for 8 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage98
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 95% of tool parameters carry a description.Partial
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

remote · api.shipdapp.com

# add to Claude Code
claude mcp add --transport http yash1ts-shipdapp https://api.shipdapp.com/api/mcp/sse
# ~/.codex/config.toml
[mcp_servers.yash1ts-shipdapp]
url = "https://api.shipdapp.com/api/mcp/sse"
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "yash1ts-shipdapp": {
      "type": "remote",
      "url": "https://api.shipdapp.com/api/mcp/sse",
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add yash1ts-shipdapp --url https://api.shipdapp.com/api/mcp/sse --transport streamable-http
# ~/.hermes/config.yaml
mcp_servers:
  yash1ts-shipdapp:
    url: "https://api.shipdapp.com/api/mcp/sse"
// mcp.json
{
  "mcpServers": {
    "yash1ts-shipdapp": {
      "type": "http",
      "url": "https://api.shipdapp.com/api/mcp/sse"
    }
  }
}

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 2 Aug 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.

  • 31 Jul 26 −4
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 10 to 13. That category is still filling its 30-day observation window: 3 days of observed history at the previous scan, 4 at this one. The score rises as the window fills, whether or not the server changes.

  • 28 Jul 26 +1

    No change was recorded against any check on this day. Stability & Change Management went from 3 to 7. That category is still filling its 30-day observation window: 1 days of observed history at the previous scan, 2 at this one. The score rises as the window fills, whether or not the server changes.

  • 27 Jul 26 +1
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 57

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 3 Aug 2026 · Probed https://api.shipdapp.com/api/mcp/sse

TLS valid

Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .

Subject Issuer Valid from Valid until Key Signature Serial
CN=shipdapp.com CN=WE1,O=Google Trust Services,C=US 21 Jun 2026 19 Sept 2026 ECDSA 256 ECDSA-SHA256 25e23e2bd3f5fe1913bf36644ef1030f
SANs: shipdapp.com, api.shipdapp.com, *.api.shipdapp.com
CN=WE1,O=Google Trust Services,C=US (CA) CN=GTS Root R4,O=Google Trust Services LLC,C=US 13 Dec 2023 20 Feb 2029 ECDSA 256 ECDSA-SHA384 7ff31977972c224a76155d13b6d685e3
CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE 15 Nov 2023 28 Jan 2028 ECDSA 384 SHA256-RSA 7fe530bf331343bedd821610493d8a1b
DNSSEC insecure

Validation of api.shipdapp.com. Not signed

Zone DS Keys Algorithms Outcome
. trust_anchor 20326, 38696 8, 8 Verified
com. present 19718 13 Verified
shipdapp.com. absent Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation
Authentication No authorisation required

The endpoint answered without asking for a token. Anyone who knows the URL can reach it.

Result No authorisation required
HTTP status 404
Transports 2 probes
Transport URL Outcome Status Location
sse https://api.shipdapp.com/api/mcp/sse Verified 200
http (plaintext) http://api.shipdapp.com/api/mcp/sse Served over HTTP 200
MCP tools — 16 exposed · ~2,491 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
authenticate ~88

CALL THIS IMMEDIATELY AFTER get_auth_challenge. Submit the base58 signature of the challenge message to unlock the session. All deploy/build/status tools require authentication — do not call them until this succeeds.

NameTypeReqDescription
signaturestringyesBase58 ed25519 signature of challengeMessage, signed locally off-chain
walletAddressstringyesSame wallet address used in get_auth_challenge

No output schema declared.

No examples provided.

build_image ~258

USE ONLY when you want to build a container image WITHOUT creating a deployment. For normal shipping, prefer deploy_app instead (build + deploy in one step). Call this if you need to verify the image builds successfully before deploying, or if you plan to deploy the image manually later. After calling, poll get_build_status until SUCCESS. Prefer validate_upload first.

NameTypeReqDescription
appNamestringyesApplication name — becomes part of the Artifact Registry image tag
buildCommandstringOverride template default (webapp-static: npm run build)
dockerfileContentstringOnly if you need a custom Dockerfile instead of buildpacks
filesobjectyesComplete local project files (path → content). Must include required paths (see list_template_files). Omit package-lock.json. Test with npm run build locally first.
mergeModestringstrict (default): reject missing required files and placeholder garbage. scaffold: fill omitted scaffold files from template defaults (emits warnings).
startCommandstringOverride template default (webapp-static production: npm start → serve -s dist)
templateIdstringyesFrom list_templates (e.g. webapp-static). Required — provides build defaults.

No output schema declared.

No examples provided.

close_app ~94

CALL THIS WHEN PERMANENTLY SHUTTING DOWN an app — stops the Akash lease, frees resources, and marks the deployment DELETED. This is irreversible for that deploymentId. Use list_apps first if you don't know the ID. Do NOT use this for updates — use update_app instead.

NameTypeReqDescription
deploymentIdstringyesdeploymentId to tear down (from deploy_app, get_app_status, or list_apps)

No output schema declared.

No examples provided.

deploy_app ~422

PRIMARY SOURCE DEPLOY TOOL — call when the app is built/tested locally and ready to ship. Prefer validate_upload first. Uploads files + templateId (mergeMode=strict by default: upload-as-is — never injects starter Tailwind/PostCSS/React files; requires package.json + index.html and that the HTML entry's local imports resolve). Framework-agnostic SPA. Returns uploadSummary + warnings. Next: poll get_app_status until ACTIVE and httpReady=true, then share proxyUri. Apps are unlisted by default (live URL still works); pass listOnStore=true or call set_app_listing to appear on the App Store. Omit package-lock.json. Use deploy_image for prebuilt images. See prompt deploy_app_guide.

NameTypeReqDescription
appNamestringyesUnique app name used for the image tag and My Apps
buildCommandstringOverride template build command if needed
descriptionstringShort description shown on the app listing when listed
dockerfileContentstringCustom Dockerfile — omit to use Google Cloud Buildpacks
filesobjectyesComplete local project files including all required paths (list_template_files). Omit package-lock.json. Must pass local npm run build first.
imageUrlstringPreview/thumbnail URL for the app card in the store
listOnStorebooleanIf true, list this app on the public App Store. Default false (unlisted; proxyUri still works).
mergeModestringstrict (default): reject missing required files and placeholder garbage. scaffold: fill omitted scaffold files from template defaults (emits warnings).
portnumberContainer listen port (webapp-static default: 3000)
startCommandstringOverride production start (webapp-static default: npm start → serve -s dist). Do not use vite preview for production.
templateIdstringyesFrom list_templates (e.g. webapp-static). Must match how the app was scaffolded.

No output schema declared.

No examples provided.

deploy_image ~287

CALL THIS WHEN YOU ALREADY HAVE A PUBLIC DOCKER/OCI IMAGE and want to deploy it to devnet without uploading source files or running Cloud Build. Requires dockerImage + appName. Use deploy_app instead when the agent has local source files and wants ShipDapp to build the image. Guardrails apply: max active deployments, daily limit, duplicate appName blocked, hourly deploy rate limit, cooldown. Returns deploymentId, network=devnet, dockerImage. Apps are unlisted by default; pass listOnStore=true or call set_app_listing to appear on the App Store. Next step: poll get_app_status until ACTIVE and share proxyUri.

NameTypeReqDescription
appNamestringyesUnique app name shown in My Apps
descriptionstringShort description shown on the app listing when listed
dockerImagestringyesPublic container image URI, e.g. ghcr.io/acme/my-app:latest or docker.io/library/nginx:alpine
imageUrlstringPreview/thumbnail URL for the app card in the store
listOnStorebooleanIf true, list this app on the public App Store. Default false (unlisted; proxyUri still works).
portnumberContainer listen port (default: 3000)
startCommandstringOptional command override if the image needs one

No output schema declared.

No examples provided.

get_app_status ~106

PRIMARY STATUS POLL after deploy_app, update_app, or deploy_image. Poll every 10–20s until status is ACTIVE and httpReady is true (then share proxyUri), or FAILED (read lastError / buildLogTail). ACTIVE alone can still mean HTTP 503 while the process starts — wait for httpReady. On FAILED, buildLogTail may be attached automatically.

NameTypeReqDescription
deploymentIdstringyesdeploymentId from deploy_app response, or pick from list_apps

No output schema declared.

No examples provided.

get_auth_challenge ~75

CALL THIS FIRST before deploy/build tools ONLY if you are NOT using a ShipDapp API key in MCP client headers. Returns a Sign-In-With-Solana message for local wallet signing.

NameTypeReqDescription
walletAddressstringyesSolana wallet public key (base58), e.g. from ~/.config/solana/id.json

No output schema declared.

No examples provided.

get_build_status ~140

Optional debug tool for Cloud Build progress. Prefer polling get_app_status(deploymentId) after deploy_app/update_app — the server auto-promotes BUILDING → Akash deploy when the build succeeds. Use this when you only have a buildId (e.g. after build_image) or need build-level detail. On FAILURE, returns failureSummary and buildLogTail when available.

NameTypeReqDescription
buildIdstringyesbuildId from build_image, deploy_app, or file-based update_app response
deploymentIdstringOptional. If omitted and this build belongs to a BUILDING deployment, the server still auto-starts Akash deploy on SUCCESS.

No output schema declared.

No examples provided.

get_logs ~175

CALL THIS WHEN SOMETHING WENT WRONG or you need to debug. type=build + buildId: after FAILURE — returns failureSummary and inline buildLogTail when Cloud Logging is available (else logUrl). type=runtime: container stdout/stderr from Akash when ACTIVE; on provider HTTP errors, returns a clear message plus lastError fallback. Runtime logs are NOT available until the deployment has an Akash lease.

NameTypeReqDescription
buildIdstringRequired when type=build — from deploy_app or build_image response
deploymentIdstringyesdeploymentId from deploy_app or list_apps
tailnumberMax approximate log lines for runtime logs (default 500)
typestringbuild = GCB build logs (needs buildId). runtime = live container logs (needs ACTIVE deployment)

No output schema declared.

No examples provided.

get_usage_limits ~63

CALL THIS AFTER A GUARDRAIL BLOCK or before planning multiple deploys. Returns your wallet's deployment quotas and current usage (active apps, hourly build/deploy counts). Use to understand why deploy_app was rejected and what to do next (close_app or wait).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_apps ~58

CALL THIS to see all your deployed apps (listed and unlisted), find a deploymentId, or check which apps are ACTIVE vs DEPLOYING. Use before update_app, set_app_listing, or close_app when you don't know the deploymentId.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

list_template_files ~84

CALL THIS BEFORE deploy_app to see required vs optional paths. Required is minimal (package.json + index.html); component filenames are not fixed — validate_upload checks that the HTML entry's imports resolve.

NameTypeReqDescription
appNamestringOptional — only affects scaffold content, not path lists
templateIdstringyesFrom list_templates (e.g. webapp-static)

No output schema declared.

No examples provided.

list_templates ~155

CALL THIS WHEN STARTING A NEW APP or when you need a templateId for deploy_app/build_image. Returns available templates (e.g. webapp-static = frontend SPA, framework-agnostic). Optional starter via includeFiles=true is React+Vite+Tailwind — not required. Production start uses serve -s dist in the starter. Prefer list_template_files + validate_upload before deploy_app. Upload your complete project as-is (mergeMode=strict never injects Tailwind/PostCSS).

NameTypeReqDescription
appNamestringSubstituted into template files like index.html title (default: my-app)
includeFilesbooleanSet true when bootstrapping a new project — returns scaffold files to write to disk

No output schema declared.

No examples provided.

set_app_listing ~96

CALL THIS to list or unlist an existing app on the public App Store. Unlisted apps stay reachable via proxyUri if you know the URL. Use list_apps to find deploymentId. Does not change the live deployment.

NameTypeReqDescription
deploymentIdstringyesdeploymentId from deploy_app, deploy_image, or list_apps
listedbooleanyestrue = appear on App Store; false = unlisted (private from discovery)

No output schema declared.

No examples provided.

update_app ~261

CALL THIS WHEN AN APP IS ALREADY DEPLOYED and you want to push new code or change config. Pass files + templateId to rebuild (same strict upload rules as deploy_app — prefer validate_upload first), OR pass dockerImage alone to redeploy an existing image. Do NOT use deploy_app for updates. Blocked while status is DEPLOYING — wait and poll get_app_status. After calling, poll until ACTIVE and httpReady=true.

NameTypeReqDescription
appNamestringRename the app (optional)
buildCommandstring
deploymentIdstringyesExisting deployment ID from deploy_app or list_apps
descriptionstringUpdate the app description (optional)
dockerImagestringPre-built image URI — use instead of files when image is already built
filesobjectNew local files — triggers a cloud rebuild before redeploying
mergeModestringstrict (default): reject missing required files and placeholder garbage. scaffold: fill omitted scaffold files from template defaults (emits warnings).
portnumberChange container port (optional)
startCommandstring
templateIdstringRequired when files is provided — same template used originally

No output schema declared.

No examples provided.

validate_upload ~129

DRY-RUN before deploy_app/update_app/build_image. Checks file count, bytes, missing required paths, template-default fills, and placeholder garbage — without starting a Cloud Build. Call this when unsure the files map is complete.

NameTypeReqDescription
appNamestring
filesobjectyesSame files map you would pass to deploy_app
mergeModestringstrict (default): reject missing required files and placeholder garbage. scaffold: fill omitted scaffold files from template defaults (emits warnings).
templateIdstringyesFrom list_templates (e.g. webapp-static)

No output schema declared.

No examples provided.