Google Search Console integration for Model Context Protocol (MCP)
Strait is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Create, search and pause deep links; QR codes; analytics, taps, events; domains; webhooks.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user strait-mcp '--' npx -y @straitlink/mcp
# 2 — ask your agent for something these tools do
# create_link, batch_create_links, get_link and 29 more
Strait costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one can run either way — at an address its publisher runs, or as a process under your own user, with your files and your network — and this marketplace is in the path of neither.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user strait-mcp '--' npx -y @straitlink/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
Its publisher also runs it at https://strait.link/mcp: nothing to start on your machine, and this marketplace is not in the path.
claude mcp add --scope user --transport http strait-mcp https://strait.link/mcpNothing is required, but it can take STRAIT_SECRET_KEY (Strait secret key (st_live_...) from Dashboard > Settings > Secret keys. Optional: without it only check_app_links, search_docs and demo trace_tap work.), STRAIT_API_URL (Engine URL. Default https://strait.link) if you want to set them.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
32 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
Create one deep link (short link) in the workspace of STRAIT_SECRET_KEY. Returns the link with its shortUrl
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The link's slug: the part after the link domain, e.g. summer in https://hilltop.strait.link/summer |
| longUrl | string | yes | Where the link goes: an https URL on your app's domain. The app receives its path and query as the in-app route. |
| title | string | no | Social preview title |
| description | string | no | Social preview description |
| imageUrl | string | no | Social preview image (https) |
| campaign | string | no | Campaign name for analytics; defaults to longUrl's utm_campaign |
| tags | array | no | — |
| iosFallbackUrl | string | no | iPhone without the app: this page instead of longUrl |
| androidFallbackUrl | string | no | Android without the app (website mode): this page instead of longUrl |
| desktopUrl | string | no | Computers go here instead of longUrl |
| expiresAt | no | After this the link stops opening its destination. Omit for never. | |
| expiredAction | string | no | Where taps go after expiry: page (expired page), store (app store), url (expiredUrl) |
| expiredUrl | string | no | Required with expiredAction url |
Create up to 500 links in one call (imports, migrations, campaigns). Each item is checked like create_link and gets its own
| Parameter | Type | Required | Notes |
|---|---|---|---|
| links | array | yes | — |
Get one active link by slug: destination, fallbacks, tags, expiry and its shortUrl.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The link's slug: the part after the link domain, e.g. summer in https://hilltop.strait.link/summer |
List links, newest first, one page at a time. Pass nextCursor back as cursor until it is null.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | Page size, default 50 |
| cursor | string | no | nextCursor from the previous page |
| status | string | no | active (default) or paused |
Change a link: its destination, title, tags or expiry, or turn it off or back on with isActive. People who tap the link afterwards get the change,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The link's slug: the part after the link domain, e.g. summer in https://hilltop.strait.link/summer |
| longUrl | string | no | — |
| title | string | no | — |
| tags | array | no | — |
| expiresAt | no | ISO date-time (2026-12-31T23:59:59Z) or epoch ms | |
| expiredAction | string | no | — |
| expiredUrl | string | no | — |
| isActive | boolean | no | Alone: false pauses the link, true turns a paused link back on |
| confirm | boolean | no | true to apply the change; omit or false to preview it |
Taps, app opens, installs, conversions and revenue for the workspace (or one link) over a date range, optionally grouped by
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | no | Inclusive start: 2026-09-01, an ISO date-time or epoch ms |
| to | string | no | Exclusive end, same formats; default now |
| link | string | no | Only this link (slug) |
| group | string | no | — |
Check a domain's App Links (Android, /.well-known/assetlinks.json) and Universal Links (iPhone, apple-app-site-association)
| Parameter | Type | Required | Notes |
|---|---|---|---|
| domain | string | yes | A domain such as hilltop.strait.link or shop.hilltop.example (a full URL is reduced to its host) |
Dry-run one tap on a link from one kind of device or app and see exactly what Strait would do (redirect, in-app-browser
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | no | The link's slug: the part after the link domain, e.g. summer in https://hilltop.strait.link/summer |
| url | string | no | The full short link instead of slug |
| ua | string | yes | A preset (…) or a raw User-Agent |
Explain where taps on a link go. With slug or url: walks the link through the common channels (Android Chrome, WhatsApp,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | no | The link's slug: the part after the link domain, e.g. summer in https://hilltop.strait.link/summer |
| url | string | no | — |
| token | string | no | Demo trace token (st=…) instead of a link |
Read-only. Who this secret key is: the workspace name, its link domain (the host every shortUrl uses, e.g.
No parameter schema on file.
Read-only. This calendar month's usage (UTC) against the workspace's plan: billed taps used and included, new links
No parameter schema on file.
Read-only. The referral report (a preview): for each referral code in a date range, the taps that carried it and the
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | no | Inclusive start: 2026-10-01, an ISO date-time or epoch ms |
| to | string | no | Exclusive end, same formats; default now |
Read-only. A webhook's delivery history, newest first (kept 30 days): each event sent, its status (pending = waiting
| Parameter | Type | Required | Notes |
|---|---|---|---|
| webhookId | string | no | The webhook id; omit to list the webhooks first |
| limit | integer | no | Page size, default 20 |
| cursor | string | no | nextCursor from the previous page |
Write. Sends one test event (event: ping) to a webhook right now, even if it is paused, and returns whether the receiver
| Parameter | Type | Required | Notes |
|---|---|---|---|
| webhookId | string | yes | The webhook id |
Write. Sends one past webhook delivery again, right away, to the webhook's current URL, with the same X-Strait-Delivery id
| Parameter | Type | Required | Notes |
|---|---|---|---|
| deliveryId | string | yes | The delivery id, from list_webhook_deliveries |
| confirm | boolean | no | true to send it; omit or false to preview |
Write. Turns a link off: afterwards every tap on it gets the "link not found" page instead of the app, store or website.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The link's slug: the part after the link domain, e.g. summer in https://hilltop.strait.link/summer |
| confirm | boolean | no | true to deactivate; omit or false to preview |
Write. Pauses a link: until it is resumed, every tap gets the "link not found" page instead of the app, store or website.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The link's slug: the part after the link domain, e.g. summer in https://hilltop.strait.link/summer |
| confirm | boolean | no | true to pause; omit or false to preview |
Write. Turns a paused link back on: taps follow it again within about 30 seconds. Needs confirm: true; without it nothing
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The link's slug: the part after the link domain, e.g. summer in https://hilltop.strait.link/summer |
| confirm | boolean | no | true to resume; omit or false to preview |
Read-only. Finds links by text across slug, title, destination (longUrl), campaign and tags, or by an exact tag or campaign,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | no | Text to find (case-insensitive) in slug, title, longUrl, campaign or tags |
| tag | string | no | Only links with exactly this tag |
| campaign | string | no | Only links in exactly this campaign |
| status | string | no | active (default), inactive (paused or disabled) or all |
| limit | integer | no | Links to return, default 20 |
Read-only. A print-ready QR code for a link, in the workspace's QR style (Dashboard → Settings → QR codes); the options override it
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | yes | The link's slug: the part after the link domain, e.g. summer in https://hilltop.strait.link/summer |
| format | string | no | png (default) or svg |
| size | integer | no | Width and height in pixels, default 512 |
| preset | string | no | A saved QR style (its id from get_workspace qrStyles); color, background and logo still override it |
| color | string | no | Code colour as hex, e.g. 1f2937 |
| background | string | no | Background colour as hex, e.g. ffffff |
| logo | boolean | no | Put the app icon in the middle (default: the workspace setting) |
| track | boolean | no | Add utm_source=qr so scans count as the qr channel (default true) |
Read-only. Every live link of one campaign as print-ready QR codes in one ZIP (one file per link, <slug>-qr.svg or .png, sorted
| Parameter | Type | Required | Notes |
|---|---|---|---|
| campaign | string | yes | The links' campaign name, e.g. diwali_sale (case-insensitive, as in the dashboard's links filter) |
| format | string | no | svg (default) or png |
| size | integer | no | Width and height in pixels (default 1024; PNG at most 1024) |
| preset | string | no | A saved QR style (its id from get_workspace qrStyles); color, background and logo still override it |
| color | string | no | Code colour as hex, overrides the style |
| background | string | no | Background colour as hex, overrides the style |
| logo | boolean | no | Put the app icon in the middle, overrides the style |
| track | boolean | no | Add utm_source=qr so scans count as the qr channel (default true) |
Read-only. Compares two periods: taps, app opens, installs, conversions and revenue now against before, with the change and the
| Parameter | Type | Required | Notes |
|---|---|---|---|
| compareFrom | string | no | Start of the period to compare against; default: just before from |
| compareTo | string | no | End of the period to compare against; default: from |
| link | string | no | Only this link (slug) |
| group | string | no | Also compare row by row |
| limit | integer | no | Rows to compare with group, default 10 |
Read-only. The workspace's top links over a date range, ranked by taps, app opens, installs or conversions, with each link's
| Parameter | Type | Required | Notes |
|---|---|---|---|
| by | string | no | What to rank by, default taps |
| limit | integer | no | Links to return, default 10 |
Read-only. Recent individual taps, newest first: when, which link, platform, channel, in-app browser, where Strait sent it
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | no | Only taps on this link |
| limit | integer | no | Taps to return, default 20 |
Read-only. Recent conversion and revenue events (from the SDKs' track calls or record_event), newest first: name, value,
| Parameter | Type | Required | Notes |
|---|---|---|---|
| slug | string | no | Only events attributed to this link |
| limit | integer | no | Events to return, default 20 |
Write. Records one conversion or revenue event from your server side (trusted: sentWith secret_key), the same as POST /v1/event.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| event | string | yes | Event name, e.g. purchase or signup |
| value | number | no | Revenue amount, e.g. 499 |
| currency | string | no | ISO currency, e.g. INR or USD |
| clickId | string | no | The tap this conversion came from |
| linkId | string | no | The link, when there is no clickId |
| eventId | string | no | Idempotency id, e.g. ord_1001 |
| platform | string | no | ios, android or web |
| data | object | no | Up to 20 custom key-values for the app.event webhook (not stored with the event) |
| confirm | boolean | no | true to record it; omit or false to preview |
Read-only. The workspace's custom link domains (e.g. links.hilltop.example) with each one's status (pending_dns until the DNS
No parameter schema on file.
Write. Adds a custom link domain (a subdomain you own, e.g. links.hilltop.example) and returns the DNS records to add at your DNS
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hostname | string | yes | A subdomain you own, such as links.hilltop.example |
| confirm | boolean | no | true to add it; omit or false to preview |
Write. Removes a custom link domain: links stop working on it at once (they keep working on the workspace's strait.link address).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| hostname | string | yes | A subdomain you own, such as links.hilltop.example |
| confirm | boolean | no | true to remove it; omit or false to preview |
Read-only. The workspace's webhooks: id, receiver site (the host only: receiver URLs often carry a secret), the events each one
No parameter schema on file.
Read-only. Checks any deep link, from any vendor (a Firebase Dynamic Link on page.link, Branch app.link, a Strait link, a plain
| Parameter | Type | Required | Notes |
|---|---|---|---|
| url | string | yes | The full link, e.g. https://hilltop.page.link/abc |
Search the Strait documentation (SDK setup for React Native / Expo, Flutter, Android, iOS, Unity, web and Node; App Links and
| Parameter | Type | Required | Notes |
|---|---|---|---|
| query | string | yes | — |
| limit | integer | no | Sections to return, default 4 |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Strait or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | minimal | capability blast radius (minimal) — client exposure if the model is manipulated | −0 |
| verification-discount | source | publisher verification (provenance) — cryptographic build provenance ties the artifact to its source | −0 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
No tools were enumerated, so prompt-injection, capability and toxic-flow analysis had no tool surface to inspect. To grade a package’s real runtime tools, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. minimal is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| No per-tool rows for this release — see the note below. | ||
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.7.0. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
- The version this listing was on when mcprush began following its releases. The registry was not asked when it shipped, so this row carries no date.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Strait can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.