Skip to content

feat(action-providers): add read-only TaskMarket discovery provider - #1452

Open
wilddoc wants to merge 1 commit into
coinbase:mainfrom
wilddoc:feat/taskmarket-action-provider
Open

feat(action-providers): add read-only TaskMarket discovery provider#1452
wilddoc wants to merge 1 commit into
coinbase:mainfrom
wilddoc:feat/taskmarket-action-provider

Conversation

@wilddoc

@wilddoc wilddoc commented Aug 17, 2026

Copy link
Copy Markdown

Description

Adds a TaskMarket action provider so an agent can discover paid work on TaskMarket, a task marketplace where requesters escrow USDC on Base and workers submit deliverables.

The motivation is delegation. An agent that recognises a request is better handled by external workers can look for existing funded work instead of burning inference on something it will do badly, and can hand its operator a link rather than an unreliable answer.

Actions

Action Purpose
browse_tasks Lists open tasks by net reward, with deadline and how contested each already is
get_task_details Full acceptance criteria, reward and award count for one task
evaluate_delegation Given a description of work in hand, surfaces open tasks that overlap with it

Scope: read-only, on purpose

Nothing in this provider spends funds, touches a wallet, creates a task, claims work, or requires an API key.

Task creation and submission move real USDC through escrow, so they are deliberately left to the first-party TaskMarket CLI behind explicit human authorization rather than exposed as agent actions. evaluate_delegation states this in its own output: it returns candidates and says plainly that acting on them needs operator authorization.

Because of that, the provider needs no configuration and no secrets. The discovery endpoints are unauthenticated and read-only.

Design notes

  • Rewards are reported net of the platform fee, which is what a worker actually receives.
  • Submission counts are surfaced. A 64 USDC task with 142 submissions is often worth less in expectation than a 4 USDC task with three, and an agent recommending work should be able to see that.
  • List views collapse descriptions to one line. Task descriptions run to hundreds of words of markdown and would otherwise dominate the context window.
  • Matching uses transparent stopword-filtered keyword overlap, not embeddings, so it costs no extra model call and an operator can predict its behaviour.
  • supportsNetwork returns true: browsing reads a public HTTP API and touches no wallet. Settlement is USDC on Base, but only once a user acts outside this provider.

Tests

taskmarketActionProvider.test.ts covers USDC base-unit conversion from both strings and numbers, hours-remaining parsing, description collapsing, reward-floor filtering, sorting by reward, delegation matching including the stopword and no-match paths, full task rendering, and the API-failure path (returns an error string rather than throwing).

One case worth calling out: a task can be status: "open" and already past its expiryTime. isOpenForWork checks status, submission window and expiry together, and there is a test for exactly that combination.

Checklist

  • New action provider in its own directory following existing conventions
  • Exported from action-providers/index.ts
  • README documenting setup and scope
  • Unit tests
  • No new dependencies
  • No secrets, keys or wallet access required

Adds a TaskMarket action provider so an agent can discover paid work on
TaskMarket, a task marketplace settling in USDC on Base.

The motivation is delegation. An agent that recognises a request is better
handled by external workers can look for existing funded work instead of
burning inference on something it will do badly, and can hand its operator a
link rather than an unreliable answer.

Actions:
- browse_tasks       list open tasks by net reward, with deadline and how
                     contested each already is
- get_task_details   full acceptance criteria for one task
- evaluate_delegation given work in hand, surface open tasks overlapping it

Scope is deliberately read-only. Nothing here spends funds, touches a wallet,
creates a task, claims work, or requires an API key. Task creation and
submission move real USDC through escrow, so they are left to the first-party
TaskMarket CLI behind explicit human authorization rather than exposed as
agent actions.

Notes:
- rewards are reported net of the platform fee, which is what a worker
  actually receives
- submission counts are surfaced, because a 64 USDC task with 142 submissions
  is often worth less in expectation than a 4 USDC task with three
- list views collapse descriptions to one line; task descriptions run to
  hundreds of words of markdown and would otherwise dominate the context
- evaluate_delegation uses transparent keyword overlap rather than embeddings,
  so it costs no extra model call and its behaviour is predictable

The discovery endpoints used are unauthenticated and read-only, so the
provider needs no configuration. supportsNetwork returns true because
browsing touches no wallet.

Includes unit tests covering USDC conversion, expiry handling (a task can be
status=open but past expiry), stopword-filtered matching, reward sorting and
API-failure paths.
@wilddoc
wilddoc requested a review from murrlincoln as a code owner August 17, 2026 01:31
@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 1
Sum 2

@github-actions github-actions Bot added documentation Improvements or additions to documentation action provider New action provider typescript labels Aug 17, 2026
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