Skip to content
PartsPlan AIPartsPlan AI

Setup and tools

PartsPlan MCP is a Streamable HTTP (stateless JSON mode) MCP server. Connect with an API key in a header.

Guide for AI agents (skill.md)

Server URL

https://worker.partsplanai.com/mcp

POST only (no GET streaming, no sessions). Batched JSON-RPC (arrays) is not accepted.

API key

Sign in and create one under 'My MCP keys'. A key is shown only once and starts with pk_live_. Send it as Authorization: Bearer <key> or x-api-key: <key>.

My MCP keys →

Connect from AI chat apps (web and mobile) — sign in, no key

In these apps, entering the server URL https://worker.partsplanai.com/mcp opens the PartsPlan sign-in and consent screen (no API key needed). PartsPlan tools are read tools; only the problem-report and collection-request tools record anything. Menu names can differ slightly as the apps update.

  • Claude.ai (web, desktop, mobile)

    Connectors page (claude.ai/customize/connectors) → Add custom connector → enter the URL → Connect → sign in and allow PartsPlan.

    If "Connection problem — Reconnect" appears right after adding, you are not signed in yet; choose Reconnect. Choosing "Always allow" in the first permission prompt for each tool stops the repeated prompts.

    Connect to Claude in one click — opens Claude's add-connector window with PartsPlan's name and URL filled in ↗
  • ChatGPT

    chatgpt.com/plugins → + → Add custom MCP server → enter the URL, authentication OAuth → confirm the notice (I understand and want to continue) → Create as a plugin → install → sign in and allow PartsPlan.

    Per OpenAI's current guide, custom MCP servers are added from the Plugins page. A work or school workspace may have this turned off by its admin.

    Open ChatGPT Plugins — paste the server URL there ↗
  • Gemini

    gemini.google.com → Settings → Connected Apps → Add a custom app → enter the URL → sign in and allow PartsPlan.

    Under Google's current policy this works for personal Google accounts of people 18 or over in the US, with Keep Activity on. For Gemini Enterprise, an admin adds it as a custom MCP server.

  • Grok

    grok.com/connectors → New Connector → Custom → enter the URL → sign in and allow PartsPlan.

    Open Grok connectors — paste the server URL there ↗
  • Perplexity

    Settings → Connectors → Add custom connector → enter the URL → sign in to PartsPlan → turn the PartsPlan connector on in a thread.

    Available on Pro and higher plans.

  • Mistral Le Chat

    Connectors → Add custom MCP connector → enter the URL → authentication HTTP Bearer with your API key (pk_live_…).

    Le Chat connects with a key instead of sign-in — create one on the My MCP keys page.

  • Microsoft 365 Copilot (organizations)

    Your Microsoft 365 admin adds it as an MCP connector in the Microsoft 365 admin center or Copilot Studio.

Connect from developer tools and terminals — with an API key

Claude Code
claude mcp add --transport http --scope user partsplan https://worker.partsplanai.com/mcp --header "Authorization: Bearer pk_live_..."
Add to Cursor in one click — Cursor shows an install prompt, then you sign in to PartsPlan (no key needed) ↗
Cursor (~/.cursor/mcp.json)
{
  "mcpServers": {
    "partsplan": {
      "url": "https://worker.partsplanai.com/mcp",
      "headers": {
        "Authorization": "Bearer pk_live_..."
      }
    }
  }
}

Clients without header support can connect through mcp-remote (requires Node.js).

Claude Desktop (claude_desktop_config.json)
{
  "mcpServers": {
    "partsplan": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://worker.partsplanai.com/mcp",
        "--header",
        "Authorization:${PARTSPLAN_AUTH}"
      ],
      "env": {
        "PARTSPLAN_AUTH": "Bearer pk_live_..."
      }
    }
  }
}
Windsurf (~/.codeium/windsurf/mcp_config.json — the URL field is serverUrl)
{
  "mcpServers": {
    "partsplan": {
      "serverUrl": "https://worker.partsplanai.com/mcp",
      "headers": {
        "Authorization": "Bearer pk_live_..."
      }
    }
  }
}
Add to VS Code in one click — VS Code shows an install prompt, then you sign in to PartsPlan (no key needed) ↗
VS Code (.vscode/mcp.json — asks for the key once and stores it masked)
{
  "inputs": [
    {
      "type": "promptString",
      "id": "partsplan-key",
      "description": "PartsPlan API key",
      "password": true
    }
  ],
  "servers": {
    "partsplan": {
      "type": "http",
      "url": "https://worker.partsplanai.com/mcp",
      "headers": {
        "Authorization": "Bearer ${input:partsplan-key}"
      }
    }
  }
}
OpenAI Codex (~/.codex/config.toml — keep the key in the PARTSPLAN_API_KEY environment variable)
# PARTSPLAN_API_KEY=pk_live_...  (environment variable)
[mcp_servers.partsplan]
url = "https://worker.partsplanai.com/mcp"
bearer_token_env_var = "PARTSPLAN_API_KEY"
OpenAI API (the mcp tool of the Responses API — key in the authorization field)
{
  "type": "mcp",
  "server_label": "partsplan",
  "server_url": "https://worker.partsplanai.com/mcp",
  "authorization": "pk_live_...",
  "require_approval": "never"
}
Gemini CLI (~/.gemini/settings.json — the URL field is httpUrl)
{
  "mcpServers": {
    "partsplan": {
      "httpUrl": "https://worker.partsplanai.com/mcp",
      "headers": {
        "Authorization": "Bearer pk_live_..."
      }
    }
  }
}
Direct call (curl)
curl -s https://worker.partsplanai.com/mcp \
  -H "Authorization: Bearer pk_live_..." \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

