Skip to main content
Glama

chaingpt_get_ai_crypto_news

Access curated crypto news from trusted sources like CoinDesk and CoinTelegraph. Filter by category, token, or date to find relevant AI and web3 articles. Receive concise summaries with original links.

Instructions

    Get the latest AI-related crypto and web3 articles.
    Web3-native AI assistant built specifically for the crypto world.
    it source, filter, deduplicate, and summarize up-to-date crypto news from many outlets in real time
    it continuously scans trusted crypto news sites (e.g. CoinDesk, CoinTelegraph, Decrypt) and even social platforms like Twitter for breaking updates.

    You can call this tool without any parameters to get the latest news. It returns 10 news articles by default. 

    Capabilities:
      - Source, filter, deduplicate, and summarize up-to-date crypto news from many outlets in real time
      - Continuously scans trusted crypto news sites (e.g. CoinDesk, CoinTelegraph, Decrypt) and even social platforms like Twitter for breaking updates.
      - Summarize news in a concise manner, providing the most important details and context.
      - Provides a link to the original article for more detailed information.

    ⚠️ COST WARNING: This tool makes an API call to ChainGPT which may incur costs. The key is charged 1 credit per 10 records returned

    This tool allows you to interact with ChainGPT's AI News Generator.

    Args:
        categoryId(number[], optional): The category ID of the news to fetch. Blockchain Gaming = [2], DAO = [3], DApps = [4], DeFi = [5], Lending = [6], Metaverse = [7], NFT = [8], Stablecoins = [9], Cryptocurrency = [64], Decentralized = [65], Smart Contracts = [66], Distributed Ledger = [67], Cryptography = [68], Digital Assets = [69], Tokenization = [70], Consensus Mechanisms = [71], ICO (Initial Coin Offering) = [72], Crypto Wallets = [73], Web3.0 = [74], Interoperability = [75], Mining = [76], Cross-Chain Transactions = [77], Exchange = [78].
        subCategoryId(number[], optional): The sub-category ID of the news to fetch. Bitcoin = [11], BNB Chain = [12], Celo = [13], Cosmos = [14], Ethereum = [15], Filecoin = [16], Flow = [17], Harmony = [41], Polygon = [20], XRP Ledger = [21], Solana = [22], TRON = [23], Cardano = [34], Monero = [19], Cronos = [36], Ontology = [44], WAX = [26], Optimism = [45], Other (Miscellaneous) = [46], PlatON = [47], Steem = [56], Rangers = [49], SX Network = [57], Ronin = [50], Telos = [58], Shiden = [51], Telos EVM = [59], SKALE = [52], Theta = [61], Stacks = [54], ThunderCore = [62], Stargaze = [55].
        tokenId(number[], optional): The token ID of the news to fetch. BTC = [79], MATIC = [91], ETH = [80], DOT = [92], USDT = [81], LTC = [93], BNB = [82], WBTC = [94], XRP = [83], BCH = [95], USDC = [84], LINK = [96], SOL = [85], SHIB = [97], ADA = [86], LEO = [98], DOGE = [87], TUSD = [99], TRX = [88], AVAX = [100], TON = [89], XLM = [101], DAI = [90], XMR = [102], UNI = [105], OKB = [103], ETC = [106], ATOM = [104], BUSD = [107], HBAR = [108].
        searchQuery(string, optional): The search query to fetch the news.
        limit(number, optional): The number of news to fetch. Default is 10. You can increase this to retrieve more articles in one call (e.g. limit: 20 for 20 articles). Note that higher limits will consume additional credits (see Rate Limits & Credits). If you only want a small number of the latest articles, you can set a smaller limit as well.
        offset(number, optional): The offset of the news to fetch. Default is 0. This is used for pagination. For example, to get the second page of results when using a limit of 10, you would set offset: 10 (skip the first 10 articles, return the next set). Similarly, offset: 20 would fetch the third page (items 21–30), and so on.
        fetchAfter(Datetime, optional): The date after which to fetch the news. Provide a JavaScript Date object or a date string (which will be interpreted in UTC by the API). For example, fetchAfter: new Date('2024-01-01') will fetch news items published from January 1, 2024 onward. This is useful for getting news within a certain time range (e.g., only recent news).
        sortBy(string, optional): The field by which to sort the news. Currently, the only supported sort key is 'createdAt', which corresponds to the article's publication time. By default, results are sorted by newest (most recent) first. If not provided, the SDK will sort by createdAt descending. (At this time, no other sort fields are supported.)
    Returns:
        The response from ChainGPT AI to the provided question or message.
    

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
categoryIdNoThe category ID of the news to fetch.
subCategoryIdNoThe sub-category ID of the news to fetch.
tokenIdNoThe token ID of the news to fetch.
searchQueryNoThe search query to fetch the news.
sortByNoThe field to sort the news by. Default and currently only supported field is 'createdAt'.
limitNoThe number of news to fetch. Default is 10. You can increase this to retrieve more articles in one call (e.g. limit: 20 for 20 articles). Note that higher limits will consume additional credits. MIN: 10
offsetNoThe offset of the news to fetch. Default is 0. This is used for pagination. For example, to get the second page of results when using a limit of 10, you would set offset: 10 (skip the first 10 articles, return the next set). Similarly, offset: 20 would fetch the third page (items 21–30), and so on.
fetchAfterNoThe date after which to fetch the news. Provide a JavaScript Date object or a date string (which will be interpreted in UTC by the API). For example, fetchAfter: new Date('2024-01-01') will fetch news items published from January 1, 2024 onward. This is useful for getting news within a certain time range (e.g., only recent news).

