{"name":"io.github.codespar/mcp-sift","slug":"codespar-mcp-sift","title":null,"description":"MCP server for Sift — global ML fraud detection: real-time risk scoring, decisions, event ingestion","url":"https://mcp.market/server/codespar-mcp-sift","rating":null,"grade":"B","score":82,"certified":false,"status":"active","category":"other","tags":[],"presence":{"score":38,"stars":271,"forks":50,"downloads_week":null,"last_push_at":"2026-08-29T02:02:48.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"npm","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/codespar/mcp-dev-latam","website":null,"version":"0.2.0-alpha.3","remotes":[],"packages":[{"registryType":"npm","identifier":"@codespar/mcp-sift","version":"0.2.0-alpha.3","transport":{"type":"stdio"},"environmentVariables":[{"description":"Sift API key. Used in the Events API request body ($api_key) and as the HTTP Basic auth username (empty password) for Score + Decisions APIs.","isRequired":true,"format":"string","isSecret":true,"name":"SIFT_API_KEY"},{"description":"Sift Account ID. Required for all Decisions API v3 endpoints (path segment /v3/accounts/{account_id}/...).","isRequired":true,"format":"string","name":"SIFT_ACCOUNT_ID"},{"description":"Sift API base URL. Defaults to https://api.sift.com.","format":"string","name":"SIFT_BASE_URL"}]}],"tools":[{"name":"apply_decision_to_content","description":"Apply a workflow Decision to a content item (POST /v3/accounts/{account_id}/users/{user_id}/content/{content_id}/decisions). Content-level decisions target one piece of user-generated content — typical for content_abuse abuse type (e.g. take-down a listing flagged as scam). Requires SIFT_ACCOUNT_ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"apply_decision_to_order","description":"Apply a workflow Decision to a specific order (POST /v3/accounts/{account_id}/users/{user_id}/orders/{order_id}/decisions). Order-level decisions target a single transaction rather than the whole user (e.g. 'approve_order_payment_abuse' on a manually-reviewed high-value order). Requires SIFT_ACCOUNT_ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"apply_decision_to_session","description":"Apply a workflow Decision to a session (POST /v3/accounts/{account_id}/users/{user_id}/sessions/{session_id}/decisions). Session-level decisions target a specific authenticated session — typical for account_abuse abuse type (e.g. force-logout a session that was hijacked). Requires SIFT_ACCOUNT_ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"apply_decision_to_user","description":"Apply a workflow Decision to a user (POST /v3/accounts/{account_id}/users/{user_id}/decisions). Decisions are the modern replacement for Labels — they both classify the entity for Sift's ML and trigger any configured side effects (e.g. a Block decision on a $payment_abuse user will cause that user's future $transaction events to be blocked). Requires SIFT_ACCOUNT_ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_content_decisions","description":"Fetch the decisions currently applied to a content item (GET /v3/accounts/{account_id}/users/{user_id}/content/{content_id}/decisions). Requires SIFT_ACCOUNT_ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_order_decisions","description":"Fetch the decisions currently applied to an order (GET /v3/accounts/{account_id}/orders/{order_id}/decisions). Note: the order-level GET path does NOT include user_id, unlike the order-level apply path. Requires SIFT_ACCOUNT_ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"get_session_decisions","description":"Fetch the decisions currently applied to a session (GET /v3/accounts/{account_id}/users/{user_id}/sessions/{session_id}/decisions). Requires SIFT_ACCOUNT_ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_user_decisions","description":"Fetch the decisions currently applied to a user (GET /v3/accounts/{account_id}/users/{user_id}/decisions). Returns the active decision per abuse type. Requires SIFT_ACCOUNT_ID.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_user_score","description":"Fetch the latest Sift score(s) for a user (GET /v205/users/{user_id}/score). Does NOT trigger a rescore — it returns whatever score was last computed. The score is a float in [0, 1]; higher means more fraud-like. Optionally filter by abuse_types.","write_action":false,"price_micros":0,"input_schema":null},{"name":"get_workflow_run","description":"Fetch the status of a Sift Workflow run (GET /v3/accounts/{account_id}/workflows/runs/{run_id}). The run_id is returned in the response to events sent with return_workflow_status=true. The run status tells you which route of the workflow was taken and which decisions were applied. Requires SIFT_ACCOUNT_ID.","write_action":true,"price_micros":0,"input_schema":null},{"name":"label_user","description":"Label a user as fraud or not-fraud via the legacy Labels API (POST /v205/users/{user_id}/labels). Labels are the classic supervised-learning feedback channel for Sift's ML model. Note: most new integrations use the Decisions API (apply_decision_to_user) instead — labels are kept for backward compatibility. Still supported for ongoing model feedback.","write_action":false,"price_micros":0,"input_schema":null},{"name":"link_session_to_user","description":"Send a $link_session_to_user event to Sift's Events API (POST /v205/events). Use when a user signs in or up after pre-login activity — links the anonymous session's signals back to the now-known user, retroactively scoring earlier events.","write_action":true,"price_micros":0,"input_schema":null},{"name":"rescore_user","description":"Force Sift to recompute a user's score right now (POST /v205/users/{user_id}/score). Use when you have externally-observed signal that should invalidate the last score (e.g. a manual decision) but have not sent a new event.","write_action":false,"price_micros":0,"input_schema":null},{"name":"send_chargeback","description":"Send a $chargeback event to Sift's Events API (POST /v205/events). Convenience wrapper around send_event for the most common ML-feedback signal: a confirmed chargeback. Sift uses chargeback events as a strong negative-label signal for the payment_abuse model. Optionally request a synchronous score with return_score=true.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_content_status","description":"Send a $content_status event to Sift's Events API (POST /v205/events). Used to update the moderation status of user-generated content (listings, posts, messages, profiles) — feeds Sift's content_abuse model.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_custom_event","description":"Send a custom (merchant-defined) event to Sift's Events API (POST /v205/events). Use for events not covered by Sift's reserved $-prefixed catalog. Custom event names should NOT start with '$' — Sift treats anything without the $ prefix as merchant-defined. Useful for domain-specific signals (e.g. 'kyc_check_passed', 'phone_verified').","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_event","description":"Send a fraud signal to Sift's Events API (POST /v205/events). The `type` parameter selects the event kind ($create_order, $transaction, $login, $create_account, $update_account, $chargeback, $order_status, etc). Additional fields ($user_id, $session_id, $order_id, custom fields) are passed via `fields` and merged into the body. Use `return_score=true` to get a synchronous score in the response.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_login","description":"Send a $login event to Sift's Events API (POST /v205/events). Convenience wrapper for tracking login attempts — both successful and failed attempts feed Sift's account_abuse model.","write_action":true,"price_micros":0,"input_schema":null},{"name":"send_logout","description":"Send a $logout event to Sift's Events API (POST /v205/events). Convenience wrapper for tracking session terminations.","write_action":true,"price_micros":0,"input_schema":null},{"name":"unlabel_user","description":"Remove any existing label on a user (DELETE /v205/users/{user_id}/labels). Optionally scope by abuse_type.","write_action":true,"price_micros":0,"input_schema":null}],"scan":{"score":82,"grade":"B","scanned_at":"2026-09-26T21:19:13.981Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-26T21:19:13.944Z","components":{"code":{"score":25,"max":25,"notes":["6 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":6,"max":15,"notes":["static API keys via environment variables"]},"maintenance":{"score":15,"max":15,"notes":["last push 29 days ago"]},"identity":{"score":7,"max":10,"notes":["registry namespace matches repository owner"]}},"findings":[],"inputs":{"packages":[{"registryType":"npm","identifier":"@codespar/mcp-sift","version":"0.2.0-alpha.3","found":true,"license":"MIT","hasInstallScripts":false,"dependencyCount":1,"publishedAt":"2026-06-22T18:41:20.644Z"}],"repo":{"found":true,"owner":"codespar","repo":"mcp-dev-latam","archived":false,"pushedAt":"2026-08-29T02:02:48Z","stars":271,"forks":50,"openIssues":10,"ownerType":"Organization","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/269058982?v=4","ownerCreatedAt":"2026-03-18T00:40:56Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/269058982?v=4&s=128","source":"github"},"presence":{"stars":271,"forks":50,"downloadsWeek":null,"license":"MIT","lastPushAt":"2026-08-29T02:02:48.000Z","score":38}}}},"grade_history":[],"reviews":[]}