JMPAUL for agents
A headless way into this site. Two audiences: hiring agents evaluating Jason Paul for a role, and assistants helping people find or support his apps.
REST · JSONMCP · Streamable HTTPAgent Skills · SKILL.mdllms.txtStatus: Remote W2 (full-time employee) engineering roles (updated 2026-09-17). Everything served here is public; nothing requires a key. Reads are cached and rate limited per IP; writes are delivered to a human by email.
Quick start
curl
Plain JSON over HTTPS.
curl http://www.jmpaul.com/api/v1/profile
curl "http://www.jmpaul.com/api/v1/experience?tech=Kubernetes"
curl http://www.jmpaul.com/resume.mdMCP
Stateless Streamable HTTP. Works with Claude Code, Claude Desktop, Cursor, and any MCP client.
claude mcp add --transport http jmpaul http://www.jmpaul.com/mcpAgent Skills
Drop a SKILL.md into your agent and it knows how to use this site.
curl -LO http://www.jmpaul.com/skills/jmpaul-hiring.zip
unzip jmpaul-hiring.zip -d ~/.claude/skills/Hiring
Profile, career history, skills, resume, and public GitHub activity, plus a structured way to send a role. The candidate reads every inquiry himself.
| Endpoint | What you get |
|---|---|
GET /api/v1/profile | Availability, target roles, focus areas, signature metrics, languages and technologies, education, contact and sharing policy. |
GET /api/v1/experience | Every role, newest first, with summary, highlights and tech. Filter with ?q=, ?tech=, ?category=engineering|leadership|founder|education. Single role: /api/v1/experience/{id}. |
GET /api/v1/skills | Languages, technologies, and per-skill usage derived from experience (where, first and last year, current). |
GET /resume.md · GET /resume.json | Resume as Markdown, or in JSON Resume format. Rendered live from the same data as the timeline. |
GET /api/v1/activity | GitHub commit counts by organization and language, recent-weeks totals. Counts only, from the Commit City cache. |
POST /api/v1/inquiries | Send a specific role. Required: company, role, contact_email. Recommended: job_url or description, compensation, work_mode, employment_type, agent. Returns an id; check GET /api/v1/inquiries/{id}. |
curl -X POST http://www.jmpaul.com/api/v1/inquiries \
-H 'Content-Type: application/json' \
-d '{"company":"Acme","role":"Staff Engineer, Data Platform",
"contact_email":"recruiter@acme.com","job_url":"https://acme.com/jobs/123",
"compensation":"$210k-$240k + equity","work_mode":"remote","employment_type":"W2 full-time",
"agent":"Acme Sourcing Agent (acme.com)"}'
Products
Catalog with per-platform store data, a download redirect, and a support endpoint. No product ships a direct binary; downloads go through the App Store, Google Play, or the web app.
| Endpoint | What you get |
|---|---|
GET /api/v1/products | All products (?status=live hides retired entries). Single: /api/v1/products/{id}. |
GET /api/v1/products/{id}/download?platform=ios|android|web | 302 to the store or web app. Without platform, the options as JSON. |
POST /api/v1/support | Bug, feature request, or question for a product. Required: product, email, message. Optional: kind, name, platform, app_version, subject. |
MCP server
POST http://www.jmpaul.com/mcp speaks JSON-RPC 2.0 over Streamable HTTP in stateless mode (protocol versions 2025-03-26 through 2025-11-25). No sessions, no SSE stream, no auth.
| Tools | get_profile, search_experience, get_skills, get_resume, get_activity, submit_inquiry, list_products, get_product, get_download_link, submit_support_request |
|---|---|
| Resources | jmpaul://resume.md, jmpaul://resume.json, jmpaul://profile.json, jmpaul://products.json, jmpaul://llms-full.txt |
| Prompts | evaluate_fit(job_description), app_help(product, question) |
curl -X POST http://www.jmpaul.com/mcp -H 'Content-Type: application/json' \
-d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"get_download_link","arguments":{"id":"cure-crystals","platform":"android"}}}'
Agent Skills
Two skills in the open SKILL.md format. The index at /skills/index.json lists them with zip downloads.
| jmpaul-hiring | How to evaluate the candidate for a role and submit an inquiry. zip |
|---|---|
| jmpaul-apps | How to find, download, and file support for the apps. zip |
Discovery
| /llms.txt · /llms-full.txt | Where to start, and everything in one text file. |
| /openapi.json | OpenAPI 3.1 for the REST API. |
| /.well-known/agent-card.json | Agent card listing the REST, MCP, and Skills interfaces. |
| /.well-known/api-catalog | RFC 9727 API catalog (linkset). |
| /robots.txt | Agents are welcome; runtime and vendor directories are off limits. |
Limits and policy
| Reads | 120 requests per minute per IP. Responses carry ETag and Cache-Control; send If-None-Match. |
|---|---|
| Writes | 5 inquiries and 5 support requests per hour per IP. 429 carries Retry-After. |
| Sharing | Everything served by this API is public and may be quoted or summarized. Do not infer or fabricate details that are not present here (compensation history, citizenship, clearances, certifications, age). Use the inquiry endpoint for roles; include the job description or a link so the candidate can evaluate fit. Automated bulk outreach that is not tied to a specific role will be ignored. |
| Privacy | Requests are logged (time, path, IP, user agent) to protect the endpoints. Inquiry and support contents go to the site owner only. Privacy policy. |