12 tools

Ask about parts the way you normally would — your AI picks the right tool. Each tool lists questions we have actually asked.

  • find_datasheet

    Find datasheets we hold by part number, separating the requested manufacturer's documents from other manufacturers'.

    Ask it like this
    • “Find the TPS563200 datasheet.”
    • “Which company published the MIC5216-3.0BM5TR document?”
  • get_datasheet_map

    Which page holds which section, table, or figure, with evidence.

    Ask it like this
    • “Where is the SOA graph in the CSD18540Q5B datasheet?”
    • “On which page does the INA219 register map start?”
  • search_datasheet

    Search within one document by words or conditions; returns page and block locations.

    Ask it like this
    • “Find the temperature drift and long-term stability values in REF5025.”
    • “Find the derating diagram in the PT 1,5 terminal block document.”
    • “Find the pin descriptions (引脚) in the Chinese TP4056 datasheet.”
  • get_page_blocks

    Source blocks (text, tables) of one page, in order.

    Ask it like this
    • “Read the example table on page 26 of INA219.”
    • “Show the source of the PCA9685 addressing section (page 8).”
  • get_page_image

    Image of one page. Your AI views graphs, drawings, and pin diagrams directly.

    Ask it like this
    • “Read the temperature rise at 7 W from the graph on page 1 of the Ohmite FA-T220 sheet.”
    • “Check the DRV8833 electrical characteristics table on the page image.”
  • get_figure_data

    Graph values (only when certain) and the text inside drawings.

    Ask it like this
    • “What does the TPS563200 current-vs-ambient curve give at 85 °C?”
    • “What current does the CSD18540Q5B SOA allow at 12 V for 10 ms?”
    • “What is BSS138's RDS(on) at VGS 3.3 V, 125 °C on its curve?”
  • search_parts

    Find candidate parts by part number or text. Given values like '100V 10A mosfet', it narrows candidates by those values (unconfirmed), but it does not judge suitability. You can also browse by device type (MOSFET, Hall sensor, temperature sensor) and manufacturer — only parts whose manufacturer's datasheet prints that device type, with the printed page as evidence (device type only; no ratings or suitability judged).

    Ask it like this
    • “Find 3.3 V LDO candidates in SOT-23-5 for 600 mA or more.”
    • “Which manufacturers in the archive make Hall-effect sensors?”
    • “Show me all Slkor MOSFETs.”
  • compare_points

    Points out what to compare between a source part and up to three candidates you picked — the items that must match, adjustable weights, items to read, and the page in each datasheet where each item is printed. It does not find candidates or give scores, rankings or compatibility verdicts.

    Ask it like this
    • “I picked RT9080-33GJ5 and XC6220B331MR-G as candidates for AP2112K-3.3TRG1 — show the rubric for a 3.3 V battery circuit and the pages to read.”
    • “Switch to a redesign and drop the package group — make dropout a weighted item.”
  • reference_circuits

    Where the datasheet prints application circuits (page, caption, region). The AI opens the figure and reads the circuit itself.

    Ask it like this
    • “Show the TPS563200 application circuit.”
  • check_bom

    Check document availability and identity for each BOM line (read-only).

    Ask it like this
    • “Do you have datasheets for all 30 lines of this BOM?”
  • request_datasheet_collection

    Ask us to collect datasheets for BOM lines we do not hold.

    Ask it like this
    • “Request collection for the lines you don't have.”
  • report_problem

    Tell us, with document, page and block, when an answer did not match the source or blocked your task.

    Ask it like this
    • “This document is not that part's datasheet — report it to PartsPlan.”

Recommended flow

  1. Pick the document with find_datasheet
  2. Find the right section's pages with get_datasheet_map
  3. Narrow down conditions or words with search_datasheet
  4. Read the source with get_page_blocks; view graphs and drawings with get_page_image · get_figure_data

Reading responses

  • Treat every value as an unconfirmed candidate: before using it, confirm it on the document and page we point to. Candidates and estimates are labeled separately — don't merge them.
  • no_document · no_candidates mean 'not in our data', not discontinued or unavailable.
  • When a graph value is ambiguous the server withholds it. View it with get_page_image instead.

Limits

  • Free: 300 calls/month (up to 100/day, resets on the 1st at 00:00 KST), 100/hour, 60/minute
  • Personal: 1,000 calls/day, 1,000/hour, 60/minute
  • All plans: 4 concurrent per account, 3 active keys (per-minute and concurrency limits count all of an account's keys together)
  • BOM checks (check_bom): 200 lines/day free · 1,000 personal · by agreement for organizations
  • Requests rejected because the server is busy (too_many_concurrent_requests) do not count against your limits.
  • The daily limit counts all of a user's keys together (creating new keys doesn't raise it).
  • Only tools/call is counted. initialize and tools/list are not.
Pricing →

Errors

401 api_key_required · invalid_api_keyKey missing, revoked, or wrong.
403 email_verification_requiredFree keys work after the account email is verified. Verify it on partsplanai.com, then retry.
429 rate_limitedPer-minute limit. Wait Retry-After seconds.
429 api_quota_exceededHourly or daily limit. Upgrade or try again tomorrow.
429 too_many_concurrent_requestsToo many concurrent requests. Retry shortly.
400 batch_not_supportedJSON-RPC arrays (batches) are not accepted.
503 auth_unavailable · quota_unavailableTemporary failure. Retry shortly.
503 free_capacity_reachedThe free service has reached its total capacity for now. Try again later.

Rights holders (manufacturers): to have a document removed or corrected, email hello@partsplanai.com with the part number or document link. We act on requests promptly.

Security reports: hello@partsplanai.com (security.txt)

MCP Terms of Service