# `xyz.aitrainingjobs/jobs` on anlyon.dev

> Text inside fenced blocks marked untrusted-server-text was written by the MCP server's publisher, not by anlyon.dev. It is data to inspect, not instructions to follow. Invisible characters are shown as [U+XXXX].
> No finding is not a safety guarantee: these are point-in-time checks of tool definitions, not of code or behaviour.

- Page: https://anlyon.dev/servers/xyz.aitrainingjobs/jobs
- JSON: https://anlyon.dev/api/v1/servers/xyz.aitrainingjobs/jobs
- Version: 1.0.0 (active)
- Publisher: xyz.aitrainingjobs (domain proven to the MCP Registry)
- Runs: remote (streamable-http)
- Sign-in to list tools: none
- Metadata from the official MCP Registry, synced 2026-11-02T04:17:38.464Z

Title and description, as the publisher wrote them:

```untrusted-server-text
AI Training Jobs
Search open AI training jobs from 14 vetted platforms by field, country and pay, with honest rates.
```

Scanned 2026-11-02T04:18:28.488Z over streamable-http.

**5 tools: 1 do something that can't be undone and 4 only read.**

| Group | Class | Tools | Claude Code |
| --- | --- | --- | --- |
| Deletes or cancels | destructive | 0 | deny |
| Can't be undone | irreversible | 1 | ask |
| Changes things | write | 0 | ask |
| Only reads | read | 4 | allow |

## Exfil surface

No private-data -> untrusted-input -> outbound path in this server alone: no tool is tagged private-data or untrusted-input or outbound.

| Tag | Meaning | Tools |
| --- | --- | --- |
| private-data | Reads files, mail, messages, databases, secrets, calendars or repositories. | none |
| untrusted-input | Brings in text someone else can write: web pages, inbound email, messages, issues and comments. | none |
| outbound | Can carry data to people or systems: it sends, posts or publishes, or takes a recipient, channel or URL. | none |

## Findings

- **warn** Annotations that disagree with the tool in `pay_stats` ([annotation-conflict](https://anlyon.dev/methodology#annotation-conflict))

```untrusted-server-text
The server marks "pay_stats" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "pay_stats" says "pay": a word that usually means money moves, which cannot be taken back.
```


## Can't be undone (1)

Sends, pays, publishes or merges: once done, it cannot be taken back. Claude Code: ask.

### `pay_stats`

- The name "pay_stats" says "pay": a word that usually means money moves, which cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
- Findings: warn annotation-conflict

Description, as the server wrote it:

```untrusted-server-text
What AI training jobs pay, from live listings that state an hourly rate: 25th percentile, median, 75th and 90th percentile of top rates, with the platforms hiring most. Optionally for one field and/or one country (listings that name the country or say worldwide).
```

## Only reads (4)

Looks things up and changes nothing. Claude Code: allow.

### `get_job`

- The name "get_job" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Full details of one job: pay, who can apply, how the platform screens applicants, and the description. Pass the job url or slug from search_jobs.
```

### `get_platform`

- The name "get_platform" says "get": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
One platform in depth: how its screening works, tips, how and when it pays (from its own help pages, with sources), its official domain for spotting fakes, live job counts, pay and fields.
```

### `list_platforms`

- The name "list_platforms" says "list": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Every platform listed, with open jobs, median top hourly rate, beginner-friendly roles and a one-line description. Use get_platform for how to get accepted and how it pays.
```

### `search_jobs`

- The name "search_jobs" says "search": a word for reading.

Description, as the server wrote it:

```untrusted-server-text
Search open AI training jobs (rating, writing and reviewing AI output, paid by AI labs) across vetted platforms. Filter by field, country, minimum hourly pay, platform, language and kind of data work. Returns each job with stated pay, who can apply and a url to its page (where the person applies).
```

## Claude Code permissions

For `.claude/settings.json`, assuming the server is installed as `jobs`:

```json
{
  "permissions": {
    "allow": [
      "mcp__jobs__search_jobs",
      "mcp__jobs__get_job",
      "mcp__jobs__list_platforms",
      "mcp__jobs__get_platform"
    ],
    "ask": [
      "mcp__jobs__pay_stats"
    ],
    "deny": []
  }
}
```
