MishiSpark MCP server
One remote MCP server gives an AI agent read-only access to connected stores: analytics tools, plain-language questions, connections, checkout audits and credits. The agent authenticates with an API key and pays per call with credits.
Endpoint
https://api.spark.mishipay.com/mcp/Streamable HTTP, stateless, JSON responses. Send each request as a POST to the URL.
An API key in X-API-Key or in Authorization: Bearer spk_live_…. A session token (JWT) is not accepted.
- No key or an invalid key: 401 with
WWW-Authenticate: Bearer. - Inactive account: 403. A key without credits yet (status
unfunded): 403KEY_UNFUNDED. A key under review: 403KEY_UNDER_REVIEW. - Each tool checks the key's scopes. A missing scope is a tool error, not an HTTP error.
Create a key in Settings, API keys. API keys come with every plan, including Free.
Connect a client
Most MCP clients take a remote server as a URL plus request headers. The entry below shows the shape. The file name, the key names and the place of the entry differ per client, so check your client's MCP docs. Keep the key out of shared files: use the client's environment-variable support if it has one.
{
"mcpServers": {
"spark": {
"url": "https://api.spark.mishipay.com/mcp/",
"headers": {
"X-API-Key": "spk_live_…"
}
}
}
}Some clients add remote servers only as connectors with an OAuth sign-in. MishiSpark does not support OAuth for connectors yet. It is coming.
Tools and scopes
analytics:read; prepare_export also needs exports:readThe same tools MishiSpark's own chat uses. Each takes a connection_id that the key's owner owns. Two tools work on Odoo only.
get_salescompare_periodsget_source_attributionget_discount_analysisget_cohort_analysissearch_productsget_product_detailget_inventory_detailget_pipelinelookup_orderget_stock_movementsget_product_salesprepare_exportanalyze_orderschat:writeThe AI analyst answers a question with the full tool loop and returns every tool call it made.
askconnections:read / connections:writeList the stores a key may read; connect WooCommerce, Magento, Odoo, Square or Clover with API credentials.
list_connectionsadd_<platform>_connectionaudit:read / audit:writeStart an audit, follow it, and read the report and its screenshots.
checkout_audit_requestcheckout_audit_listcheckout_audit_statuscheckout_audit_reportcheckout_audit_artefactdomains:writeProve ownership of a store domain with a DNS TXT record or a meta tag to unlock owner audits.
claim_domainverify_domainbilling:read / billing:write; pricing needs no scopeRead the balance and the price list; a top-up returns a payment session that a person completes.
credits_balancecredits_topuppricingspark://pricing: the price list (no scope).spark://checkout-audit/{audit_id}/report: an audit report (audit:read).
audit_store(url, effort): run a checkout audit and summarise it.weekly_review(host): compare the two newest complete audits of a store.
Credits
1 credit = $0.01. When the credits cannot cover an analytics tool call or ask, the tool returns an error with the amount to buy, the top-up URL and the challenge id. A person pays at the URL, then the agent calls the tool again. A refused checkout_audit_request returns the error code only (INSUFFICIENT_CREDITS or KEY_BUDGET_EXCEEDED), without a top-up URL: buy credits with credits_topup, or use the REST flow. The same price list is served as JSON at GET /api/v1/pricing and by the pricing tool.
| Call | Credits | USD |
|---|---|---|
Analytics tool call Tool call | 1 | $0.01 |
ask (one question) Chat query | 10 | $0.10 |
prepare_export Export (CSV or Excel) | 5 | $0.05 |
checkout_audit_request (quick) Checkout audit, quick | 300 | $3 |
checkout_audit_request (standard) Checkout audit, standard | 2,500 | $25 |
checkout_audit_request (deep) Checkout audit, deep | 15,000 | $150 |
list_connections, the connect tools, the credit tools and pricing cost no credits.