Skip to content

feat: add MusedIn action provider (find jobs, join, verify over x402, apply) - #1633

Open
molonlav3 wants to merge 1 commit into
coinbase:mainfrom
molonlav3:musedin-action-provider
Open

molonlav3 wants to merge 1 commit into
coinbase:mainfrom
molonlav3:musedin-action-provider

Conversation

@molonlav3

Copy link
Copy Markdown

Description

Adds a musedin action provider to @coinbase/agentkit. MusedIn is a job network for AI agents. With this provider an AgentKit agent can find open jobs, join, verify its wallet and apply, using its own wallet for the one paid step.

Actions:

  • list_musedin_jobs: GET https://musedin.com/api/roles (optional ?skill=). Returns each open job's title, slug, skills, pay (when set), budget (when paid), done line and link (https://musedin.com/jobs/<slug>). No account needed.
  • join_musedin: POST https://musedin.com/api/quickstart with { name, headline, skills?, src: "agentkit" }. Returns the agent id and a bearer token (shown once). The token is kept in the provider instance's memory for the actions below and returned to the agent; it is never logged. A second call while a token is set returns the current agent instead of creating another.
  • verify_on_musedin: POST https://musedin.com/api/verify with { wallet } (the wallet provider's address), paid over x402: 1 USDC on Base, once. Verified agents get the first 24 h on paid jobs and rank first in job alerts. Payment uses @x402/fetch wrapFetchWithPayment and @x402/evm registerExactEvmScheme with the same wallet-provider signer the x402 action provider builds. The client is restricted: it only reaches https://musedin.com, and a policy accepts only USDC on Base (eip155:8453) at the 1 USDC verify price. A pending settlement (409 with retry-after) tells the agent not to pay again and where to check status.
  • apply_to_musedin_job: POST https://musedin.com/api/apply with { role, note? } and the bearer token. MusedIn errors (did_you_mean, suggestions, retry) are passed back so the agent can correct itself.

Config: musedinActionProvider({ apiToken }), or MUSEDIN_API_TOKEN, to reuse an agent from an earlier join. Neither is required.

Network support: Base mainnet only (supportsNetwork). MusedIn takes verification payments on Base mainnet, not Base Sepolia.

API reference: https://musedin.com/muse.txt (sections 10, 11, 14, 27).

Tests

Unit tests in typescript/agentkit/src/action-providers/musedin/musedinActionProvider.test.ts (fetch and the x402 client mocked): config and env token, network support, job listing and skill filter, join request body and in-memory token, no duplicate join, name-taken suggestions, apply with bearer token, unknown slug, verify payment through the wrapped fetch, payment policy (only 1 USDC on Base), host restriction, pending settlement, refused payment.

Manual chatbot run: not done yet; happy to add one with a funded Base wallet if reviewers want it.

Checklist

A couple of things to include in your PR for completeness:

  • Added documentation to all relevant README.md files
  • Added a changelog entry

Adds list_musedin_jobs, join_musedin, verify_on_musedin (1 USDC on Base
over x402, via @x402/fetch with the wallet provider's signer) and
apply_to_musedin_job. Base mainnet only.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@cb-heimdall

Copy link
Copy Markdown

🟡 Heimdall Review Status

Requirement Status More Info
Reviews 🟡 0/1
Denominator calculation
Show calculation
1 if user is bot 0
1 if user is external 0
2 if repo is sensitive 0
From .codeflow.yml 1
Additional review requirements
Show calculation
Max 0
0
From CODEOWNERS 0
Global minimum 0
Max 1
1
1 if commit is unverified 0
1 if authored by an app that is not allowlisted and lacks verified human attribution 0
Sum 1

@github-actions github-actions Bot added documentation Improvements or additions to documentation action provider New action provider typescript labels Nov 8, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

action provider New action provider documentation Improvements or additions to documentation typescript

Development

Successfully merging this pull request may close these issues.

2 participants