@ixo/asks-mcp 2.0.0-dev.4 → 2.0.0-dev.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/asks-mcp.mjs +11 -11
- package/package.json +1 -1
package/dist/asks-mcp.mjs
CHANGED
|
@@ -266910,11 +266910,11 @@ async function cashOut(deps, input) {
|
|
|
266910
266910
|
const kyc = ready.body.kyc;
|
|
266911
266911
|
if (!ready.body.linkedin) return "Cash-out needs your LinkedIn connected first. Next: connect_linkedin (about a minute), then cash_out again.";
|
|
266912
266912
|
const available = payBase / 1e6;
|
|
266913
|
-
if (available <= 0) return "You have
|
|
266913
|
+
if (available <= 0) return "You have nothing to cash out yet.";
|
|
266914
266914
|
const kycLine = kyc?.status === "verified" ? "" : kyc?.status === "expired" ? `Your identity check has expired. Renew it first: ${deps.site.replace(/\/+$/, "")}/me/identity` : `Cash-out needs an identity check. If you haven't done it yet, do it first: ${deps.site.replace(/\/+$/, "")}/me/identity`;
|
|
266915
266915
|
if (kyc?.status === "expired") return kycLine;
|
|
266916
266916
|
const country = input.country?.trim().toUpperCase();
|
|
266917
|
-
if (!country || !/^[A-Z]{2}$/.test(country)) return [`You have $${available.toFixed(2)}
|
|
266917
|
+
if (!country || !/^[A-Z]{2}$/.test(country)) return [`You have $${available.toFixed(2)} to cash out.`, kycLine, 'Which country are you in? (Ask the person; then call cash_out with country, like "NG" or "DE".)'].filter(Boolean).join("\n");
|
|
266918
266918
|
const info = await call2(deps, `/api/cashout/info?country=${country}`);
|
|
266919
266919
|
if (info.status !== 200) return said3(info);
|
|
266920
266920
|
const methods = info.body.methods ?? [];
|
|
@@ -266923,7 +266923,7 @@ async function cashOut(deps, input) {
|
|
|
266923
266923
|
const chosen2 = methods.find((one) => one.method === input.method);
|
|
266924
266924
|
if (!chosen2)
|
|
266925
266925
|
return [
|
|
266926
|
-
`You have $${available.toFixed(2)}
|
|
266926
|
+
`You have $${available.toFixed(2)} to cash out. Ways to get paid in ${country}:`,
|
|
266927
266927
|
...methods.map((one) => `- ${WAYS[one.method] ?? one.method} (method "${one.method}"): $${one.minUsd} to $${one.maxUsd}`),
|
|
266928
266928
|
`Fee: ${fee?.bps ? `${fee.bps / 100}%` : "none"}${fee?.minUsd && Number(fee.minUsd) > 0 ? `, at least $${fee.minUsd}` : ""}.`,
|
|
266929
266929
|
kycLine,
|
|
@@ -266931,11 +266931,11 @@ async function cashOut(deps, input) {
|
|
|
266931
266931
|
].filter(Boolean).join("\n");
|
|
266932
266932
|
const amount3 = input.amount_usd?.trim().replace(/^\$/, "");
|
|
266933
266933
|
if (!amount3 || !/^\d+(\.\d{1,2})?$/.test(amount3)) return `How much do you want to cash out? You have $${available.toFixed(2)}; this way takes $${chosen2.minUsd} to $${chosen2.maxUsd}. (Then call cash_out with amount_usd, like "25".)`;
|
|
266934
|
-
if (Number(amount3) > available) return `You have $${available.toFixed(2)}
|
|
266934
|
+
if (Number(amount3) > available) return `You have $${available.toFixed(2)} to cash out, less than $${amount3}. Pick a smaller amount.`;
|
|
266935
266935
|
if (Number(amount3) < Number(chosen2.minUsd)) return `The smallest you can cash out this way is $${chosen2.minUsd}.`;
|
|
266936
266936
|
if (Number(amount3) > Number(chosen2.maxUsd)) return `The largest you can cash out this way is $${chosen2.maxUsd}.`;
|
|
266937
266937
|
const to = input.to?.trim();
|
|
266938
|
-
if (chosen2.fields.includes("address") && !(to && BASE_ADDRESS.test(to))) return "Which Base
|
|
266938
|
+
if (chosen2.fields.includes("address") && !(to && BASE_ADDRESS.test(to))) return "Which Base account should receive it? (Its address starts with 0x; then call cash_out with to.)";
|
|
266939
266939
|
const quote = await signedCall(deps, "quote", { method: chosen2.method, country, amountUsd: amount3 });
|
|
266940
266940
|
if (quote.status !== 201) return said3(quote);
|
|
266941
266941
|
const q = quote.body;
|
|
@@ -266979,7 +266979,7 @@ ${NAME_LINE}`;
|
|
|
266979
266979
|
case "cancelled":
|
|
266980
266980
|
return "This cash-out didn't go through, and nothing was taken.";
|
|
266981
266981
|
case "refunded":
|
|
266982
|
-
return "Your
|
|
266982
|
+
return "Your money was sent back to you.";
|
|
266983
266983
|
default:
|
|
266984
266984
|
return `State: ${v.state ?? "unknown"}.`;
|
|
266985
266985
|
}
|
|
@@ -266991,7 +266991,7 @@ var init_cashout = __esm({
|
|
|
266991
266991
|
init_accountProof();
|
|
266992
266992
|
init_inviteProof();
|
|
266993
266993
|
WAYS = {
|
|
266994
|
-
usdc_base: "
|
|
266994
|
+
usdc_base: "Digital dollars to your own Base account (any country)",
|
|
266995
266995
|
stripe_bank: "Bank account, through Stripe",
|
|
266996
266996
|
yellowcard_bank: "Bank account, through Yellow Card",
|
|
266997
266997
|
yellowcard_momo: "Mobile money, through Yellow Card"
|
|
@@ -292365,7 +292365,7 @@ import { randomBytes as randomBytes7 } from "node:crypto";
|
|
|
292365
292365
|
// package.json
|
|
292366
292366
|
var package_default = {
|
|
292367
292367
|
name: "@ixo/asks-mcp",
|
|
292368
|
-
version: "2.0.0-dev.
|
|
292368
|
+
version: "2.0.0-dev.5",
|
|
292369
292369
|
description: "The Openhands Network MCP server: read the board, answer asks, post work and get paid on the ixo chain, with a key of its own on your machine.",
|
|
292370
292370
|
license: "Apache-2.0",
|
|
292371
292371
|
repository: {
|
|
@@ -292588,8 +292588,8 @@ var TOOLS = {
|
|
|
292588
292588
|
annotations: { ...acts, idempotentHint: true }
|
|
292589
292589
|
},
|
|
292590
292590
|
cash_out: {
|
|
292591
|
-
title: "Cash out your
|
|
292592
|
-
description: `Turn
|
|
292591
|
+
title: "Cash out your earnings",
|
|
292592
|
+
description: `Turn what the person earned into money: digital dollars to your own Base account, or a bank account where offered. One step per call: it reads what they have available, their LinkedIn and identity check, then asks the country, the way to get paid, the amount and (for a Base account) the address, and shows the quote in plain words ("You'll receive $X (fee $0)"). With confirm: true it gives ONE link: the person opens it and confirms with one tap; that page checks their identity and they sign there. Limits and fees come from IXO's cash-out service, never from here. No LinkedIn: say connect_linkedin first. Signs no money and holds no key of theirs.`,
|
|
292593
292593
|
spends: false,
|
|
292594
292594
|
hosted: false,
|
|
292595
292595
|
annotations: acts
|
|
@@ -296164,7 +296164,7 @@ tx ${result.transactionHash}${leftWords}`);
|
|
|
296164
296164
|
country: external_exports.string().max(2).optional().describe("Where the person lives: two letters, like NG or DE."),
|
|
296165
296165
|
method: external_exports.string().max(40).optional().describe("The way to get paid, as cash_out listed it (like usdc_base)."),
|
|
296166
296166
|
amount_usd: external_exports.string().max(12).optional().describe('How much, in dollars, like "25" or "25.50".'),
|
|
296167
|
-
to: external_exports.string().max(64).optional().describe("
|
|
296167
|
+
to: external_exports.string().max(64).optional().describe("Base account only: the 0x\u2026 address that receives it."),
|
|
296168
296168
|
confirm: external_exports.boolean().optional().describe("true, after the person said yes to the quote: gives the one link to confirm.")
|
|
296169
296169
|
}
|
|
296170
296170
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ixo/asks-mcp",
|
|
3
|
-
"version": "2.0.0-dev.
|
|
3
|
+
"version": "2.0.0-dev.5",
|
|
4
4
|
"description": "The Openhands Network MCP server: read the board, answer asks, post work and get paid on the ixo chain, with a key of its own on your machine.",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"repository": {
|