mcp-tools

mcp-tools is a cursor rule for Cursor from aamar-shahzad/mcp-screenshot-server. It costs 0 tokens per session (631 once invoked), scanned A, original, MIT.

Coding rules for building MCP tools in a screenshot server. MCP is a standard way for assistants to call external tools; these rules cover return values, input checks, and shared helper functions.

In plain words
What is it for?
Use them when adding or changing screenshot-server tools, especially their result models, parameter constraints, and internal image helpers.
Why use it?
They prevent inconsistent tool responses, invalid numeric inputs, and duplicated image-handling code.

Cursor rule for Cursor

Written for Cursor: installed under .cursor/.

Good fit Use them when adding or changing screenshot-server tools, especially their result models, parameter constraints, and internal image helpers.

Compare 6 cursor rules from other repositories ↓
Install with agentmods
npx agentmods add rules/aamar-shahzad/mcp-screenshot-server/mcp-tools
Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Clone the repo
git clone --depth 1 https://github.com/aamar-shahzad/mcp-screenshot-server

Made for: Cursor.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for mcp-tools

README.md
[![agentmods](https://agentmods.dev/badge/rules/aamar-shahzad/mcp-screenshot-server/mcp-tools/github.svg)](https://agentmods.dev/rules/aamar-shahzad/mcp-screenshot-server/mcp-tools)
Your own site
<a href="https://agentmods.dev/rules/aamar-shahzad/mcp-screenshot-server/mcp-tools"><img src="https://agentmods.dev/badge/rules/aamar-shahzad/mcp-screenshot-server/mcp-tools/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for mcp-tools

Your own site · 80×15
<a href="https://agentmods.dev/rules/aamar-shahzad/mcp-screenshot-server/mcp-tools"><img src="https://agentmods.dev/badge/rules/aamar-shahzad/mcp-screenshot-server/mcp-tools.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 0 Nothing until a file matches its globs; then the whole rule loads.
When invoked 631 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00000 $0.00631
Opus 5 $0.00000 $0.00316
Sonnet 5 $0.00000 $0.00126
Haiku 4.5 $0.00000 $0.00063

Measured 9d ago against content hash b49754af95c4, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-09, from the pricing page.

Security

Grade A, and why

mcp-tools scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.cursor/rules/mcp-tools.mdc · 80 lines

How it starts

The opening of the file, as written. The whole thing — 80 lines — stays where its author put it; the contents beside it link to each section on GitHub.

MCP Tool Authoring Rules

Return Types

All MCP tool functions must return Pydantic BaseModel subclasses, never bare dict[str, ...].

Good:

class DeleteResult(BaseModel):
    message: str = Field(description="Status message")

@mcp.tool()
def delete_image(image_id: str) -> DeleteResult:
    return DeleteResult(message="Deleted")

Bad:

@mcp.tool()
def delete_image(image_id: str) -> dict[str, str]:
    return {"message": "Deleted"}

Input Validation

All numeric parameters with documented ranges must include Pydantic Field constraints:

opacity: Annotated[int, Field(ge=0, le=255, description="Opacity (0-255)")] = 100
font_size: Annotated[int, Field(gt=0, description="Font size")] = 24
quality: Annotated[int, Field(ge=1, le=100, description="JPEG quality")] = 95

Private Helpers

Use existing private helpers instead of duplicating code:

  • _get_font(size) - Cross-platform font resolution
  • _get_image(image_id) - Retrieve image from store with error handling
  • _store_image(image, image_id, save_history) - Store image with undo history
  • _parse_position(pos, ...) - Parse named/percentage/pixel positions
  • _auto_adjust_position(...) - Keep annotations within bounds

Imports

All imports must be at the top of the file. No inline imports inside functions except for platform-specific imports that may fail (e.g., ImageGrab on Linux without display).

Parameter Naming

Do not shadow Python builtins. Use descriptive names:

  • annotation_type instead of type
  • image_format instead of format

Global State

Global state is managed in the storage module. Use the provided functions instead of accessing globals directly:

  • store_image(image, image_id, save_history) - Store image with undo history
  • get_image(image_id) - Retrieve image from store
  • get_next_callout_number() - Get and increment callout counter
  • reset_callout_counter() - Reset callout counter to 0
  • configure_limits(max_images, max_memory_mb, undo_levels) - Configure memory limits
  • get_limits() - Get current limits
  • get_total_memory_mb() - Get current memory usage

Read the full file on GitHub · 80 lines

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 9d ago First seen · 80 lines · 0 tokens per session scan A b49754af95c4

Subscribe to this mod's changes

mcp-tools is a cursor rule published in the GitHub repository aamar-shahzad/mcp-screenshot-server (4 stars, last pushed 6mo ago), licensed MIT. It costs nothing until one of its globs matches a file; then it loads 631 tokens. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.