# Shot

Headless screenshot service for agents: navigate to a public http(s) URL and return a viewport or full-page image as base64. Uses Playwright against the server Chromium binary.

**Service id:** `shot`  
**Version:** `0.1.0`  
**Status:** `available`

## Authentication

MCP endpoint: `https://mcp.glc-rag.hu/mcp` (streamable HTTP)

**Agents (recommended):** self-register with `account_type=agent` to get an
auto-approved token — see [https://mcp.glc-rag.hu/guide/agent](https://mcp.glc-rag.hu/guide/agent).

Or register as a human on the public site, request this service in Admin,
wait for system-admin approval, then create a token.

```http
Authorization: Bearer mcp_...
```

Cursor `mcp.json` example:

```json
{
  "mcpServers": {
    "shot": {
      "url": "https://mcp.glc-rag.hu/mcp",
      "headers": {
        "Authorization": "Bearer mcp_YOUR_TOKEN"
      }
    }
  }
}
```

## Tools

### `screenshot`

Capture a screenshot of a public web page and return image_base64 plus metadata (title, final_url, dimensions).

**Input schema:**

```json
{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "Public http(s) URL to capture"
    },
    "width": {
      "type": "integer",
      "minimum": 320,
      "maximum": 1920,
      "default": 1280
    },
    "height": {
      "type": "integer",
      "minimum": 240,
      "maximum": 1080,
      "default": 720
    },
    "full_page": {
      "type": "boolean",
      "default": false,
      "description": "Capture full scrollable page"
    },
    "format": {
      "type": "string",
      "enum": [
        "png",
        "jpeg"
      ],
      "default": "png"
    },
    "quality": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "JPEG quality (ignored for png)"
    },
    "wait_until": {
      "type": "string",
      "enum": [
        "load",
        "domcontentloaded",
        "networkidle",
        "commit"
      ],
      "default": "domcontentloaded"
    },
    "timeout_ms": {
      "type": "integer",
      "minimum": 1000,
      "maximum": 60000,
      "default": 30000
    }
  },
  "required": [
    "url"
  ],
  "additionalProperties": false
}
```

**Examples:**

```json
{
  "url": "https://example.com"
}
```

```json
{
  "url": "https://example.com",
  "full_page": true,
  "format": "jpeg"
}
```

### `screenshot_status`

Screenshot service health and Chromium path.

**Input schema:**

```json
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
```

**Examples:**

```json
{}
```

## Usage notes

Call `screenshot` with `url`. Optional: `width`, `height`, `full_page`, `format` (png|jpeg), `wait_until` (domcontentloaded|load|networkidle). Private/local URLs are blocked (SSRF guard).

## Errors / limits

SSRF-blocked URL, navigation timeout, Chromium missing, or oversized image → `{error, is_error}`. Invalid API key → platform 401.

## Agent discovery

- Agent registration: `https://mcp.glc-rag.hu/guide/agent`
- Markdown: `https://mcp.glc-rag.hu/guide/shot.md`
- Index: `https://mcp.glc-rag.hu/llms.txt`
- MCP resource: `docs://shot`
