Cursor

Add Thirdfy MCP in Cursor, onboard by email, then discover and execute.

What you need

  • Cursor with MCP support (Settings → Tools & MCP)
  • An email inbox for Privy OTP (or an existing Thirdfy agent API key)

Install

Add to ~/.cursor/mcp.json:

{
  "mcpServers": {
    "thirdfy": {
      "url": "https://mcp.thirdfy.com/mcp"
    }
  }
}

Restart Cursor. Open Settings → Tools & MCP and confirm thirdfy is connected.

Local development against api-test:

{
  "mcpServers": {
    "thirdfy-local": {
      "url": "http://127.0.0.1:8788/mcp",
      "headers": {
        "Authorization": "Bearer YOUR_THIRDFY_API_KEY"
      }
    }
  }
}

Run the Worker with USE_MOCK_DATA=false when validating live catalog data.

Verify connection

Ask the agent to call getActionsCatalog or run:

curl -s https://mcp.thirdfy.com/health
curl -s https://mcp.thirdfy.com/tools | head

Create account and wallets

In Agent chat, use this sequence (tool names match MCP and REST):

  1. describeOnboardingPath
  2. startEmailOnboarding with your email
  3. completeEmailOnboarding with the OTP code and acceptTerms: true
  4. getWalletProfile
  5. agentWalletBootstrap when you need funding checks before writes

Store the returned agent API key securely. Pass it as agentApiKey on credentialed tools.

userDid is optional on walletExecute when agentKey is a 0x address. The Worker defaults to did:wallet:<agentKey>.

First reads

getActionsCatalog
  → getProviderActions { provider: "polymarket" }  // or providerId
  → getVenueReadiness { provider: "polymarket" }

Writes

  1. Complete venue onboarding when getVenueReadiness shows blockers (prepareVenueOnboardingcompleteVenueOnboardingfundVenue if needed).
  2. Call walletExecute or agentRun with catalog action names only.

Execution is fail-closed: funding, credentials, and approvals must be ready.

Troubleshooting

IssueFix
OTP never arrivesCheck spam; retry startEmailOnboarding
Missing agent keyRun completeEmailOnboarding with acceptTerms: true
provider validation errorUse provider or providerId on getProviderActions
Nested JSON in resultsTop-level markets, bids, asks are flattened on execute reads
Tool missing on RESTUpdate Worker; all 57 default tools map to /tool/<name>