Metadata-Version: 2.4
Name: instaply-mcp
Version: 0.3.1
Summary: Instaply MCP server — local-first agentic job applications inside Claude Desktop / Claude Code / Codex and other local MCP clients. Runs Playwright on your residential IP so captcha and rate-limit walls disappear.
Project-URL: Homepage, https://github.com/Ravendise/Instaply
Project-URL: Repository, https://github.com/Ravendise/Instaply
Project-URL: Issues, https://github.com/Ravendise/Instaply/issues
Author-email: Ravendise <support@asion.ai>
License: MIT
Keywords: ats,automation,claude,job-search,mcp
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: End Users/Desktop
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10
Requires-Dist: beautifulsoup4>=4.12.0
Requires-Dist: lxml>=5.2.0
Requires-Dist: mcp>=1.2.0
Requires-Dist: pydantic>=2.8.0
Provides-Extra: search
Requires-Dist: python-jobspy>=1.1.50; extra == 'search'
Provides-Extra: worker
Requires-Dist: playwright>=1.45.0; extra == 'worker'
Description-Content-Type: text/markdown

# Instaply MCP

**Agentic job applications, running on your own machine, inside Claude Desktop, Claude Code, Codex, and other local MCP clients.**

Zero servers to maintain. Zero accounts. Your profile, your saved answers,
your application history all live in one SQLite file at `~/.instaply/data.db`.
If the original author disappears tomorrow, every install keeps working
forever — there is no remote service it depends on.

## Why local-first

* **No captcha walls.** The worker runs in your
  real Chrome on your residential IP. hCaptcha and reCAPTCHA Enterprise
  almost never challenge normal users on residential traffic — the
  problem that breaks every cloud-hosted job-application bot just doesn't
  apply.
* **No rate limits.** JobSpy, Greenhouse, Lever — none of them
  rate-limit residential traffic the way they hammer datacenter IPs.
* **No privacy trade-off.** Your resume, profile, and answer vault never
  leave your machine. The MCP server doesn't even have a network egress
  for those.
* **No subscription.** Pay once for the package (or take it MIT-licensed
  off GitHub), use it as long as you have a job to apply to.

## Install

### Claude Code

```bash
claude mcp add instaply uvx instaply-mcp
```

### Codex

```bash
codex mcp add instaply uvx instaply-mcp
```

### Claude Desktop

You can either:

1. double-click the `.mcpb` bundle, or
2. add the same command-based config manually:

Edit your `claude_desktop_config.json`:

* macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
* Windows: `%APPDATA%\Claude\claude_desktop_config.json`
* Linux: `~/.config/Claude/claude_desktop_config.json`

```json
{
    "mcpServers": {
      "instaply": {
        "command": "uvx",
        "args": ["instaply-mcp"]
      }
  }
}
```

Restart Claude Desktop. The Instaply tools appear in the tool tray.

### Universal fallback

If a client prefers a raw Python module command instead of `uvx`, use:

```bash
python -m instaply_mcp
```

That works because the package now exposes a real `__main__` entrypoint.

## Tools

The v0.3.1 tools are local-only — no network, no hosted dependency:

| Tool | What it does |
|---|---|
| `update_profile(patch)` | Sparse update of identity fields. Stored in `~/.instaply/data.db`. |
| `get_profile()` | Read the current profile as a flat dict. |
| `save_answer(question, answer)` | Teach the agent an answer once; it reuses the value for normalized variants on future applications. |
| `list_answers(limit?)` | Audit what the agent has learned. |
| `delete_answer(answer_id)` | Forget a saved answer. |
| `list_applications(status?, limit?)` | Local audit trail of jobs the agent has acted on. |
| `get_status()` | Quick counts: applications by status, jobs cached, answers saved. |
| `apply_to_job(apply_url, ...)` | Opens the URL in your local Chrome, fills the form via the Instaply rules engine + saved-answer reuse, leaves the browser open for you to solve any captcha and click Submit. Requires the `[worker]` extra (Playwright). |
| `mark_complete(application_id)` | Mark an application submitted after you click Submit on the employer's page and see the confirmation. |

## Optional extras

```bash
pip install 'instaply-mcp[worker]'           # adds Playwright
python -m playwright install chromium        # one-time, ~150 MB cached
```

The base install (`uvx instaply-mcp`) gives you profile, answer vault,
and audit trail. Add `[worker]` when you want `apply_to_job` to actually
drive a browser.

## What's coming next

* `search_jobs(query, location)` — local JobSpy + Greenhouse + Lever
  scrape via the `[search]` extra.
* Resume parser (PDF + DOCX, conservative prompt — never invents a
  background you don't have).
* `import_from_dashboard(token)` — one-shot migration for users who
  already have data in the hosted product.
* Auto post-submit detection so `mark_complete` becomes optional.

## Storage layout

Single SQLite file:

```
~/.instaply/
└── data.db          # profile + answers + applications + jobs cache
```

Override with `INSTAPLY_DATA_DIR` env var if you want it elsewhere.

The schema is documented in `instaply_mcp/db.py`. It's stable; future
versions will use `ALTER TABLE` migrations rather than rebuild.

## License

MIT. Use it however you want. If you ship a commercial product on top
of it, a "Powered by Instaply" link is appreciated but not required.

## Hosted version (still maintained for now)

If you'd rather not run anything locally, the hosted product at
[instaply.asion.ai](https://instaply.asion.ai) still works. It's the
same engine; the local MCP and the hosted SaaS share the worker, the
rules, and the answer-vault contract. Use whichever fits your taste.