Implementation Reference

  • The async handler function that executes the tool logic: calls aiNews.getNews(params), formats the response using formatArticlesToString, and handles AINewsError exceptions.
    async (params) => {
      try {
        const response = await aiNews.getNews(params);
        const formattedResponse = formatArticlesToString(response.data);
        console.error(response.data);
        return {
          content: [
            {
              type: "text",
              text: formattedResponse,
            },
          ],
        };
      } catch (error) {
        if (error instanceof Errors.AINewsError) {
          return {
            content: [
              {
                type: "text",
                text: error.message,
              },
            ],
            isError: true,
          };
        } else {
          return {
            content: [
              {
                type: "text",
                text: "get_ai_crypto_news_Unknown_Error",
              },
            ],
            isError: true,
          };
        }
      }
    }
  • Zod schema (aiNewsSchema) defining input parameters: categoryId, subCategoryId, tokenId, searchQuery, sortBy, limit, offset, fetchAfter.
    export const aiNewsSchema = {
        categoryId: z.array(z.number()).optional().describe("The category ID of the news to fetch. "),
        subCategoryId: z.array(z.number()).optional().describe("The sub-category ID of the news to fetch."),
        tokenId: z.array(z.number()).optional().describe("The token ID of the news to fetch."),
        searchQuery: z.string().optional().describe("The search query to fetch the news."),
        sortBy: z.string().optional().describe("The field to sort the news by. Default and currently only supported field is 'createdAt'."),
        limit: z.number().optional().describe("The number of news to fetch. Default is 10. You can increase this to retrieve more articles in one call (e.g. limit: 20 for 20 articles). Note that higher limits will consume additional credits. MIN: 10"),
        offset: z.number().optional().describe("The offset of the news to fetch. Default is 0. This is used for pagination. For example, to get the second page of results when using a limit of 10, you would set offset: 10 (skip the first 10 articles, return the next set). Similarly, offset: 20 would fetch the third page (items 21–30), and so on."),
        fetchAfter: z.date().optional().describe("The date after which to fetch the news. Provide a JavaScript Date object or a date string (which will be interpreted in UTC by the API). For example, fetchAfter: new Date('2024-01-01') will fetch news items published from January 1, 2024 onward. This is useful for getting news within a certain time range (e.g., only recent news)."),
      }
  • Registration of the tool via server.tool() with the name 'chaingpt_get_ai_crypto_news', description, schema, and handler.
    export const registerNewsTools = () => {
      server.tool(
        "chaingpt_get_ai_crypto_news",
        `
            Get the latest AI-related crypto and web3 articles.
            Web3-native AI assistant built specifically for the crypto world.
            it source, filter, deduplicate, and summarize up-to-date crypto news from many outlets in real time
            it continuously scans trusted crypto news sites (e.g. CoinDesk, CoinTelegraph, Decrypt) and even social platforms like Twitter for breaking updates.
    
            You can call this tool without any parameters to get the latest news. It returns 10 news articles by default. 
    
            Capabilities:
              - Source, filter, deduplicate, and summarize up-to-date crypto news from many outlets in real time
              - Continuously scans trusted crypto news sites (e.g. CoinDesk, CoinTelegraph, Decrypt) and even social platforms like Twitter for breaking updates.
              - Summarize news in a concise manner, providing the most important details and context.
              - Provides a link to the original article for more detailed information.
    
            ⚠️ COST WARNING: This tool makes an API call to ChainGPT which may incur costs. The key is charged 1 credit per 10 records returned
    
            This tool allows you to interact with ChainGPT's AI News Generator.
    
            Args:
                categoryId(number[], optional): The category ID of the news to fetch. Blockchain Gaming = [2], DAO = [3], DApps = [4], DeFi = [5], Lending = [6], Metaverse = [7], NFT = [8], Stablecoins = [9], Cryptocurrency = [64], Decentralized = [65], Smart Contracts = [66], Distributed Ledger = [67], Cryptography = [68], Digital Assets = [69], Tokenization = [70], Consensus Mechanisms = [71], ICO (Initial Coin Offering) = [72], Crypto Wallets = [73], Web3.0 = [74], Interoperability = [75], Mining = [76], Cross-Chain Transactions = [77], Exchange = [78].
                subCategoryId(number[], optional): The sub-category ID of the news to fetch. Bitcoin = [11], BNB Chain = [12], Celo = [13], Cosmos = [14], Ethereum = [15], Filecoin = [16], Flow = [17], Harmony = [41], Polygon = [20], XRP Ledger = [21], Solana = [22], TRON = [23], Cardano = [34], Monero = [19], Cronos = [36], Ontology = [44], WAX = [26], Optimism = [45], Other (Miscellaneous) = [46], PlatON = [47], Steem = [56], Rangers = [49], SX Network = [57], Ronin = [50], Telos = [58], Shiden = [51], Telos EVM = [59], SKALE = [52], Theta = [61], Stacks = [54], ThunderCore = [62], Stargaze = [55].
                tokenId(number[], optional): The token ID of the news to fetch. BTC = [79], MATIC = [91], ETH = [80], DOT = [92], USDT = [81], LTC = [93], BNB = [82], WBTC = [94], XRP = [83], BCH = [95], USDC = [84], LINK = [96], SOL = [85], SHIB = [97], ADA = [86], LEO = [98], DOGE = [87], TUSD = [99], TRX = [88], AVAX = [100], TON = [89], XLM = [101], DAI = [90], XMR = [102], UNI = [105], OKB = [103], ETC = [106], ATOM = [104], BUSD = [107], HBAR = [108].
                searchQuery(string, optional): The search query to fetch the news.
                limit(number, optional): The number of news to fetch. Default is 10. You can increase this to retrieve more articles in one call (e.g. limit: 20 for 20 articles). Note that higher limits will consume additional credits (see Rate Limits & Credits). If you only want a small number of the latest articles, you can set a smaller limit as well.
                offset(number, optional): The offset of the news to fetch. Default is 0. This is used for pagination. For example, to get the second page of results when using a limit of 10, you would set offset: 10 (skip the first 10 articles, return the next set). Similarly, offset: 20 would fetch the third page (items 21–30), and so on.
                fetchAfter(Datetime, optional): The date after which to fetch the news. Provide a JavaScript Date object or a date string (which will be interpreted in UTC by the API). For example, fetchAfter: new Date('2024-01-01') will fetch news items published from January 1, 2024 onward. This is useful for getting news within a certain time range (e.g., only recent news).
                sortBy(string, optional): The field by which to sort the news. Currently, the only supported sort key is 'createdAt', which corresponds to the article's publication time. By default, results are sorted by newest (most recent) first. If not provided, the SDK will sort by createdAt descending. (At this time, no other sort fields are supported.)
            Returns:
                The response from ChainGPT AI to the provided question or message.
            `,
        aiNewsSchema,
        async (params) => {
          try {
            const response = await aiNews.getNews(params);
            const formattedResponse = formatArticlesToString(response.data);
            console.error(response.data);
            return {
              content: [
                {
                  type: "text",
                  text: formattedResponse,
                },
              ],
            };
          } catch (error) {
            if (error instanceof Errors.AINewsError) {
              return {
                content: [
                  {
                    type: "text",
                    text: error.message,
                  },
                ],
                isError: true,
              };
            } else {
              return {
                content: [
                  {
                    type: "text",
                    text: "get_ai_crypto_news_Unknown_Error",
                  },
                ],
                isError: true,
              };
            }
          }
        }
      );
    };
  • formatArticlesToString helper that formats an array of Article objects into a human-readable string with title, date, category, token, blockchain, description, and detailed info.
    export function formatArticlesToString(articles: Article[], detailed = true) {
      if (!Array.isArray(articles) || articles.length === 0) {
        return "No articles found.";
      }
    
      let result = "";
      
      articles.forEach((article, index) => {
        // Add a separator between articles except for the first one
        if (index > 0) {
          result += "\n\n" + "=".repeat(80) + "\n\n";
        }
        
        // Add title
        result += `${index + 1}. ${article.title}\n`;
        
        // Add publication date
        const pubDate = new Date(article.pubDate);
        result += `Published: ${pubDate.toLocaleString()}\n`;
        
        // Add category and tokens info
        const categoryName = article.category ? article.category.name : "Uncategorized";
        const tokenName = article.token ? article.token.name : "No specific token";
        result += `Category: ${categoryName} | Token: ${tokenName}\n`;
        
        // Add blockchain info (from subCategory)
        const blockchainName = article.subCategory ? article.subCategory.name : "No specific blockchain";
        result += `Blockchain: ${blockchainName}\n\n`;
        
        // Add description
        result += `${article.description}\n`;
        
        // Add additional details if detailed mode is enabled
        if (detailed) {
          result += `\nAuthor: ${article.author}\n`;
          result += `Image URL: ${article.imageUrl}\n`;
          
          if (article.isFeatured) {
            result += "Featured Article\n";
          }
          
          if (article.isTopStory) {
            result += "Top Story\n";
          }
          
          result += `Created: ${new Date(article.createdAt).toLocaleString()}\n`;
          result += `Last Updated: ${new Date(article.updatedAt).toLocaleString()}\n`;
        }
      });
      
      return result;
    }
  • Instantiation of the AINews client using the ChainGPT API key from config, used by the handler.
    const aiNews = new AINews({
      apiKey: config.chaingpt.secretKey,
    });
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Discloses API call cost (1 credit per 10 records), sources scanned (CoinDesk, etc.), and default behavior (10 articles). Does not describe error handling or rate limits beyond cost, but provides sufficient transparency for safe invocation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is verbose and contains redundant phrases (e.g., 'source, filter, deduplicate, and summarize' repeated). While well-structured with sections, it would benefit from trimming unnecessary repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Covers all aspects: purpose, parameter details, cost, default behavior, and return value (articles with summaries and links). No output schema, but description adequately explains outputs. Complete for a news retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters5/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

All 8 parameters are explained in detail beyond schema descriptions, with examples for categoryId, subCategoryId, tokenId, fetchAfter, and sortBy. The description adds meaningful context that aids correct parameter usage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves AI-related crypto and web3 articles, using specific verbs like 'get' and 'fetch', and distinguishes from sibling tools (chat history and invoke chat) by focusing on news retrieval.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Provides explicit guidance on calling without parameters and how to use limit/offset for pagination. Includes cost warning, but lacks explicit when-not-to-use scenarios or comparisons with alternatives beyond mentioning it's built for crypto news.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Install Server

Other Tools

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/kohasummons/chaingpt-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server