Google Search Console integration for Model Context Protocol (MCP)
Markaestro 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
Schedule, publish, and review social posts and analytics for a Markaestro brand.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --env 'MARKAESTRO_API_KEY=${MARKAESTRO_API_KEY}' --transport stdio markaestro-mcp '--' npx -y @markaestro/mcp
# 2 — ask your agent for something these tools do
# list_products, list_destinations, get_brand_profile and 30 more
It needs MARKAESTRO_API_KEY: this reads it from your environment, so export it first.
Markaestro costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
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. Claude Code reads MARKAESTRO_API_KEY (Workspace API key (mk_live_ or mk_test_) from Settings, API Access. Covers one brand or all brands in the workspace) from your environment each time it starts the server, so the value stays out of its config: export it in your shell profile (macOS, Linux), or run setx MARKAESTRO_API_KEY … and open a new terminal (Windows). The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user --env 'MARKAESTRO_API_KEY=${MARKAESTRO_API_KEY}' --transport stdio markaestro-mcp '--' npx -y @markaestro/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
Its publisher also runs it at https://markaestro.com/api/public/v1/mcp: nothing to start on your machine, and this marketplace is not in the path.
claude mcp add --scope user --transport http markaestro-mcp https://markaestro.com/api/public/v1/mcpIt reaches a system of yours, so it needs your own credential rather than the publisher’s: MARKAESTRO_API_KEY — Workspace API key (mk_live_ or mk_test_) from Settings, API Access. Covers one brand or all brands in the workspace.. You set it in your own client’s config, on your machine — this marketplace never holds it.
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.
33 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.
List the brands (products) this connection can act on, with their connected channels: one brand for a single-brand connection, every brand in the workspace for an all-brands one. Call this first to learn each productId and which channels can be posted to.
No parameter schema on file.
List the publishable destinations (Facebook Page, Instagram account, TikTok account, ...) of a brand, with their ids and delivery modes. Use a destinationId on create_post only when a channel has more than one destination.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| productId | string | yes | Brand id from list_products |
A brand's description, website, categories, voice, and visual identity as set in Markaestro. Read it before writing captions so they sound like the brand. Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| productId | string | yes | Brand id from list_products |
List posts, newest first. Filter by status: draft, scheduled, publishing, published, platform_action_required, failed, partial_failed. On an all-brands connection, pass productId to list one brand. Use cursor from a previous page to continue.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| productId | string | no | Brand id from list_products. Required when this connection covers all brands in the workspace; a single-brand connection always uses its own brand and may omit it. |
| status | string | no | — |
| limit | integer | no | Default 25, max 100 |
| cursor | string | no | — |
Fetch one post with its targets, status, media, schedule, publish results, and live URL when published.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| postId | string | yes | — |
Change a draft or scheduled post: its caption, its media, one channel's settings (settings.__type names the channel), or, for a scheduled post, its time. Omitted fields stay as they are. Every change is checked against the rules of every channel the post targets, and a scheduled post must still be…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| postId | string | yes | — |
| caption | string | no | — |
| mediaAssetIds | array | no | Replaces the post's media, in display order |
| settings | object | no | One channel's platform settings, with __type equal to that channel |
| scheduledAt | string | no | New time for a scheduled post |
Create a post for this brand. Without scheduledAt the post is saved as a DRAFT and nothing is published; with scheduledAt it is scheduled and the worker publishes it at that time. Pass either a single channel or a targets array (one entry per channel). Upload media first with upload_media and pass…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| productId | string | no | Brand id from list_products. Required when this connection covers all brands in the workspace; a single-brand connection always uses its own brand and may omit it. |
| caption | string | no | Post text. Required on linkedin. |
| channel | string | no | Single channel. Mutually exclusive with targets. |
| targets | array | no | Several channels at once, each with its own destination and delivery mode. |
| mediaAssetIds | array | no | Asset ids from upload_media or list_media, in display order. |
| scheduledAt | string | no | Omit to save a draft. |
| destinationId | string | no | For the single-channel form, when the brand has several destinations on that channel. |
| deliveryMode | string | no | direct_publish: official platform API. manual_reminder: a timed reminder for a person to post natively (default on facebook, instagram, tiktok). platform_inbox: TikTok inbox handoff. Required when sch |
| settings | object | no | Platform settings for the single-channel form; __type must equal channel. |
Queue an immediate publish of a draft post. Returns a job run; poll get_job_run until status is succeeded or failed. For manual_reminder targets this queues a reminder for a person instead of calling the platform. The post goes public on the platform as soon as the run succeeds.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| postId | string | yes | — |
Record that a person has posted a manual-reminder or TikTok-inbox post natively, which moves it from platform_action_required to published. Only for posts in platform_action_required that the user has already posted themselves. Nothing is sent to any platform.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| postId | string | yes | — |
| externalUrl | string | no | Link to the live post, if the user has it |
Delete a draft, or cancel a scheduled, failed, or waiting-to-be-posted post before it reaches any platform. Published posts cannot be deleted or taken down from here: that stays with the user in Markaestro. Posts mid-publish cannot be deleted until the run settles.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| postId | string | yes | A Markaestro post id |
Apply one action to up to 25 posts: reschedule (needs scheduledAt), or status (draft or scheduled). Per-post failures are reported individually. To remove posts, use delete_post on each draft.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| ids | array | yes | — |
| action | string | yes | — |
| scheduledAt | string | no | Required for reschedule |
| status | string | no | Required for the status action |
Create up to 25 posts in one call, for example a week of scheduled content. Each item takes the same fields as create_post. Failures are per item: the response lists ok/error for each, and the successful ones are created even when others fail.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| posts | array | yes | — |
Check whether a published post has mature measured performance and get a recommended Evergreen cadence. This does not create or schedule anything.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sourcePostId | string | yes | — |
List this brand's Intelligent Evergreen queues and their activation evidence, cadence, next run, and status.
No parameter schema on file.
Get one Intelligent Evergreen queue including its caption variants.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| queueId | string | yes | — |
Create a draft Evergreen queue from an eligible published post. Creation does not activate it or schedule anything; activate_evergreen_queue does that separately.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| sourcePostId | string | yes | — |
| productId | string | no | Brand id from list_products. Required when this connection covers all brands in the workspace; a single-brand connection always uses its own brand and may omit it. |
| name | string | yes | — |
| channels | array | no | — |
| intervalDays | integer | no | — |
| timeZone | string | no | — |
| localHour | integer | no | — |
| localMinute | integer | no | — |
| scheduleMode | string | no | — |
| reviewPolicy | string | no | — |
| expiresAt | string | no | ISO 8601 UTC timestamp, for example 2026-09-10T14:00:00Z |
| variants | array | yes | — |
| contentConfirmed | boolean | no | True records that the user has reviewed every caption variant and confirmed the captions are accurate and still true. Activating or resuming a queue requires this confirmation. |
Update a queue's cadence, review policy, expiry, name, or full caption-variant set. Pass the current version from get_evergreen_queue; a stale version is rejected so concurrent edits are not overwritten.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| queueId | string | yes | — |
| version | integer | yes | — |
| name | string | no | — |
| intervalDays | integer | no | — |
| timeZone | string | no | — |
| localHour | integer | no | — |
| localMinute | integer | no | — |
| scheduleMode | string | no | — |
| reviewPolicy | string | no | — |
| expiresAt | string | no | ISO 8601 UTC timestamp, for example 2026-09-10T14:00:00Z |
| variants | array | no | — |
| contentConfirmed | boolean | no | True records that the user has reviewed every caption variant and confirmed the captions are accurate and still true. Activating or resuming a queue requires this confirmation. |
Activate a draft or paused queue. This schedules future public posts. The user must have confirmed the caption variants (contentConfirmed on create_evergreen_queue or update_evergreen_queue); otherwise this answers EVERGREEN_CONTENT_REVIEW_REQUIRED.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| queueId | string | yes | — |
Pause a queue and unschedule any pending occurrence generated by it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| queueId | string | yes | — |
Resume a paused queue and compute its next occurrence from the current time.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| queueId | string | yes | — |
List the generated occurrences and evaluation outcomes for a queue.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| queueId | string | yes | — |
Get source metrics, queue-lifetime metrics, tracked clicks, attributed conversions, and recent run outcomes. Unavailable provider metrics are null, not zero.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| queueId | string | yes | — |
Performance over a window for the connection's brand, or on an all-brands connection for the workspace or the one brand named by productId: totals with the prior period for deltas, per-channel rollups, daily series, engagement breakdown, follower trend, top posts, posting-time heatmap,…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| days | integer | no | Preset window ending today (UTC); default 28 |
| since | string | no | Explicit range start, YYYY-MM-DD (UTC); needs until |
| until | string | no | Explicit range end, YYYY-MM-DD (UTC), inclusive |
| channel | string | no | Restrict every number to one channel |
| source | string | no | Only posts published through Markaestro, or only posts published directly on the platform; omit for the whole account |
| tz | integer | no | Viewer timezone offset in minutes east of UTC; shapes the heatmap only |
| productId | string | no | One brand, on an all-brands connection; omit for the whole workspace. A single-brand connection always reports its own brand. |
Every post in the window (the connection's brand, or on an all-brands connection the workspace or the brand named by productId) with its latest metrics (views, reach, likes, comments, shares, saves, clicks, engagements, engagement rate), one row per post, sorted. Includes posts published directly…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| days | integer | no | Preset window ending today (UTC); default 28 |
| since | string | no | Explicit range start, YYYY-MM-DD (UTC); needs until |
| until | string | no | Explicit range end, YYYY-MM-DD (UTC), inclusive |
| channel | string | no | — |
| source | string | no | Only posts published through Markaestro, or only posts published directly on the platform; omit for the whole account |
| sort | string | no | Descending; default published_at |
| limit | integer | no | Default 100 |
| productId | string | no | One brand, on an all-brands connection; omit for the whole workspace. A single-brand connection always reports its own brand. |
How one post earned its numbers over time: the metric snapshots taken 1h, 6h, 24h, 72h, 7d, 14d, 30d, 60d, and 90d after publish (a post published directly on the platform starts with a discovered snapshot), with the growth between stages, plus the current totals and whether polling is still…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| postId | string | yes | — |
Pull live metrics from the platforms now instead of waiting for the next scheduled poll: posts in the window (optionally one channel, or one brand on an all-brands connection) and today's follower counts. The answer says how many posts were updated and how many remain, since a large window may…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| days | integer | no | Window ending now; default 28 |
| channel | string | no | — |
| productId | string | no | One brand, on an all-brands connection |
When this brand's audience responds best, learned by Markaestro Intelligence from the brand's own post history (not an industry table). timing is null until there is enough history; readiness says how much there is. Use it to pick scheduledAt. Needs a plan with Intelligence.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| productId | string | no | Required on an all-brands connection; a single-brand connection uses its own brand |
List uploaded media assets with their ids, type, dimensions, and how many posts reference them.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| type | string | no | — |
| limit | integer | no | — |
| cursor | string | no | — |
Fetch one media asset: type, dimensions, processing state, thumbnail, and how many posts reference it.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| assetId | string | yes | — |
Check the status of a publish run returned by publish_post: queued, running, succeeded, or failed, with the message and details.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| runId | string | yes | — |
List recent publish runs, optionally filtered by status or by the post id (resourceId).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| status | string | no | — |
| resourceId | string | no | A post id |
| limit | integer | no | — |
| cursor | string | no | — |
The per-channel media, caption, and delivery-mode rules the API enforces, plus the draft-then-publish model. Read before creating posts.
No parameter schema on file.
The connected TikTok creator's live posting options: allowed privacy levels, whether comments, duets, and stitches can be enabled, and the longest video. TikTok requires a Direct Post to use these, so read them right before building one and pass the chosen privacyLevel in the tiktok settings. Test…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| productId | string | no | On an all-brands connection, the brand whose TikTok account to ask about |
- 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 Markaestro 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 | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| 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.3.3. 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 Markaestro 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.