Skip to main content
Glama
bulatko

vk-mcp-server

by bulatko

Upload a photo for a post

vk_photos_upload_wall

Upload a photo from a URL or local file path to VK, running the three-step upload to return an attachment string for attaching to wall posts.

Instructions

Upload a photo so it can be attached to a post. Takes a URL or a local file path, runs VK's three-step upload, and returns an attachment string like photo-1_2 to pass to vk_wall_post or vk_wall_edit. group_id is positive here, without the minus sign. Needs a full user token: VK refuses a community token here (error 27), and has no other way for one to attach a photo to a post.

Input Schema

NameRequiredDescriptionDefault
imageYesImage URL (http/https) or absolute local file path
captionNoPhoto caption
group_idNoCommunity ID or its short name (e.g. apiclub). Positive and without the minus sign — the minus belongs to owner_id on a wall, not here.

Output Schema

NameRequiredDescriptionDefault
idNoPhoto ID
owner_idNoOwner of the uploaded photo
attachmentYesAttachment string such as photo-1_2, ready to pass to vk_wall_post

Schema Changelog

Changes observed during successful MCP inspections.

  1. Addedv0.6.1

TDQS

A4.5/5.0
Behavior5/5

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

Goes well beyond the annotations: it discloses the three-step VK upload, the returned attachment-string format (photo-1_2), the auth constraint (community tokens rejected with error 27), and the group_id sign convention. These are non-obvious operational facts the annotations (readOnly=false, openWorld=true) do not convey.

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 dense sentences, front-loaded with purpose, then the return value, chaining target, parameter nuance, and auth caveat. No filler; every clause carries information.

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?

Despite an output schema existing, the description still clarifies the returned attachment string's purpose and destination, plus the auth requirement and sign convention. Nothing needed to invoke it correctly is missing.

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 schema already documents image (URL or local path), caption, and the positive group_id convention. The description largely restates the schema's group_id note rather than adding syntax or format detail, so baseline 3 is appropriate.

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 a specific verb+resource ('Upload a photo so it can be attached to a post') and differentiates from siblings by naming the downstream consumers (vk_wall_post, vk_wall_edit) and its role as a pre-step. An agent can distinguish it from vk_stories_post_photo without opening the schema.

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?

Clearly describes the workflow context: upload, then pass the returned attachment string to vk_wall_post or vk_wall_edit, and warns that a full user token is required (error 27). It gives strong positive guidance but does not explicitly exclude alternatives such as vk_stories_post_photo, leaving that routing to inference.

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