# image_crop

imagepeek: Crop an image to a box or an aspect ratio. To scale instead use image_resize. Returns the image cropped to a box (left, top, width, height; out of bounds is a 422 crop_out_of_bounds) or to an aspect ratio such as 16:9 placed by gravity (center or a side or corner); the reply carries the applied box. Reads PNG, JPEG, WebP, GIF, TIFF, BMP, ICO and AVIF; other formats and images over 40 megapixels are refused (not charged). Output: base64 data_base64, without EXIF, GPS, XMP or IPTC; over 15 MB or 50 megapixels is a 413 (not charged). Images are not logged; a result is kept only with output "url" (24 h). Typically 0.5-2 s. Price: USD 0.002. Free: 3 imagepeek calls per IP per UTC day. Docs: https://tanod.dev/learn/image-crop-api.html

Agent View of the PolicyLayer registry record for `image_crop`. HTML page: https://policylayer.com/tools/dev-tanod-tanod/image-crop

## Facts

- Tool: `image_crop`
- Server: Tanod (`https://tanod.dev/mcp`) — https://policylayer.com/tools/dev-tanod-tanod.md
- Homepage: https://github.com/https://tanod.dev/mcp
- Risk category: Execute (High risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server CORS policy: *
- Server rate-limited: no
- Parameters: 12
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `top` | object | no | Box mode: top edge in pixels. |
| `url` | object | no | Public http(s) URL of the image (at most 10 MB; private, internal and IP-literal hosts are refused); or use image_base64. |
| `left` | object | no | Box mode: left edge in pixels (give left, top, width and height together, or aspect). |
| `width` | object | no | Box mode: crop width in pixels (1-32768). |
| `aspect` | object | no | Instead of a box, e.g. 16:9, with gravity. |
| `format` | object | no | Output format (default: the input's; ICO in, PNG out). |
| `height` | object | no | Box mode: crop height in pixels (1-32768). |
| `output` | string | no | base64 (default): inline. url: stored for 24 hours; link, metadata. |
| `gravity` | string | no | Aspect mode: the part to keep: center (default), north, south, east, west, northwest, northeast, southwest or southeast. |
| `quality` | object | no | Encoder quality 1-100 (lossy formats). |
| `auto_orient` | boolean | no | Apply the EXIF orientation first. |
| `image_base64` | object | no | The image as standard or url-safe base64 (at most 10 MB decoded; a data:image/...;base64, prefix is fine); or use url. |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "image_crop",
    "arguments": {}
  }
}
```

## Why image_crop is rated High

image_crop triggers real processes with real consequences. An agent gone sideways doesn't fire it once. It starts dozens of builds, sends mass notifications, or burns through compute before anyone looks up.

Risk signals: Accepts URL/endpoint input (url) · High parameter count (12 properties)

## Use case

AI agents invoke image_crop to trigger actions in Tanod. What it does depends on the arguments the agent supplies, and its effects often reach beyond the immediate call: builds kicked off, notifications sent, workflows started.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Tanod:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "image_crop": {
      "limits": [
        {
          "counter": "image_crop_rate",
          "window": "minute",
          "max": 10,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Tanod (307)

- `audit_token_approvals` — Destructive — https://policylayer.com/tools/dev-tanod-tanod/audit-token-approvals.md
- `aurora_forecast` — Destructive — https://policylayer.com/tools/dev-tanod-tanod/aurora-forecast.md
- `diff_text` — Destructive — https://policylayer.com/tools/dev-tanod-tanod/diff-text.md
- `image_metadata` — Destructive — https://policylayer.com/tools/dev-tanod-tanod/image-metadata.md
- `pdf_pipeline` — Destructive — https://policylayer.com/tools/dev-tanod-tanod/pdf-pipeline.md
- `pdf_protect` — Destructive — https://policylayer.com/tools/dev-tanod-tanod/pdf-protect.md
- `pdf_remove_pages` — Destructive — https://policylayer.com/tools/dev-tanod-tanod/pdf-remove-pages.md
- `pdf_reorder_pages` — Destructive — https://policylayer.com/tools/dev-tanod-tanod/pdf-reorder-pages.md
- `build_ics_event` — Execute — https://policylayer.com/tools/dev-tanod-tanod/build-ics-event.md
- `build_pptx_deck` — Execute — https://policylayer.com/tools/dev-tanod-tanod/build-pptx-deck.md
- `build_xlsx_workbook` — Execute — https://policylayer.com/tools/dev-tanod-tanod/build-xlsx-workbook.md
- `bulk_agent_index` — Execute — https://policylayer.com/tools/dev-tanod-tanod/bulk-agent-index.md
- `cron_next_runs` — Execute — https://policylayer.com/tools/dev-tanod-tanod/cron-next-runs.md
- `decode_calldata` — Execute — https://policylayer.com/tools/dev-tanod-tanod/decode-calldata.md
- `expand_rrule` — Execute — https://policylayer.com/tools/dev-tanod-tanod/expand-rrule.md
- `html_to_pdf` — Execute — https://policylayer.com/tools/dev-tanod-tanod/html-to-pdf.md
- `parse_ics` — Execute — https://policylayer.com/tools/dev-tanod-tanod/parse-ics.md
- `parse_phone_number` — Execute — https://policylayer.com/tools/dev-tanod-tanod/parse-phone-number.md
- `parse_rss_feed` — Execute — https://policylayer.com/tools/dev-tanod-tanod/parse-rss-feed.md
- `parse_sitemap` — Execute — https://policylayer.com/tools/dev-tanod-tanod/parse-sitemap.md
- `parse_url` — Execute — https://policylayer.com/tools/dev-tanod-tanod/parse-url.md
- `parse_user_agent` — Execute — https://policylayer.com/tools/dev-tanod-tanod/parse-user-agent.md
- `render_mermaid` — Execute — https://policylayer.com/tools/dev-tanod-tanod/render-mermaid.md
- `satellite_passes` — Execute — https://policylayer.com/tools/dev-tanod-tanod/satellite-passes.md
- `sec_financials` — Execute — https://policylayer.com/tools/dev-tanod-tanod/sec-financials.md
- `transcribe_audio` — Execute — https://policylayer.com/tools/dev-tanod-tanod/transcribe-audio.md
- `x402_well_known_file` — Execute — https://policylayer.com/tools/dev-tanod-tanod/x402-well-known-file.md
- `compare_stablecoin_transfer_fees` — Financial — https://policylayer.com/tools/dev-tanod-tanod/compare-stablecoin-transfer-fees.md
- `transfer_preflight` — Financial — https://policylayer.com/tools/dev-tanod-tanod/transfer-preflight.md
- `airport_distance` — Read — https://policylayer.com/tools/dev-tanod-tanod/airport-distance.md
- …and 277 more: https://policylayer.com/tools/dev-tanod-tanod.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=dev-tanod-tanod · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/dev-tanod-tanod
