Skip to content

feat: add Umia plugin for Base MCP#144

Open
pamungkaski wants to merge 1 commit into
base:masterfrom
umiafinance:master
Open

feat: add Umia plugin for Base MCP#144
pamungkaski wants to merge 1 commit into
base:masterfrom
umiafinance:master

Conversation

@pamungkaski

@pamungkaski pamungkaski commented Jul 9, 2026

Copy link
Copy Markdown

Description

Adds the Umia plugin to the Base MCP skill. Umia runs onchain decision markets (futarchy) and continuous-clearing token auctions across EVM chains. The plugin reads markets, auctions, prices, and positions over Umia's HTTP API and builds unsigned { to, value, data } calldata via the auth-free /api/v1/calldata/* endpoints, then routes every write through Base MCP send_calls. With a shell it uses the umia CLI (npx umia-cli@latest); on chat-only surfaces it calls the same HTTP API directly. It never signs or broadcasts outside Base MCP and never handles private keys.

  • Integration type: hybrid (HTTP API + optional CLI, surface-dependent routing)
  • Chains: base, base-sepolia (multi-chain; the active set is discovered via umia config / GET /api/v1/config, never assumed)
  • Auth: none (the calldata endpoints are auth-free)

This PR also registers four genuinely new tags introduced by the plugin — futarchy, decision-markets, token-auctions, governance — by appending them to the tag vocabulary list in references/plugin-spec.md, as required by the spec's Contribution Scope.

Type of change

  • Base MCP plugin submission
  • Update to an existing skill/plugin
  • New skill
  • Documentation
  • Other (please describe):

Affected skill(s)

base-mcp

Plugin checklist

  • Plugin spec/manifest is accurate and tested
  • (If Applicable) API endpoints and/or external MCP/CLI tested and functional
  • Follows Contribution Scope

Base MCP Plugin Submission Agreement (when applicable)

By checking the box below, I agree and represent on behalf of the protocol/entity it references that:

  • I am authorized to submit this plugin on behalf of the protocol/entity it references;

  • the plugin does not infringe or misappropriate any third party's rights;

  • the plugin and the underlying protocol comply with all applicable laws, and my API enforces the same geofencing and eligibility restrictions as my own user-facing app;

  • the plugin is in full compliance with our protocol's/entity's then-current terms and conditions, and if not, submission and use thereafter is considered a formal written exemption to such terms and conditions;

  • the plugin accurately describes its behavior and contains no hidden, deceptive, or malicious instructions, and my API will not return malicious or unexpected calldata;

  • the protocol/entity is solely responsible for the plugin and is submitting a plugin is subject to the Base Account and Base App Terms of Service as using a "Service"; and

  • Base may modify, decline to list, or remove the plugin at any time, for any reason.

  • I have read and agree to the Base MCP Plugin Submission Agreement above.

Related issues

N/A


🤖 Generated with Claude Code

* feat: add Umia plugin for Base MCP

First futarchy / decision-market plugin for Base MCP. Hybrid integration
(umia-cli + auth-free /api/v1/calldata/* HTTP API) routed through send_calls;
never signs locally. Appends four net-new discovery tags to the vocabulary.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: correct Umia plugin doc accuracy (pre-upstream review)

Live-verified fixes from the internal plugin-spec review of PR #1:

- Clarify the `:venture` REST path param is the project `slug`
  (`project.slug` from `/hub/markets`); the venture id/address 404.
- Correct the mainnet-env note — `config` returns null contracts and
  `/hub/fundraises` is empty, so gate all market/auction features to
  testnet (previous "auction factory only" was unsupported).
- Auction `--max-price` must be strictly above the clearing price
  (API returns 422 at or below it), not "at/above".

Signing model, endpoints, allowlist, chains, ERC6909 ids, and the
send_calls mapping all verified against the live testnet API.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* fix: address Copilot PR review comments (pre-upstream review)

- Onboarding callout: source the wallet address from Base MCP
  `get_wallets` (not from the user), and add a high-risk-category
  disclaimer — decision markets/token sales may be jurisdiction-
  restricted and some auction steps require verification; never help
  circumvent geofencing or verification gates.
- Surface Routing: stop asserting the API hosts "are on the allowlist"
  — allowlisting is a maintainer-provisioned step; describe the
  not-allowlisted fallback (hub UI) for chat-only surfaces.
- Example Prompts: correct `GET /hub/markets?status=open` to the
  documented `GET /api/v1/hub/markets?status=open` (shorthand path 404s).

CLI `@latest` (3 comments) intentionally kept: the plugin-spec's
`cliPackage` examples use `@latest`; pinning is mandated only for stdio
MCPs, and `version` is the plugin-doc version, not the package version.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

* Potential fix for pull request finding

Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@cb-heimdall

Copy link
Copy Markdown
Collaborator

🟡 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
Sum 1

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants