Skip to main content
Glama
jjfisherdev

@firsthandapi/mcp-server

by jjfisherdev
README.md
> **ARCHIVED 2026-08-22 — FirstHandAPI is shut down and this server no longer works.**
>
> `api.firsthandapi.com` is permanently offline. Every tool in this MCP
> server returns a network error, and the `@firsthandapi/mcp-server` npm
> package is deprecated on all versions. The `signup` flow below cannot
> issue keys.
>
> Write-up of what was built and why it was killed:
> <https://jjfisher.dev/writing/2026-w34-firsthandapi-postmortem>
>
> Kept read-only as a reference implementation of an MCP server with a
> keyless bootstrap tool.

# @firsthandapi/mcp-server — FirstHandAPI MCP Server

## Zero-to-job for agents (bootstrap mode)

No API key yet? Start the server anyway — it exposes a single `signup` tool:

```bash
npx @firsthandapi/mcp-server        # no env var needed
```

Call `signup` with an `org_name` and `email` to receive an API key and $2.50
in free credits (the key is shown once — save it), then restart configured:

```bash
claude mcp add firsthandapi -e FIRSTHAND_API_KEY=fh_live_... -- npx @firsthandapi/mcp-server
```

With the key set, all 7 job tools unlock: `create_job`, `create_job_and_wait`,
`get_job`, `list_jobs`, `get_job_files`, `cancel_job`, `get_credits`.


Official [MCP](https://modelcontextprotocol.io) server for [FirstHandAPI](https://firsthandapi.com) — human-in-the-loop (HITL) crowdsourced data collection. Enables Claude Code, Cursor, and other AI agents to collect photos, audio, video, and screen recordings from real human workers with automated AI quality scoring.

Use cases: UGC collection, ground truth data for AI evaluation, LLM training data for multimodal models.

## Installation

```bash
npm install @firsthandapi/mcp-server
```

## Configuration

### Claude Code
```json
{
  "mcpServers": {
    "firsthand": {
      "command": "npx",
      "args": ["@firsthandapi/mcp-server"],
      "env": {
        "FIRSTHAND_API_KEY": "fh_live_your_key_here"
      }
    }
  }
}
```

### Cursor
Add to `.cursor/mcp.json`:
```json
{
  "firsthand": {
    "command": "npx @firsthandapi/mcp-server",
    "env": { "FIRSTHAND_API_KEY": "fh_live_..." }
  }
}
```

## Tools

| Tool | Description |
|------|-------------|
| `create_job` | Post a content collection job |
| `get_job` | Get job status and details |
| `create_job_and_wait` | Post a job and wait for completion |
| `list_jobs` | List all jobs with filters |
| `cancel_job` | Cancel an open job |
| `get_job_files` | Get approved files with download URLs |
| `get_credits` | Check credit balance |

All job creation tools accept an optional `location` parameter: `{ city, state }` for text-based or `{ latitude, longitude, radius_km }` for coordinate-based constraints.

## Environment Variables

- `FIRSTHAND_API_KEY` (required) — Your API key
- `FIRSTHAND_BASE_URL` (optional) — API base URL (default: https://api.firsthandapi.com)
- `FIRSTHAND_TIMEOUT_MS` (optional) — Request timeout (default: 30000)

## License

Proprietary

TDQS

A4.1/5.0

Scored across 1 tool

Disambiguation5/5

Only one tool exists, so there is no possibility of confusion or overlap. Its purpose is clearly defined as account creation and API key retrieval.

Naming Consistency5/5

With a single tool, naming is perfectly consistent by definition. The verb-form 'signup' is clear and unambiguous, even if it doesn't follow a verb_noun pattern.

Tool Count2/5

The server's own description mentions 'job tools' that will be unlocked after restart, yet only signup is exposed. A single tool is too few for the apparent broader API scope, making the tool set feel thin and incomplete.

Completeness1/5

The server is described as a FirstHandAPI MCP server with the intent to provide job tools, but only signup is available. This creates a severe gap—users can create an account but cannot perform any actual job operations, leaving the advertised surface almost entirely absent.

Maintenance

ActivityMaintained
ResponsivenessNo issues