@iqai/mcp-atp
Version:
Mcp server for ATP (IQAI's Agent Tokenization Platform) access
56 lines (55 loc) • 2.26 kB
JavaScript
import dedent from "dedent";
import { env } from "../config.js";
import formatNumber from "../lib/format-number.js";
async function fetchAgentStatsFromAPI(agentAddress) {
const statsUrl = `${env.ATP_API_URL}/agents/stats`;
const url = new URL(statsUrl);
url.searchParams.append("address", agentAddress);
console.log(`[AgentStatsService] Fetching agent stats from: ${url.toString()}`);
const response = await fetch(url.toString(), {
method: "GET",
headers: {
"Content-Type": "application/json",
},
});
if (!response.ok) {
const errorBody = await response.text();
console.error(`[AgentStatsService] API Error ${response.status}: ${errorBody}`);
throw new Error(`Failed to fetch agent stats (${response.status}): ${response.statusText}. Details: ${errorBody}`);
}
const data = await response.json();
return data;
}
export class AgentStatsService {
async getStats(tokenContract) {
if (!tokenContract ||
typeof tokenContract !== "string" ||
!tokenContract.startsWith("0x")) {
throw new Error("Invalid or missing token contract address. Expected a string starting with '0x'.");
}
try {
console.log(`[AgentStatsService] getStats called for: ${tokenContract}`);
const stats = await fetchAgentStatsFromAPI(tokenContract);
return stats;
}
catch (error) {
console.error(`[AgentStatsService] Error in getStats for ${tokenContract}:`, error);
const message = error instanceof Error
? error.message
: "An unknown error occurred while fetching stats.";
throw new Error(message);
}
}
formatStats(stats) {
return dedent `
📊 *Agent Statistics*
💰 Price: ${formatNumber(stats.currentPriceInUSD)} USD (${formatNumber(stats.currentPriceInIq)} IQ)
📈 Market Cap: ${formatNumber(stats.marketCap)} USD
📊 24h Change: ${formatNumber(stats.changeIn24h)}%
👥 Holders: ${stats.holdersCount}
🤖 Inferences: ${stats.inferenceCount}
🏷️ Category: ${stats.category}
`;
}
}
//# sourceMappingURL=agent-stats.js.map