Skip to main content
Local MCP runs wurk mcp serve on your computer and uses the same private wallets, account state, and payment journal as the CLI. Choose it when your application can launch a local process and you want to configure its tools and spending permissions yourself. For a remote connection with browser wallet approval, follow Connect with MCP. These instructions target CLI 0.7.1 on Linux, macOS, or Windows. The local connection uses stdio; it does not open an HTTP port or use hosted OAuth.

Initialize the CLI

Follow Install the CLI, including config init, the supported Node version, and the private state directory. Keep that state directory for future sessions and recovery. Public store browsing needs no wallet or account. Import a wallet only when you need signing or payment features. Free account access does not require funding the wallet.

Save a private tool policy

Save this as mcp-policy.json inside your private state directory. It enables public store browsing:
The origin must match config init. Keep the file private to your OS user. With WURK_STATE set by the installation instructions:
Prepare wallets and edit the policy outside the MCP conversation. Tool calls cannot change the policy, import private keys, or choose arbitrary local paths. API keys and private wallet keys stay in protected CLI state.

Connect your MCP application

Configure the application to launch wurk mcp serve over stdio. This example uses the mcpServers format used by Claude Code and Cursor. Other clients use their own configuration format, such as VS Code’s servers or Codex’s MCP configuration. Direct Node execution works across supported platforms:
Replace every path. node -p "process.execPath" prints the Node executable path. The CLI entrypoint is in the directory where you installed the package. On Windows, use node.exe and JSON-escaped paths, for example C:\\Users\\You\\AppData\\Local\\WURK\\agent. Use literal absolute paths in this example; do not paste shell variables such as $WURK_STATE or ~. Let the application start the process. A manual wurk mcp serve --state-dir ... --policy-file ... invocation waits for MCP input and is not an interactive chat. Keep stdout reserved for MCP traffic; diagnostics use stderr. Restart the connection after editing its policy. For a first check, ask the agent to list WURK Store categories using wurk_store_categories with {}. The sample policy should expose only its three store tools. Your application reads the available tools and their current input schemas through tools/list.

Enable account features

First access the account through the CLI. Add this field to the existing policy, replacing the reference with data.access.account:
Add the desired tool names to tools, such as wurk_account_profile, wurk_jobs_created_list, and wurk_jobs_actions_list. They use the saved account key. To earn, enable wurk_work_jobs_list, wurk_work_jobs_get, and, when authorized to submit work, wurk_work_jobs_submit. For services and assignments, enable the individual tools you need, such as wurk_seller_products_create or wurk_work_orders_chat_send. See the worker guide for the workflow. Enabling a write tool grants the connection permission to perform that action in the configured account. For wallet-authenticated account actions, add the registered wallet reference to wallets and add walletAccess:
Use base for a Base wallet. This permits the configured signer to perform the enabled wallet-authenticated actions. When both access and walletAccess are configured, use credentials for the same WURK account. Missing account, wallet, spending, or file configuration can hide dependent tools even when their names appear in the policy.

Prepare and fund work

Import the intended wallet through wallet setup, then add its returned reference to the policy’s wallets array. Solana payments also need the configured RPC from that guide. Preparing and funding a new job uses the payment wallet; account access is a separate feature. Add wurk_advanced_prepare, wurk_payment_inspect, and wurk_payment_resume to tools. Restart the connection, then use the feedback preparation example with your local wallet’s network and reference. Preparation saves a quote without paying. Keep the returned operation reference and the original request IDs, and review the complete quoted amount, recipient, asset, network, and deadline.

Configure the approved spending grant

To authorize and pay, enable wurk_payment_authorize and wurk_payment_submit, then add a grants array to the policy. Each array item is the grant object itself. This example is for the Advanced USDC feedback job only if the owner approved a maximum payment of 2.01 USDC:
Merge this field into the policy; replace the wallet reference, network, public address, approved quoted recipient, and expiry. The wallet reference must also appear in wallets. Use the owner’s actual approved limits. USDC uses 1,000,000 atomic units per USDC; the limits cover the complete payment, including any identification amount. The shared grant format requires solanaFees even for Base. See spending grant fields for the fee options. Keep the grant’s ID and terms fixed. Its total budget is shared across operations, and its expiry cannot extend the quote deadline. A new grant ID creates a separate allowance; it must not reset an already authorized budget or bypass an uncertain payment.

Authorize, submit, and follow the result

Restart the connection after saving the grant. For the saved operation:
  1. Call wurk_payment_authorize with {"operation":"RETURNED_OPERATION"}. Local authorization applies the configured grant; it does not transfer funds.
  2. Call wurk_payment_submit with the same operation. It uses the imported signer to sign and submit the payment; local MCP has no hosted browser approval step.
  3. Call wurk_payment_resume with the same operation to check the outcome. Confirm funding and activation before treating the job as ready.
Enable wurk_advanced_view to read the job and its submissions, and wurk_advanced_choose to select qualifying entries. Selection enters the job’s normal moderation workflow. See submissions and winners for reviews, awards, and refunds; private orders have a separate delivery-approval flow. If enabled, wurk_jobs_create combines preparation and payment using the configured grant. Its maxPayment is an additional payment cap, not spending permission; quoteOnly:true prepares without paying. Tool arguments cannot create or increase the allowance. After a timeout or lost response, keep the original state and identifiers. Use wurk_payment_inspect with exactly one of operation or clientRequestId, then wurk_payment_resume with the recovered operation. See recover an interrupted operation. An uncertain result does not authorize a replacement payment. An already exposed payment remains recoverable after its grant is removed.

Allow local files

With account or wallet access configured, add a files map to the policy:
Use an existing file and an absolute path; Windows paths must be JSON-escaped. Enable the needed wurk_media_upload, wurk_media_inspect, wurk_media_resume, and wurk_media_complete tools, then restart the connection. The agent supplies the approved fileRef:"brief" and purpose, plus the original idempotencyKey for portfolio uploads. PFP uploads omit that key. It cannot choose arbitrary paths or provide inline file bytes. Uploading returns owned media; attaching it to a job, profile, submission, or message is a separate action. Preserve the original file, key, upload ID, and private state after interruption:
  • wurk_media_inspect reads progress using exactly one uploadId or idempotencyKey; it does not transfer bytes.
  • wurk_media_resume resumes a portfolio upload saved by this host using the original idempotencyKey. Supply the original approved fileRef only when original bytes are needed. Started transfers and ready receipts need no file.
  • wurk_media_complete checks the original reservation using its uploadId without sending bytes; it cannot start a missing transfer.
Resume and completion optionally accept waitSeconds from 1 to 300. The upload guide explains limits and using the receipt. Hosted MCP uses its separate browser file handoff.

Local connection troubleshooting

Keep the full local state and backups private when updating the CLI. Reimporting a wallet does not reconstruct its payment history. Read the WURK skill and the guide for your task alongside the tool descriptions.