mcpField
M
mcp-sift

mcp-sift

Local
github.com/codesparSecurity275Updated 4w ago

About mcp-sift

mcp-sift is an MCP server for Sift, a global ML-based fraud detection platform. It covers event ingestion, risk scoring and decision handling for payment, account, content and promotion abuse. It is the third server in the fraud category, alongside ClearSale and Konduto.

Key features

  1. 01Event ingestion including custom events
  2. 02User score lookup and forced rescoring
  3. 03Label and unlabel operations for users
  4. 04Decisions API v3 application and lookup
  5. 05Workflow run status retrieval

Use cases

  1. 01Send fraud signals at signup, login and order events
  2. 02Fetch risk scores before approving high-value checkout
  3. 03Write manual review outcomes back to Sift as decisions

MCP support

This is an MCP server that exposes 20 tools to MCP clients for calling Sift's Events, Score and Decisions APIs.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"codespar-mcp-sift": {
"command": "npx",
"args": [
"-y",
"@codespar/mcp-sift"
],
"env": {
"SIFT_API_KEY": "<SIFT_API_KEY>",
"SIFT_ACCOUNT_ID": "<SIFT_ACCOUNT_ID>",
"SIFT_BASE_URL": "<SIFT_BASE_URL>"
}
}
}
}
Run commandnpx -y @codespar/mcp-sift
Environment variables to set
SIFT_API_KEYSecretSift API key. Used in the Events API request body ($api_key) and as the HTTP Basic auth username (empty password) for Score + Decisions APIs.
SIFT_ACCOUNT_IDSift Account ID. Required for all Decisions API v3 endpoints (path segment /v3/accounts/{account_id}/...).
SIFT_BASE_URLSift API base URL. Defaults to https://api.sift.com.

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npm@codespar/mcp-sift0.2.0-alpha.3

Tools

20

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
typestringYesSift event type, with the $ prefix — e.g. $create_order, $transaction, $login, $create_account, $update_account, $chargeback, $order_status, $link_session_to_user. See developers.sift.com for the full catalog.
fieldsobjectYesEvent payload fields. Include Sift reserved fields with the $ prefix ($user_id, $session_id, $order_id, $amount, $currency_code, $payment_methods, $billing_address, $shipping_address, $items, ...) plus any custom merchant fields. $api_key is injected automatically.
abuse_typesstringNoComma-separated list of abuse types to score (payment_abuse,account_abuse,content_abuse,promotion_abuse,legacy). Only used when return_score=true.
return_scorebooleanNoIf true, returns a score in the response (synchronous scoring).
force_workflow_runbooleanNoIf true, re-runs workflows even if no relevant signals changed.
return_workflow_statusbooleanNoIf true, returns the status of any workflow runs triggered by this event.

Details

From the project README

@codespar/mcp-sift

MCP server for Sift — global enterprise ML-based fraud detection.

Third entry in the CodeSpar fraud category after @codespar/mcp-clearsale and @codespar/mcp-konduto. Sift is the global / enterprise counterpart to the two BR-native antifraud servers.

Positioning

ClearSaleKondutoSift
GeographyBrazilBrazilGlobal (US-HQ, ~30 countries)
Founded200120142011
StrengthChargeback history dbBehavioral device intelligenceMulti-abuse-type ML + workflow decisions
ShapeScore + manual reviewAPI-first, tight surfaceEvent stream in, scores + decisions out
ScopeOrder fraudOrder fraudPayment, account, content, promotion abuse

Also distinct from @codespar/mcp-jumio, which is global KYC / identity verification — a different layer than fraud scoring.

Sift's API shape

Sift is built around three APIs that work together:

  1. Events API (/v205/events) — you POST every interesting signal (account creation, login, order, chargeback, ...) as a $-prefixed event.
  2. Score API (/v205/users/{user_id}/score) — you GET the latest ML score for a user, or POST to force a rescore. Scores are floats in [0, 1] per abuse type (payment_abuse, account_abuse, content_abuse, promotion_abuse).
  3. Decisions API v3 (/v3/accounts/{account_id}/...) — workflows in the Sift console turn scores into Decisions (block_user_payment_abuse, approve_order_payment_abuse, etc). You can apply a decision directly, read the current decisions on a user/order, or fetch the status of a workflow run.

Tools (20)

