FinCobra MCP
FinCobra MCP connects an AI client to a FinCobra Checkout (invoicing) and Watchlist (portfolio) account over Streamable HTTP with OAuth, exposing 5 tools.
Create Checkout invoices (
create_invoice,checkout:write): make a USD invoice with optional description, customer email, and merchant reference; returns the hosted payment URL and status.Look up invoices (
get_invoice,checkout:read): fetch status, payment URL, and USD amounts (received, confirmed, remaining) by invoice id.Read net worth (
get_net_worth,watchlist:read): banks, cash, property, and manual totals plus source counts and notes; note that live crypto USD balances always come back asnull.List portfolio sources (
list_sources,watchlist:read): wallets, exchanges, and manual bank/cash/property entries with values, mortgage balances, and stored token cost-basis (PnL) rows.Get one source (
get_source,watchlist:read): retrieve a single source by id (e.g.wallet:12,exchange:binance,manual:3).No editing of watchlist data: the server does not add wallets, edit assets, or manage cars, and it cannot create or modify anything except Checkout invoices.
Provides read-only access to Binance exchange data from the Watchlist, allowing retrieval of source information for a specific Binance wallet or account.
Supports creating USD invoices payable in Bitcoin (BTC) on the Bitcoin network and tracking their payment status.
Supports accepting USDT and USDC payments on the Ethereum mainnet for created invoices.
Supports accepting USDT and USDC payments on the Solana network for created invoices.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@FinCobra MCPCreate a $250 invoice for consulting services"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
FinCobra MCP
FinCobra MCP 0.4.0 connects an AI client to your Checkout and Watchlist account. Use this Streamable HTTP server URL:
https://watch.fincobra.com/api/mcpConnect
Add the URL as a remote MCP server in your client. Select Connect or Sign in, complete FinCobra sign-in in your browser, and approve the permissions shown. Return to your AI client when the browser finishes.
For Codex:
codex mcp add fincobra --url https://watch.fincobra.com/api/mcp
codex mcp login fincobra --scopes watchlist:read,checkout:readCodex can start browser authorization during mcp add and request all supported permissions. For a read-only connection, close that initial prompt and use the explicit mcp login --scopes command above.
For Claude Code:
claude mcp add --transport http fincobra https://watch.fincobra.com/api/mcpThen use /mcp in Claude Code to sign in. In clients with an MCP settings screen, use the same URL and their connection control. The client must support Streamable HTTP and MCP OAuth.
The client stores OAuth credentials and renews access automatically. Access tokens last one hour. A connection lasts up to 90 days. After expiry or revocation, the client opens browser authorization again. Revoke a connection in FinCobra Settings → Security → Connected MCP clients.
Related MCP server: Conekta MCP Server
Verify the connection
Ask your agent: “Check my FinCobra connection.” It should call get_connection_status and return the account ID, approved scopes, access expiry, and server version. To read your portfolio, ask it to call get_net_worth.
A saved server entry alone does not prove that the client loaded its tools. If tools are absent, check the MCP server status in the client, sign in if required, and use its reload control. Clients that load tool definitions only when a conversation starts require a new conversation after setup.
Tools and permissions
When a client omits scopes, FinCobra uses watchlist:read and checkout:read. Some clients request all advertised scopes. Check the permissions on the consent page. Only tools covered by the approved scopes are listed. To enable writes, request the additional scope in your MCP client's OAuth settings and approve it in the browser. In Codex, use:
codex mcp login fincobra --scopes watchlist:read,checkout:read,watchlist:write,checkout:writeTool | Required scope | Result |
| Any valid connection | Account, scopes, access expiry, and version |
|
| Portfolio totals and all sources |
|
| Wallets, exchanges, bank/cash entries, property, and cars |
|
| One source selected by its ID |
|
| One Checkout invoice selected by its ID |
|
| Add a manual car valuation |
|
| Create an invoice and return its payment URL |
Portfolio values
get_net_worth, list_sources, and get_source accept an optional currency. USD is the default. Original amounts and USD values remain in the response when another reporting currency is selected. sourceBalances keeps available, staked, Spot, Funding, and Earn amounts separate where the source provides them. lockedBalance is separate from these available source amounts.
Supported reporting currencies are USD, VND, EUR, GBP, JPY, SGD, AUD, CAD, CHF, CNY, RUB, GEL, THB, BTC, and XAU. XAU means one troy ounce of gold.
Responses include tracked wallets, exchanges (including Hyperliquid), and manual assets. Property values use net equity after the recorded mortgage. Manual entries are estimates that you maintain in Watchlist.
Unsupported tokens hidden by Watchlist have includedInTotal: false, exclusionReason: "unsupported_token", and no invented price. They do not block portfolio totals. If a supported asset or source cannot be valued, the response marks its status and leaves affected totals unavailable. Check valuationStatus and notes before using an incomplete total.
OAuth protocol
FinCobra Identity provides authorization-code OAuth with S256 PKCE, resource binding, dynamic client registration, public client metadata documents, rotating refresh tokens, and revocation. Browser consent uses your FinCobra account and applies only to the listed permissions.
Protected resource metadata:
https://watch.fincobra.com/.well-known/oauth-protected-resource/api/mcpAuthorization server metadata:
https://watch.fincobra.com/.well-known/oauth-authorization-serverMCP resource:
https://watch.fincobra.com/api/mcp
An unauthenticated MCP request returns HTTP 401 with the protected resource metadata URL in WWW-Authenticate. OAuth clients discover the endpoints from these documents. Authorization codes and tokens are bound to their client and resource. Refresh token reuse revokes the connection. Account security changes also invalidate access.
Server package
The fincobra-mcp npm package contains the hosted MCP handler and typed FinCobra clients. FinCobra Identity uses version 0.4.0. Client setup uses the hosted URL above.
createFincobraMcpHandler takes trusted service URLs and a resolveAccessToken callback. The callback must validate the bearer token against the authorization server and return its account, client, scopes, resource, and expiry. The handler checks the resource, expiry, and browser origin before it creates the MCP context for that request.
Development checks:
npm ci
npm run build
npm run lint
npm testAvailable Tools
5 toolscreate_invoiceCreate Checkout invoiceA
Create a FinCobra Checkout invoice in USD and return the hosted payment URL. Payment methods (Bitcoin, Ethereum USDT/USDC, Solana USDT/USDC, Arbitrum One USDC, Base USDC) are those enabled in the merchant dashboard.
| Name | Required | Description | Default |
|---|---|---|---|
| amountUsd | Yes | Invoice amount in USD. Minimum 0.01. Settlement coins and chains come from the merchant Checkout payment methods, not this field. | |
| description | No | Product or service description shown on the invoice. | |
| customerEmail | No | Customer email for reconciliation. | |
| merchantReference | No | Your order or internal reference. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | Yes | |
| amountUsd | Yes | |
| paymentUrl | Yes | |
| productName | Yes | |
| paymentCoverage | Yes | |
| merchantReference | Yes | |
| receivedAmountUsd | Yes | |
| confirmedAmountUsd | Yes | |
| remainingAmountUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description discloses the core side effect (creates an invoice), the return value (hosted payment URL), and an important behavioral constraint (payment methods come from the merchant dashboard, not from parameters). This adds meaningful context beyond the annotations, which only indicate readOnly, idempotent, and destructive hints are all false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The primary action and return value are front-loaded, and the payment-method caveat is included compactly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a create operation with a 100%-covered schema, an output schema, and non-destructive annotations, the description and schema together give an agent everything needed to invoke the tool correctly. The key operational fact—that payment methods come from the merchant dashboard—is explicitly stated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter, including the minimum amount and field purposes. The description adds no new parameter-level meaning beyond stating that the invoice is in USD and that payment methods are dashboard-controlled.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Create a FinCobra Checkout invoice in USD' and clearly names the return value ('hosted payment URL'). This distinguishes it from sibling tools like get_invoice and list_sources, which are retrieval operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies this tool is for creating checkout invoices and explains that payment methods are controlled by the merchant dashboard rather than caller input. It does not explicitly say 'use this instead of get_invoice', but the creation-versus-read distinction makes the intended use clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_invoiceGet Checkout invoiceARead-onlyIdempotent
Look up a known FinCobra Checkout invoice by id. Returns status, hosted payment URL, and amounts.
| Name | Required | Description | Default |
|---|---|---|---|
| invoiceId | Yes | Invoice id returned by create_invoice. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| status | Yes | |
| amountUsd | Yes | |
| paymentUrl | Yes | |
| productName | Yes | |
| paymentCoverage | Yes | |
| merchantReference | Yes | |
| receivedAmountUsd | Yes | |
| confirmedAmountUsd | Yes | |
| remainingAmountUsd | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, covering the safety profile. The description adds behavioral value by specifying the returned data (status, URL, amounts), which is not expressed in the annotations. No contradictions or undisclosed side effects are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that front-loads the core action ('Look up'), specifies the resource, and lists the key outputs. Every word earns its place, with no redundancy or filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
This is a simple single-parameter read operation, the annotations fully cover its side-effect profile, an output schema exists to describe return values, and the description states the essential return fields. Nothing material is missing for an agent to select and invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% — the only parameter, invoiceId, is already documented with 'Invoice id returned by create_invoice.' The description adds no additional parameter meaning beyond saying lookup is by id, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Look up') and a specific resource ('a known FinCobra Checkout invoice by id'), clearly distinguishing it from sibling tools like create_invoice or list_sources. It also states the key return contents (status, hosted payment URL, amounts), leaving no ambiguity about the tool's function.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'a known invoice by id' makes it clear this tool is for retrieving an existing invoice, not for creating or listing. It implies the invoice id comes from a prior create_invoice call, which sets context. However, it does not explicitly name alternatives or exclusion conditions, so it stops short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_net_worthGet Watchlist net worthARead-onlyIdempotent
Read Watchlist net worth from existing list APIs. Banks, cash, and property are manual entries. Live crypto USD balances are not on the list API and come back as null.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| notes | Yes | |
| cashUsd | Yes | |
| banksUsd | Yes | |
| cryptoUsd | Yes | |
| propertyUsd | Yes | |
| sourceCounts | Yes | |
| manualTotalUsd | Yes | |
| unpricedManualAssetCount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, and non-destructive behavior. The description adds valuable context beyond those annotations by revealing that banks, cash, and property are manual entries and that live crypto USD balances are null on the list API. This prepares the agent for null values and the nature of the underlying data.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences with no filler. The first sentence front-loads the core purpose and data source, and the second provides essential caveats about manual entries and null crypto balances. Every sentence contributes useful information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, a read-only annotation set, and an output schema present, the description is complete for practical use. It explains the two most important behavioral caveats — manual entries and null crypto values — that an agent would need to interpret results correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so the schema already fully covers input semantics. The description is not required to add parameter details, and it doesn't attempt to invent any — the baseline of 4 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Read') and resource ('Watchlist net worth'), and clarifies that it aggregates from existing list APIs. This makes the tool's purpose immediately distinguishable from invoice and source siblings like get_invoice and list_sources.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies this is the tool to call when the agent needs a watchlist net worth figure, and it gives caveats about manual entries and crypto nulls. However, it does not explicitly state when to prefer this over alternatives such as list_sources, nor does it state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_sourceGet Watchlist sourceARead-onlyIdempotent
Look up one Watchlist source by the id returned from list_sources.
| Name | Required | Description | Default |
|---|---|---|---|
| sourceId | Yes | Source id from list_sources, such as wallet:12, exchange:binance, or manual:3. |
Output Schema
| Name | Required | Description |
|---|---|---|
| id | Yes | |
| kind | Yes | |
| label | Yes | |
| value | Yes | |
| currency | Yes | |
| provider | Yes | |
| tokenPnl | Yes | |
| valueUsd | Yes | |
| blockchain | Yes | |
| accountType | Yes | |
| displayAddress | Yes | |
| mortgageBalance | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is covered. The description adds little behavioral context beyond the id provenance, and it does not contradict the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
One clean sentence with no filler or repeated schema content. The key constraint, that the id comes from list_sources, is front-loaded and immediately actionable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a single required parameter, full schema coverage, comprehensive annotations, and an output schema present, nothing essential for calling this tool correctly is missing. The description is fully adequate for the tool's low complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents sourceId at 100% coverage, including examples like wallet:12, exchange:binance, and manual:3. The description merely restates the provenance relationship already present in the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description says 'Look up one Watchlist source by the id returned from list_sources.' This uses a specific verb, names the resource, and clearly indicates singular lookup behavior, distinguishing it from list_sources without needing to inspect schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states that the id comes from list_sources, establishing a clear call sequence for the agent. It does not explicitly enumerate exclusions or alternatives, but the 'one ... by id' phrasing sufficiently implies the contrast with listing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_sourcesList Watchlist sourcesARead-onlyIdempotent
List Watchlist wallets, exchanges, and manual bank/cash/property sources. Includes stored token PnL cost-basis rows when the API has them. Does not add wallets or edit assets.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| sources | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, covering the safety profile. The description adds useful behavioral nuance: the response conditionally includes stored token PnL cost-basis rows when the API has them, and the operation never mutates data. This complements the annotations without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two crisp sentences lead with the primary action, then add a conditional inclusion detail, then close with a scope boundary. There is no filler and every sentence contributes information an agent needs to invoke the tool correctly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, read-only listing tool with an output schema available, the description covers what is listed, the conditional PnL inclusion, and the non-mutating nature. Nothing essential is missing for an agent to decide on and execute this tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool accepts no parameters, so the input schema is already complete. Per the baseline for zero-parameter tools, there is nothing further the description needs to compensate for, and it introduces no parameter-related ambiguity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a defined resource ('Watchlist wallets, exchanges, and manual bank/cash/property sources'), which immediately clarifies what is returned. The boundary clause 'Does not add wallets or edit assets' distinguishes the tool from mutation-focused siblings like create_invoice. This makes the tool's scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly establishes when to use the tool: to retrieve a read-only list of watchlist sources, including PnL cost-basis rows when available. It also states a when-not boundary: it does not add wallets or edit assets. However, it never names sibling alternatives such as get_source for a single source, so it stops short of full 5 guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v0.2.0- First observed
create_invoice - First observed
get_invoice - First observed
get_net_worth - First observed
get_source - First observed
list_sources
TDQS
Scored across 5 tools
All five tools have clearly distinct responsibilities: invoice lookup/creation are separate, and net-worth/source actions are separate. get_source and list_sources follow the standard item-vs-collection pattern. There is no meaningful overlap.
Names consistently follow a verb_noun pattern: get_invoice, create_invoice, list_sources, get_source, and get_net_worth. The convention is uniform and predictable across both subdomains.
Five tools is a compact, appropriate size for a server covering Checkout invoices and Watchlist reads. Each tool serves a distinct need without redundancy.
The invoice side covers create and lookup but not list, cancel, or update operations, and the Watchlist side is read-only with no way to add or edit sources. These are notable lifecycle gaps, though the core read and checkout workflows are present.
Maintenance
Related MCP Connectors
Manage Apollo invoices and customers with entity-scoped OAuth and optional read/write access.
Create and manage checkout pages, event ticketing, forms, customers, payments and subscriptions.
Read payment settings, orders and receipts, create payment links and API keys.
Query and manage Mercoa AP/AR bill-pay: entities, invoices, transactions and payment methods.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables cryptocurrency payment processing through the Infini Payment API, supporting order management, multi-chain withdrawals, and webhook verification for USDC/USDT transactions.71AGPL 3.0

Conekta MCP Serverofficial
FlicenseAqualityDmaintenanceEnables interaction with the Conekta payment API to manage orders, customers, subscriptions, and financial transactions. It provides a comprehensive suite of tools for core payment operations like processing refunds, creating checkouts, and monitoring account balances.322-- AlicenseBqualityDmaintenanceEnables interaction with the Telnyx API for billing, phone numbers, and messaging.12MIT

fintaro-mcpofficial
AlicenseAqualityDmaintenanceEnables MCP-capable agents to read Fintaro invoices and transactions, and upload receipts, via a scoped API key with PII-safe projections.6Apache 2.0