# Pa1m Reddit

> Pay-per-call Reddit agent: post reading, voting, commenting, DM and OAuth flows. x402, USDC on Base.

- name: io.github.retampweb/pa1m-reddit
- version: 1.0.0
- connection class: R0 (autonomous)
- trust: 73/100 flags: no-repository
- quality: 70/100 (needs work)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/io.github.retampweb%2Fpa1m-reddit
- tools: https://api.protogrid.dev/v1/servers/io.github.retampweb%2Fpa1m-reddit/tools

**An agent can connect right now, no human step.** Remote endpoint, no authentication, reachable on the last probe.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "pa1m-reddit": {
      "type": "sse",
      "url": "https://reddit.hypa1m.xyz/mcp"
    }
  }
}
```


## Trust

- hygiene: 80
- liveness: 99
- freshness: 85
- provenance: 35
- drivers: +reachable +uptime-98% ~updated-85d-ago -no-repository
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 70/100 (needs work)

### protocol: 50 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- warn `protocol.transport`: only the legacy HTTP+SSE transport, deprecated until 2027-07-28
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 71 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- fail `tools.annotations`: no tool declares readOnlyHint or destructiveHint, so clients cannot tell safe calls from risky ones
- fail `tools.directory_hints`: no tool declares all four of readOnlyHint, destructiveHint, idempotentHint and openWorldHint; missing: get_posts (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); get_user (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); send_dm (readOnlyHint, destructiveHint, idempotentHint, openWorldHint); …
- pass `tools.token_cost`: about 2,291 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump

### stability: 100 (weight 15)

- pass `stability.changes`: no tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 10, about 2,291 tokens to load them all
- tool set hash: 89dfa135cb0f0783aa80507ba8bd228e
- badge: [![protogrid quality](https://protogrid.dev/badge/io.github.retampweb/pa1m-reddit.svg)](https://protogrid.dev/servers/io.github.retampweb/pa1m-reddit)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

_No tool definition changes recorded._

## Remotes

- https://reddit.hypa1m.xyz/mcp (sse, auth none, reachable true, uptime30d 0.98165137)

## Packages

_none_

## Tools (10)

- `get_comments_by_id`: Post Comments by Post ID — $0.01

Fetch the full comment tree for a Reddit post using its short alphanumeric post ID. Same response as the permalink endpoint — use this when you have the ID, not the full URL. Post IDs can be extracted from Reddit URLs: reddit.com/r/x/comments/{post_id}/... Example: GET /comments/1abc123

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
- `get_comments_by_permalink`: Post Comments by Permalink — $0.01

Fetch the full comment tree for a Reddit post using its permalink URL. Returns top-level comments with nested replies, upvote counts, and author metadata. Use this when you have the full Reddit URL. Permalink format: /r/{subreddit}/comments/{post_id}/{title}/ Example: GET /comments?permalink=/r/python/comments/1abc123/my_post_title/

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
- `get_posts`: Subreddit Posts — $0.01

Fetch posts from any subreddit with sorting and pagination. No Reddit account needed. Sorting options: hot (trending now), new (most recent), top (most upvoted), rising (gaining momentum), controversial (most debated), best (Reddit's personalized ranking). Use t= parameter (hour/day/week/month/year/all) with sort=top or sort=controversial. Paginate by passing the 'after' cursor from the previous response. Up to 100 posts per call. Example: GET /posts?subreddit=MachineLearning&sort=top&t=week&limit=50

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
- `get_user`: User Profile — $0.01

Fetch a Reddit user's public profile. Returns link karma, comment karma, account age, gold/mod/employee status flags, verified email flag, icon URL, and profile description. Example: GET /user/spez

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
- `get_user_comments`: User Comment History — $0.01

Fetch a Reddit user's recent comments. Each item includes subreddit, upvote score, parent post title, comment body, and creation timestamp. Sort by new (default), top, or controversial. Paginate with the 'after' cursor. Example: GET /user/spez/comments?sort=top&limit=10

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
- `login`: Reddit Login — $0.05

Authenticate a Reddit account and receive session cookies needed for write operations (comment, vote, DM). Cookies are valid until revoked by Reddit. For accounts with 2FA, pass totp_secret to generate the TOTP code automatically. Body: {"username": "...", "password": "...", "totp_secret": "..." (optional)}

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
- `post_comment`: Post Comment — $0.05

Submit a top-level comment on a Reddit post. Requires session cookies from POST /login (reddit_session + loid fields). Body: {"post_url": "https://reddit.com/r/...", "text": "...", "reddit_session": "...", "loid": "..."}

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
- `search_posts`: Search Reddit Posts — $0.01

Search Reddit posts globally or restrict to a specific subreddit. Mirrors the Posts tab on reddit.com/search. Sorting: relevance (default — highest upvoted may outrank closest match on broad queries), new (strict chronological), hot, top, comments. Tip: use sort=new with t=week for recent topical results; sort=relevance for best match. Set nsfw=true to include adult content. Paginate with 'after' cursor. Example: GET /search?q=Claude+API&sort=new&t=month&limit=25

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
- `send_dm`: Send Direct Message — $0.10

Send a private message to a Reddit user. Pass to_username (e.g. 'spez') or to_user_t2 (Reddit internal ID like t2_xxx). Requires session cookies from POST /login. Body: {"to_username": "spez", "message": "Hello!", "reddit_session": "...", "loid": "..."}

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
- `vote`: Vote — $0.02

Upvote or downvote a Reddit post or comment. thing_id format: t3_xxx for posts, t1_xxx for comments. direction: up | down | none (none removes your vote). Requires session cookies from POST /login. Body: {"thing_id": "t3_abc123", "direction": "up", "reddit_session": "...", "loid": "..."}

### Responses:

**200**: Successful Response (Success Response)
Content-Type: application/json
