Instamojo MCP by usefulapi
Read Instamojo payment requests, payments and refunds; create payment links and refund payments.
Should I use this
Quality & Safety
Findings (4)
- LOWin instamojo_list_payment_requests
- LOWin instamojo_create_payment_request
- LOWin instamojo_disable_payment_request
- LOWin instamojo_enable_payment_request
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"instamojo": {
"url": "https://instamojo.usefulapi.io/mcp"
}
}
}Remote endpoints
https://instamojo.usefulapi.io/mcpstreamable-httpWhat it can do
Tool inventory
Tools (9)
🟢instamojo_list_payment_requests(page, limit)
List the payment requests (payment links) of the account with id, purpose, amount (INR), buyer, status (Pending, Sent, Failed, Completed), short and long URL and timestamps. Paged: use next_page. GET /payment-requests/.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"limit": {
"description": "Rows per page, 1-500 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 500
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢instamojo_get_payment_request(payment_request_id)
One payment request by id, with its status and the payments made against it (the payment ids go to instamojo_get_payment). GET /payment-requests/{id}/.
Input Schema
{
"type": "object",
"properties": {
"payment_request_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "Payment request id (a 32-character hex id from instamojo_list_payment_requests)."
}
},
"required": [
"payment_request_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡instamojo_create_payment_request(amount, purpose, buyer_name, email, phone, ...)
WRITE: create a payment request (a payment link) and return its id and URLs (longurl, shorturl) to share with the buyer. Amount is in INR. The buyer is NOT emailed or texted unless send_email / send_sms is true (they then need email / phone). Nothing is charged; the buyer pays on the link. POST /payment-requests/.
Input Schema
{
"type": "object",
"properties": {
"amount": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000000,
"description": "Amount in INR (Instamojo documents a minimum of 9 and a maximum of 200000 per request)."
},
"purpose": {
"type": "string",
"minLength": 1,
"maxLength": 255,
"description": "What the payment is for (shown to the buyer). Often used as your own order reference."
},
"buyer_name": {
"description": "Name of the payer.",
"type": "string",
"minLength": 1,
"maxLength": 100
},
"email": {
"description": "Email of the payer (required when send_email is true).",
"type": "string",
"maxLength": 200,
"format": "email",
"pattern": "^(?:[A-Za-z0-9_'+\\-]+\\.)*[A-Za-z0-9_'+\\-]*[A-Za-z0-9_+-]@(?:[A-Za-z0-9][A-Za-z0-9\\-]*\\.)+[A-Za-z]{2,}$"
},
"phone": {
"description": "Phone number of the payer (required when send_sms is true).",
"type": "string",
"minLength": 5,
"maxLength": 20
},
"redirect_url": {
"description": "URL the buyer is redirected to after paying (Instamojo appends payment_request_id, payment_status and payment_id).",
"type": "string",
"maxLength": 500,
"format": "uri"
},
"webhook": {
"description": "URL Instamojo POSTs the payment details to after a payment.",
"type": "string",
"maxLength": 500,
"format": "uri"
},
"allow_repeated_payments": {
"description": "true = the link accepts several payments (Instamojo's default); false = one payment only.",
"type": "boolean"
},
"send_email": {
"description": "true = Instamojo emails the link to the payer (needs email). Default false: nothing is sent.",
"type": "boolean"
},
"send_sms": {
"description": "true = Instamojo texts the link to the payer (needs phone). Default false: nothing is sent.",
"type": "boolean"
}
},
"required": [
"amount",
"purpose"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴instamojo_disable_payment_request(payment_request_id)
WRITE: disable a payment request so its link no longer accepts payments (instamojo_enable_payment_request undoes it). Existing payments are not touched. POST /payment-requests/{id}/disable/.
Input Schema
{
"type": "object",
"properties": {
"payment_request_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "Payment request id."
}
},
"required": [
"payment_request_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟡instamojo_enable_payment_request(payment_request_id)
WRITE: enable a previously disabled payment request so its link accepts payments again. POST /payment-requests/{id}/enable/.
Input Schema
{
"type": "object",
"properties": {
"payment_request_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "Payment request id."
}
},
"required": [
"payment_request_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢instamojo_get_payment(payment_id)
One payment by its id (MOJO...): status (Credit = paid, Failed), amount, fees, buyer, instrument (card, UPI, netbanking, wallet), failure reason, payout and the payment request it belongs to. GET /payments/{id}/.
Input Schema
{
"type": "object",
"properties": {
"payment_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "Payment id, e.g. MOJO5a06005J21512197 (from instamojo_get_payment_request)."
}
},
"required": [
"payment_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢instamojo_list_refunds(page, limit)
List refunds with id (case id), payment id, status, reason type, refund and total amount (INR) and date. Paged: use next_page. GET /refunds/.
Input Schema
{
"type": "object",
"properties": {
"page": {
"description": "Page number, 1-based (default 1). Use next_page from the previous reply.",
"type": "integer",
"minimum": 1,
"maximum": 100000
},
"limit": {
"description": "Rows per page, 1-500 (default 50).",
"type": "integer",
"minimum": 1,
"maximum": 500
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🟢instamojo_get_refund(refund_id)
One refund by its id (the case id from instamojo_list_refunds, e.g. C5c0751272). GET /refunds/{id}/.
Input Schema
{
"type": "object",
"properties": {
"refund_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "Refund id (case id)."
}
},
"required": [
"refund_id"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}🔴instamojo_create_refund(payment_id, type, body, refund_amount, transaction_id, ...)
WRITE (moves money): refund a payment, in full or in part. Instamojo allows only ONE refund per payment, so a partial refund cannot be topped up later. Without confirm: true nothing is sent and the call returns a preview of the refund; ask the user to confirm, then call again with confirm: true. Reason types: RFD = duplicate/delayed payment, TNR = product/service no longer available, QFL = customer not satisfied, QNR = product lost/damaged, EWN = digital download issue, TAN = event was canceled/changed, PTH = problem not described above. POST /refunds/.
Input Schema
{
"type": "object",
"properties": {
"payment_id": {
"type": "string",
"pattern": "^[A-Za-z0-9_-]{1,64}$",
"description": "Payment id (MOJO...) of the payment to refund."
},
"type": {
"type": "string",
"enum": [
"RFD",
"TNR",
"QFL",
"QNR",
"EWN",
"TAN",
"PTH"
],
"description": "Reason code. RFD = duplicate/delayed payment, TNR = product/service no longer available, QFL = customer not satisfied, QNR = product lost/damaged, EWN = digital download issue, TAN = event was canceled/changed, PTH = problem not described above."
},
"body": {
"type": "string",
"minLength": 1,
"maxLength": 500,
"description": "Text explaining the refund."
},
"refund_amount": {
"description": "Amount to refund in INR; default the full paid amount.",
"type": "number",
"exclusiveMinimum": 0,
"maximum": 10000000
},
"transaction_id": {
"description": "Your own unique id for this refund case; Instamojo uses it to refuse a replayed call (mandatory from the second refund case onwards).",
"type": "string",
"minLength": 1,
"maxLength": 64,
"pattern": "^[A-Za-z0-9_-]+$"
},
"confirm": {
"description": "Must be true to actually create the refund; otherwise only a preview is returned.",
"type": "boolean"
}
},
"required": [
"payment_id",
"type",
"body"
],
"$schema": "https://json-schema.org/draft/2020-12/schema"
}Community
Evidence