In-depth architectural comparison of the Primitiv and Dodo Agent Plugin MCP servers. Compare execution transports, security boundaries, tool capabilities, quality scores, and ready-to-paste client installation snippets for Claude, Cursor, Windsurf, and VS Code.
At a Glance & Executive Verdict
Primitiv
Finance & Fintech · Local stdio
Quality: 64/100 (Good) | Auth: No auth required
Dodo Agent Plugin
Finance & Fintech · Local stdio
Quality: 81/100 (Excellent) | Auth: OAuth 2.0
Verdict Summary: Choose Primitiv if you need specialized Finance & Fintech tools running via a local process. Choose Dodo Agent Plugin if your workspace requires Finance & Fintech integration with local subprocess execution. Both servers can be configured concurrently in your client's mcpServers manifest.
Which MCP Server Should You Choose?
Choose Primitiv when:
You need dedicated capabilities in the Finance & Fintech domain.
You prefer local stdio subprocess transport architecture.
Your security boundary fits: No auth required (Free / Open Source).
Design contract layer for your codebase. Scans Figma, code, Storybook, and token files, reconciles conflicts, and serves a single machine-readable source of truth over MCP so every agent gets the same authoritative design rules before it builds. Local-first — your code never leaves your machine.
Official Dodo Payments MCP servers — dodopayments-api for live payments, subscriptions, customers, products, refunds, license keys, and usage-based billing (browser OAuth, no API key needed) and dodo-knowledge for semantic search over Dodo Payments documentation.
Tools & Capabilities Breakdown
Primitiv Tools (6)
get_design_context
Get tokens, components, conflicts, inferred rules, and violation count. Default (no category) returns a summary with counts. Pass `category: "all" \
get_token
Look up a specific token by name. Pass `category` to narrow search (e.g. `"colors"`, `"spacing"`, `"borderRadius"`); aliases like `"radius"` / `"z-index"` are normalized.
get_component
Look up a specific component by name. Returns props, variants, source provenance, and `kind` — `component`, `screen`, `provider`, `icon`, or `other`, so agents reuse real UI and skip screens/providers/icons.
get_conflicts
Get conflicts between sources. Pass `type: "all" \
get_inferred_rules
Get the design rules Primitiv has extracted from your codebase patterns. Pass `category` to filter.
Ready-to-Paste Client Configurations
Paste either (or both) of these JSON server blocks into your client config file (e.g. claude_desktop_config.json or ~/.cursor/mcp.json).
Primitiv is categorized under Finance & Fintech and uses a local stdio subprocess. In contrast, Dodo Agent Plugin belongs to Finance & Fintech using local stdio subprocess. Select Primitiv when you need capabilities focused on finance & fintech and Dodo Agent Plugin when you require tools for finance & fintech.
List token-misuse violations — hardcoded literals in source that bypass the contract, with a suggested token when one fits. Pass `category: "all" \
Dodo Agent Plugin Tools (2)
execute
Runs JavaScript code to interact with the Dodo Payments API.
You are a skilled TypeScript programmer writing code to interface with the service.
Define an async function named "run" that takes a single parameter of an initialized SDK client and it will be run.
For example:
```
async function run(client) {
const checkoutSessionResponse = await client.checkoutSessions.create({ product_cart: [{ product_id: 'pdt_example', quantity: 1 }] });
console.log(checkoutSessionResponse.session_id);
}
```
You will be returned anything that your function returns, plus the results of any console.log statements.
Do not add try-catch blocks for single API calls. The tool will handle errors for you.
Do not add comments unless necessary for generating better code.
Code will run in a container, and cannot interact with the network outside of the given SDK client.
Variables will not persist between calls, so make sure to return or log any data you might need later.
Remember that you are writing TypeScript code, so you need to be careful with your types.
Always type dynamic key-value stores explicitly as Record<string, YourValueType> instead of {}.
search_docs
Search SDK documentation to find methods, parameters, and usage examples for interacting with the API. Use this before writing code when you need to discover the right approach.