ToolPurpose
send_eventSend a fraud signal to Sift's Events API (POST /v205/events).
get_user_scoreFetch the latest Sift score(s) for a user (GET /v205/users/{user_id}/score).
rescore_userForce Sift to recompute a user's score right now (POST /v205/users/{user_id}/score).
label_userLabel a user as fraud or not-fraud via the legacy Labels API (POST /v205/users/{user_id}/labels).
unlabel_userRemove any existing label on a user (DELETE /v205/users/{user_id}/labels).
apply_decision_to_userApply a workflow Decision to a user (POST /v3/accounts/{account_id}/users/{user_id}/decisions).
apply_decision_to_orderApply a workflow Decision to a specific order (POST /v3/accounts/{account_id}/users/{user_id}/orders/{order...
get_user_decisionsFetch the decisions currently applied to a user (GET /v3/accounts/{account_id}/users/{user_id}/decisions).
get_order_decisionsFetch the decisions currently applied to an order (GET /v3/accounts/{account_id}/orders/{order_id}/decisions).
get_workflow_runFetch the status of a Sift Workflow run (GET /v3/accounts/{account_id}/workflows/runs/{run_id}).
send_chargebackSend a $chargeback event to Sift's Events API (POST /v205/events).
send_loginSend a $login event to Sift's Events API (POST /v205/events).
send_logoutSend a $logout event to Sift's Events API (POST /v205/events).
send_content_statusSend a $content_status event to Sift's Events API (POST /v205/events).
link_session_to_userSend a $link_session_to_user event to Sift's Events API (POST /v205/events).
send_custom_eventSend a custom (merchant-defined) event to Sift's Events API (POST /v205/events).
apply_decision_to_sessionApply a workflow Decision to a session (POST /v3/accounts/{account_id}/users/{user_id}/sessions/{session_id...
apply_decision_to_contentApply a workflow Decision to a content item (POST /v3/accounts/{account_id}/users/{user_id}/content/{conten...
get_session_decisionsFetch the decisions currently applied to a session (GET /v3/accounts/{account_id}/users/{user_id}/sessions/...
get_content_decisionsFetch the decisions currently applied to a content item (GET /v3/accounts/{account_id}/users/{user_id}/cont...

Install

npm install @codespar/mcp-sift@alpha

Environment

SIFT_API_KEY="..."         # required, secret
SIFT_ACCOUNT_ID="..."      # required for all Decisions API v3 calls
SIFT_BASE_URL="..."        # optional; defaults to https://api.sift.com

Authentication

  • Events API — $api_key is injected into the JSON body. The server handles this automatically.
  • Score API + Decisions API v3 — HTTP Basic, API key as username, empty password. The server handles the base64 encoding.

Pass the raw key in SIFT_API_KEY.

Typical flow

  1. Instrument your app: every signup, login, profile update, order, and chargeback becomes a send_event call with the right $type.
  2. On high-stakes moments (checkout, withdrawal), call send_event with return_score: true to get an inline decision.
  3. Or poll get_user_score / get_order_decisions asynchronously after a workflow run completes.
  4. For manual review outcomes, call apply_decision_to_user or apply_decision_to_order with a Decision ID configured in the Sift console and source: "MANUAL_REVIEW".
  5. When a chargeback is confirmed, send a $chargeback event AND either apply_decision_to_user with a Block decision or label_user with is_bad: true, abuse_type: "payment_abuse". Decisions are preferred for new integrations; Labels are kept for backward compatibility.

Alpha note

Shipped as 0.1.0-alpha.1. All endpoint paths are verified against Sift's official Ruby SDK (SiftScience/sift-ruby): rest_api_path, user_score_api_path, users_label_api_path, user_decisions_api_path, order_decisions_api_path, workflow_status_path, and the Decision ApplyTo path builder.

Scope vs. the original brief:

  • Shipped & verified: send_event, get_user_score, rescore_user, label_user, unlabel_user, apply_decision_to_user, apply_decision_to_order, get_user_decisions, get_order_decisions, get_workflow_run.
  • Dropped — not in the public SDK:
    • get_session_score (/v205/sessions/{session_id}/score) — no equivalent helper in the Ruby SDK; session-level scoring in Sift flows through session-level Decisions and Workflow runs, not a dedicated score endpoint.
    • list_workflow_runs (GET /v3/accounts/{account_id}/workflows/runs) — only GET /{run_id} is implemented in the public SDK. In practice, Sift surfaces run_ids in event responses rather than via a list endpoint.
    • get_psychology_score — no such endpoint in the public SDK.

The developers.sift.com reference pages gate deep-link URLs (403 on several paths), so we used the official SDK as the source of truth. Promote to 0.1.0 once a customer confirms (or denies) the dropped endpoints against the full Decisions / Score API reference in Sift's admin console.

Run

# stdio (default — for Claude Desktop, Cursor, etc)
npx @codespar/mcp-sift

# HTTP (for server-to-server testing)
MCP_HTTP=true MCP_PORT=3000 npx @codespar/mcp-sift

Category

fraud — third entry after ClearSale and Konduto. BR merchants operating internationally commonly pair Sift (global payment/account abuse) with ClearSale or Konduto (BR-specific chargeback history / device intelligence).

Enterprise

Need governance, budget limits, and audit trails for agent payments? CodeSpar Enterprise adds policy engine, payment routing, and compliance templates on top of these MCP servers.

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.