ViewPrinter
REMOTE · VIEWPRINTER.TECH · SCANNED SEP 20
Schedule social posts to TikTok, Instagram, Facebook, YouTube and X; manage accounts and media
Available components
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 → Why this is hard to score →
Endpoint Security92
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. View diagnostics → Pass
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
- The authorisation server supports Client ID Metadata Documents, the current MCP client-registration mechanism. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability76
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2333 tokens (~129/item across 18 items; 18 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 Management13
- Stability observed for 4 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage97
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 89% of tool parameters carry a description.Partial
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 2 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 19 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
How do I install the ViewPrinter MCP server?
ViewPrinter is a hosted endpoint at https://viewprinter.tech/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · viewprinter.tech
claude mcp add --transport http tech-viewprinter-viewprinter 'https://viewprinter.tech/api/mcp'
{
"mcpServers": {
"tech-viewprinter-viewprinter": {
"url": "https://viewprinter.tech/api/mcp"
}
}
} {
"servers": {
"tech-viewprinter-viewprinter": {
"type": "http",
"url": "https://viewprinter.tech/api/mcp"
}
}
} [mcp_servers.tech-viewprinter-viewprinter] url = "https://viewprinter.tech/api/mcp"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"tech-viewprinter-viewprinter": {
"type": "remote",
"url": "https://viewprinter.tech/api/mcp",
"enabled": true
}
}
} openclaw mcp add tech-viewprinter-viewprinter --url 'https://viewprinter.tech/api/mcp' --transport streamable-http
mcp_servers:
tech-viewprinter-viewprinter:
url: "https://viewprinter.tech/api/mcp" {
"McpServers": {
"tech-viewprinter-viewprinter": {
"Transport": "http",
"Url": "https://viewprinter.tech/api/mcp"
}
}
} assistant mcp add tech-viewprinter-viewprinter -t streamable-http -u 'https://viewprinter.tech/api/mcp'
{
"mcpServers": {
"tech-viewprinter-viewprinter": {
"type": "http",
"url": "https://viewprinter.tech/api/mcp"
}
}
} The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.
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.
- 19 Sept 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 7 to 10. That category is still filling its 30-day observation window: 2 days of observed history at the previous scan, 3 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Sept 26 0
- The server rewrote its instructions, which are the text every model session reads security
- Tool “posts_update” rewrote its description, which is the text the model reads security
- Stability: unverified → 0.03 ▲ functional
- Server version: 0.1.0 → 1.0.0 functional
- 16 Sept 26 +42
- Transport: unverified → pass ▲ security
- Injection markers: unverified → pass ▲ security
- First check of Judged manipulation: pass security
- Authorization: Authorisation is enforced on tool calls, advertised via RFC 9728 protected-resource metadata. Discovery is public, which costs nothing: no tool can be invoked without a token. security
- MCP protocol: unverified → pass ▲ functional
- Tool coverage: unverified → 100 ▲ functional
- First check of Schema quality: fail functional
- First check of Tool coverage: 89 functional
- First check of Schema quality: excellent functional
- First check of Schema quality: fail functional
- First check of Destructive annotations: 100 functional
- First check of Tool coverage: 100 functional
- 1 Sept 26 37
First indexed and scored.
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 20 Sept 2026 · Probed https://viewprinter.tech/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=viewprinter.tech | CN=Amazon RSA 2048 M04,O=Amazon,C=US | 26 Aug 2026 | 11 Mar 2027 | RSA 2048 | SHA256-RSA | 89976d1ead6712d567b13243feb9f6c |
| SANs: viewprinter.tech | ||||||
| CN=Amazon RSA 2048 M04,O=Amazon,C=US (CA) | CN=Amazon Root CA 1,O=Amazon,C=US | 23 Aug 2022 | 23 Aug 2030 | RSA 2048 | SHA256-RSA | 773124f2a952e3ed18a58bdb85d1bc0ce5f27 |
| CN=Amazon Root CA 1,O=Amazon,C=US (CA) | CN=Starfield Services Root Certificate Authority - G2,O=Starfield Technologies\, Inc.,L=Scottsdale,ST=Arizona,C=US | 25 May 2015 | 31 Dec 2037 | RSA 2048 | SHA256-RSA | 67f944a2a27cdf3fac2ae2b01f908eeb9c4c6 |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of viewprinter.tech. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| tech. | present | 2185 | 13 | Verified |
| viewprinter.tech. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication Enforced and verified
The endpoint asked for a token and published valid RFC 9728 metadata describing how to get one.
| Result | Enforced and verified |
|---|---|
| Enforced | On tool calls |
| HTTP status | 200 |
WWW-Authenticate challenge Bearer resource_metadata="https://viewprinter.tech/.well-known/oauth-protected-resource/api/mcp", scope="mcp:tools"
Bearer resource_metadata="https://viewprinter.tech/.well-known/oauth-protected-resource/api/mcp", scope="mcp:tools" Protected resource metadata
| Document | https://viewprinter.tech/.well-known/oauth-protected-resource/api/mcp |
|---|---|
| Retrieved | Yes |
| Resource | https://viewprinter.tech/api/mcp |
| Authorisation server | https://viewprinter.tech/api/auth |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://viewprinter.tech/api/mcp | Verified | 200 | |
| http (plaintext) | http://viewprinter.tech/api/mcp | HTTPS enforced | 301 | https://viewprinter.tech:443/api/mcp |
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. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
accounts_connect Connect a social account ~68
Connect a social account. Opens the platform in the person's browser so they can sign in and approve access — that part cannot happen here, because it needs their session and their consent. Call it again after they finish and it reports the connected account.
| Name | Type | Req | Description |
|---|---|---|---|
| platform | string | yes | Which platform to connect. |
| Name | Type | Req | Description |
|---|---|---|---|
| connected | array | yes | – |
| platform | string | yes | – |
| status | string | yes | – |
| url | string | – | – |
No examples provided.
accounts_list List connected accounts ~58
List every social account you can post to, across all your workspaces. Each account includes the workspace it belongs to and any groups it is in. Use the returned ids to name post destinations explicitly, or a group name to name several at once.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| accounts | array | yes | – |
No examples provided.
accounts_performance Read account performance ~123
How each connected account is performing: followers, posts, total likes and following, each with how far it has moved over the period. Ordered by followers, largest first. Numbers are as of the last sweep rather than live — every account carries the time it was measured, and an account nobody has measured yet has no metrics at all rather than zeroes.
| Name | Type | Req | Description |
|---|---|---|---|
| period | string | – | The window every change is measured over. Defaults to 24h. A change is the difference against the last observation before the window opened, so it is null when there was none. |
| Name | Type | Req | Description |
|---|---|---|---|
| accounts | array | yes | – |
No examples provided.
groups_create Create an account group ~113
Name a set of accounts. Afterwards posts_schedule can take the name instead of every id. The name is how it is addressed, so it has to be unique in the workspace and is matched without regard to case. All the accounts must be in one workspace.
| Name | Type | Req | Description |
|---|---|---|---|
| account_ids | array | yes | The accounts to put in it, from accounts_list. |
| description | string | – | What it is for, so it can be chosen without reading it. |
| name | string | yes | What to call it. Unique per workspace. |
| Name | Type | Req | Description |
|---|---|---|---|
| group | object | yes | – |
No examples provided.
groups_delete Delete an account group ~65
Remove a group. The accounts in it are not touched and stay connected — only the name and its membership go. Posts already scheduled through it are unaffected, because a post records the accounts rather than the group.
| Name | Type | Req | Description |
|---|---|---|---|
| name | string | yes | The group to remove, from groups_list. |
| Name | Type | Req | Description |
|---|---|---|---|
| deleted | string | yes | – |
No examples provided.
groups_list List account groups ~68
Your named sets of accounts. Each group lists its members with the state of each, and how many of them need reconnecting — a post naming a group is refused outright if any member cannot publish, so check here before composing one. Use a group name with posts_schedule instead of listing account ids.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| groups | array | yes | – |
No examples provided.
groups_update Change an account group ~108
Rename a group, re-describe it, or change who is in it. account_ids is the full membership afterwards, not a list to add: whatever is sent replaces what was there. Omit it to leave the members alone.
| Name | Type | Req | Description |
|---|---|---|---|
| account_ids | array | – | Replaces the membership entirely. Omit to leave it. |
| description | string | – | – |
| name | string | yes | The group to change, from groups_list. |
| new_name | string | – | Rename it to this. |
| Name | Type | Req | Description |
|---|---|---|---|
| group | object | yes | – |
No examples provided.
media_confirm Confirm a media upload ~102
Record a file that finished uploading. Its size and type are read back from storage rather than taken on trust. Safe to call again if the first response was lost.
| Name | Type | Req | Description |
|---|---|---|---|
| description | string | – | What the file shows, if you already know. Kept as the file is recorded; use media_update to change it later. Confirming again never overwrites one already written. |
| id | string | yes | The id media_upload returned. |
| kind | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| media | object | yes | – |
No examples provided.
media_delete Delete a file ~38
Remove a file and its stored bytes. This cannot be undone, and any post still using it will lose it.
| Name | Type | Req | Description |
|---|---|---|---|
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| deleted | boolean | yes | – |
No examples provided.
media_list List uploaded media ~29
Every file uploaded in your workspaces, newest first. Use these ids when attaching media to a post.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| media | array | yes | – |
No examples provided.
media_update Describe a file ~114
Say what a file shows, in your own words. On a base image this is who is on camera — "a woman in her early twenties, blonde hair in a loose bun" — and a campaign reads it so the same person appears in every render instead of changing between them. Send null to clear it. Nothing else about a file can be changed here; what it is was read from the file itself.
| Name | Type | Req | Description |
|---|---|---|---|
| description | – | yes | The words, or null to remove the ones already there. |
| id | string | yes | – |
| Name | Type | Req | Description |
|---|---|---|---|
| media | object | yes | – |
No examples provided.
media_upload Start a media upload ~87
Reserve an id and get a short-lived URL to PUT the file to. The bytes go straight to storage, not through this API. Call media_confirm with the same id once the PUT succeeds — nothing is recorded until then.
| Name | Type | Req | Description |
|---|---|---|---|
| kind | string | yes | What the file is. |
| mime_type | string | yes | The exact Content-Type the PUT will send, e.g. video/mp4. |
| Name | Type | Req | Description |
|---|---|---|---|
| expires_in_seconds | number | yes | – |
| id | string | yes | – |
| url | string | yes | – |
No examples provided.
platforms_list List platform rules ~135
What each platform accepts. Called with nothing, it lists every platform with the media kinds and counts it takes and its caption limit — enough to decide where a post can go. Name platforms to add their recommended sizes and durations, their options with what each one does, and the quirks that decide how a post is treated. Read this before scheduling rather than discovering the rules by being rejected.
| Name | Type | Req | Description |
|---|---|---|---|
| platforms | array | – | Which platforms to describe in full. Omit for a short answer covering all of them. Naming only the platforms you are posting to keeps the reply small — full detail for all of them is several times th… |
| Name | Type | Req | Description |
|---|---|---|---|
| platforms | array | yes | – |
No examples provided.
posts_cancel Cancel a post ~56
Stop a post before it goes out. Destinations that have not started are cancelled; any already being published cannot be recalled and are returned in still_going. Safe to call again.
| Name | Type | Req | Description |
|---|---|---|---|
| post_id | string | yes | From posts_list. |
| Name | Type | Req | Description |
|---|---|---|---|
| cancelled | number | yes | How many destinations were stopped before they started. |
| post_id | string | yes | – |
| still_going | array | yes | Destinations already in flight, which cannot be stopped. |
No examples provided.
posts_list List posts ~57
Posts in your workspaces, newest first, each with the state of every destination it was sent to. Call it to check whether something published, and before changing or cancelling anything — posts_update and posts_cancel both take a post_id from here.
Input schema present but exposes no named parameters.
| Name | Type | Req | Description |
|---|---|---|---|
| posts | array | yes | – |
No examples provided.
posts_performance Read post performance ~225
How published posts are performing, one row per destination: views, likes, comments, shares and saves, each with how far it has moved over the period. Best first, so the default answers "what did well" in one call rather than by listing everything. Sort by change instead to find what is moving now. Numbers are as of the last sweep, and every row carries the time it was measured — a delivery nobody has measured yet has no metrics at all rather than zeroes, and sorts last.
| Name | Type | Req | Description |
|---|---|---|---|
| by | string | – | Rank by the running total, or by how much it moved over the period. Defaults to the total. A post with no observation in the window has no change and sorts last either way. |
| limit | integer | – | How many to return. Defaults to 10. Ask for more only when you need them — every row carries its post and account. |
| period | string | – | The window a change is measured over. Defaults to 24h. |
| sort_by | string | – | Which counter to rank by. Defaults to views. |
| Name | Type | Req | Description |
|---|---|---|---|
| posts | array | yes | – |
No examples provided.
posts_schedule Schedule a post ~420
Create a post and queue it for every account named. Pass draft true to hold it here instead, sending nothing until posts_update promotes it. Name accounts with ids from accounts_list, or name a group from groups_list and get all of its members — the two combine, and a group is expanded now, so adding an account to it later does not add it to this post. Accounts must all be in one workspace. Attach media by id from media_list; a post is either a video or a set of images, never both. Omit scheduled_at to send as soon as possible. Nothing publishes yet: this records the intent. Publishing has to be enabled on the account; where it is not, this saves nothing at all and says so. Do not tell anyone their post is saved or scheduled until this has returned successfully.
| Name | Type | Req | Description |
|---|---|---|---|
| account_ids | array | – | Which accounts to post to, from accounts_list. Optional when groups is given; naming neither is refused. |
| content | string | – | The caption. |
| draft | boolean | – | Hold the post here instead of sending it. Nothing is queued and nothing reaches any platform; use posts_update with draft false to send it. Unrelated to the per-platform draft option, which uploads t… |
| groups | array | – | Group names from groups_list, expanded to their members and combined with account_ids. Matched without regard to case. |
| idempotency_key | string | – | Reuse on retry to avoid posting twice; returns the original post. |
| media_ids | array | – | Files to attach, in order. Order is the slideshow order. |
| platform_options | object | – | Per-platform settings, keyed by platform. Only the keys shown are accepted — an unknown key is refused rather than ignored. The names, types and accepted values are here; call platforms_list for what… |
| scheduled_at | string | – | ISO 8601. Omit to send as soon as possible. |
| Name | Type | Req | Description |
|---|---|---|---|
| post | object | yes | – |
No examples provided.
posts_update Change a post ~378
Change a post that has not gone out yet: its caption, its time, its destinations, or whether it is a draft. Editing is always allowed; sending a draft needs publishing enabled on the account, and where it is not the draft is left exactly as it was. This is what sends a draft — pass draft false, and it is queued using scheduled_at (or immediately if that is empty). Destinations can be named as account ids, group names from groups_list, or both — a group is expanded now, so it is a shorthand for its members rather than a live link to it. Changing the time re-aims delivery, so there is no separate publish step. This is also how a failed destination is sent again: set scheduled_at, and every destination that failed is queued again while the ones that already published are left alone — fix what made them fail first, usually by reconnecting the account. The caption and the destinations can only be changed while nothing has published yet; after that the time is still editable, and changing the words means a new post.
| Name | Type | Req | Description |
|---|---|---|---|
| account_ids | array | – | Replaces the destination list entirely — send every account you want, not just the new ones. All must be in the post's workspace. |
| content | string | – | Replaces the caption. |
| draft | boolean | – | False promotes a draft and sends it. True returns a scheduled post to draft, cancelling its delivery. |
| groups | array | – | Group names, expanded to their members and combined with account_ids. Together they replace the destination list, so naming only a group drops any account outside it. |
| post_id | string | yes | The post to change, from posts_list. |
| scheduled_at | string | – | ISO 8601. Replaces the time. A time in the past sends as soon as possible. |
| Name | Type | Req | Description |
|---|---|---|---|
| post | object | yes | – |
No examples provided.
What is the ViewPrinter MCP server?
ViewPrinter is an MCP server listed in the public MCP registry as tech.viewprinter/viewprinter. Schedule social posts to TikTok, Instagram, Facebook, YouTube and X; manage accounts and media. This page covers its hosted endpoint (https://viewprinter.tech/api/mcp).
Is the ViewPrinter MCP server safe to use?
ViewPrinter scores 80 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the ViewPrinter MCP server expose?
ViewPrinter exposes 18 tools: platforms_list, accounts_list, accounts_performance, posts_performance, accounts_connect, and 13 more. Their descriptions and schemas cost roughly 2,244 tokens of context every time the server is loaded.
Does the ViewPrinter MCP server require authentication?
Yes. ViewPrinter asked us for credentials when we connected, so you will need to authorise it in your MCP client before it can do anything.
Is the ViewPrinter MCP server still maintained?
ViewPrinter is still listed as active in the MCP registry. We last reached this channel on 20 September 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.