{"id":34091,"date":"2025-06-12T11:52:36","date_gmt":"2025-06-12T15:52:36","guid":{"rendered":"https:\/\/www.duck9.com\/blog\/?p=34091"},"modified":"2025-06-12T14:29:07","modified_gmt":"2025-06-12T18:29:07","slug":"distributed-app-bumble","status":"publish","type":"post","link":"https:\/\/www.duck9.com\/blog\/distributed-app-bumble\/","title":{"rendered":"Distributed App, Bumble"},"content":{"rendered":"<div class=\"postie-post\">\n<div>\n<div dir=\"ltr\"><meta http-equiv=\"content-type\" content=\"text\/html; charset=utf-8\"><\/p>\n<div dir=\"ltr\">\n<div dir=\"ltr\">\n<div dir=\"ltr\">\n<div dir=\"ltr\"><a href=\"https:\/\/x.com\/aaditsh\/status\/1933102061320839514?s=43\"><\/a><\/div>\n<div dir=\"ltr\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" style=\"border: 1px solid #ccd6dd; border-radius: 12px\" width=\"500\" bgcolor=\"#ffffff\">\n<tbody>\n<tr>\n<td colspan=\"3\" style=\"font-size: 0px; line-height: 0px\" height=\"12\">&nbsp;<\/td>\n<\/tr>\n<tr>\n<td width=\"18\" style=\"font-size: 0px; line-height: 0px; min-width: 18px\">&nbsp;<\/td>\n<td>\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" width=\"464\" align=\"left\">\n<tbody>\n<tr valign=\"top\">\n<td width=\"48\" valign=\"top\"><a href=\"https:\/\/x.com\/aaditsh?s=43\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/pbs.twimg.com\/profile_images\/1923956042204839937\/zkFMLRro_normal.jpg\" style=\"border-radius: 50%; padding: 0px\" height=\"48\" width=\"48\" data-unique-identifier=\"\"><\/a><\/td>\n<td width=\"8\" style=\"font-size: 0px; line-height: 0px; min-width: 8px\"><img decoding=\"async\" src=\"https:\/\/ea.twimg.com\/email\/self_serve\/media\/spacer.png\" width=\"8\" data-unique-identifier=\"\"><\/td>\n<td valign=\"middle\" width=\"388\" style=\"min-width: 388px\">\n<table cellpadding=\"0\" cellspacing=\"0\" border=\"0\" align=\"left\" width=\"388\">\n<tbody>\n<tr>\n<td align=\"left\" width=\"388\"><b><a href=\"https:\/\/x.com\/aaditsh?s=43\" style=\"font-family: Helvetica, Arial, san-serif; font-size: 14px; line-height: 18px; color: #292c2f; text-decoration: none\">Aadit Sheth<\/a><\/b><\/td>\n<\/tr>\n<tr>\n<td align=\"left\"><a href=\"https:\/\/x.com\/aaditsh?s=43\" style=\"font-family: Helvetica, Arial, san-serif; font-size: 14px; line-height: 18px; text-decoration: none; color: #7e8c98\">\u2066\u202a@aaditsh\u202c\u2069<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<td valign=\"top\" width=\"20\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ea.twimg.com\/email\/self_serve\/media\/logo_twitter-1497383721365.png\" height=\"20\" width=\"24\" data-unique-identifier=\"\"><\/td>\n<\/tr>\n<tr>\n<td height=\"9\" colspan=\"4\" style=\"font-size: 0px; line-height: 0px\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/ea.twimg.com\/self_serve\/media\/spacer_464x1-1582829598167.png\" width=\"464\" height=\"1\" data-unique-identifier=\"\"><\/td>\n<\/tr>\n<tr>\n<td colspan=\"4\" style=\"font-family: Helvetica, Arial, san-serif; color: #292c2f; font-size: 18px; line-height: 24px; text-decoration: none\">This guy breaks down MCP and how to use it in under 18 minutes<br \/>\n<a href=\"https:\/\/t.co\/MTqUjPYgBE\"><span>pic.x.com\/MTqUjPYgBE<\/span><\/a><\/td>\n<\/tr>\n<tr>\n<td height=\"3\" colspan=\"4\" style=\"font-size: 0px; line-height: 0px\">&nbsp;<\/td>\n<\/tr>\n<tr>\n<td colspan=\"4\"><a href=\"https:\/\/x.com\/aaditsh\/status\/1933102061320839514?s=43\" style=\"font-family: Helvetica, Arial, san-serif; color: #667785; font-size: 14px; line-height: 18px; text-decoration: none\">6\/12\/25, 5:00\u202fAM<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/td>\n<td width=\"18\" style=\"font-size: 0px; line-height: 0px; min-width: 18px\">&nbsp;<\/td>\n<\/tr>\n<tr>\n<td colspan=\"3\" style=\"font-size: 0px; line-height: 0px\" height=\"12\">&nbsp;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<div dir=\"ltr\">\n<div dir=\"ltr\">&#8211; The post by Aadit Sheth highlights a video that explains the Model Context Protocol (MCP), an open standard designed to facilitate seamless integration between AI models and various applications by standardizing how context is provided to large language models (LLMs). This protocol acts like a universal connector, similar to USB-C, allowing AI to interact with multiple apps and data sources consistently and securely.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; The video, which is under 18 minutes, breaks down how MCP reduces complexity in AI integrations by centralizing the management of API connections and custom implementations within an MCP server. This server can handle interactions with services like Slack, Gmail, and custom databases, enabling different AI agents or IDEs (like Cursor or Windsurf) to use the same specifications without needing to recreate these connections for each application.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; MCP&#8217;s significance lies in its potential to streamline AI development and deployment, as evidenced by companies like Anthropic and Composeo, which have already adopted or listed numerous MCP servers. This standardization not only enhances efficiency but also opens up possibilities for more complex, reliable AI functionalities, such as managing multiple API calls simultaneously or conducting experiments with AI models through tools like Cursor, without extensive custom coding.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">Unedited by Larry Chiang not #LangChain<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">\n<div id=\"AppleMailSignature\" dir=\"ltr\">To apply the concepts from the video about the Model Context Protocol (MCP) to a distributed app where tokens are paid per API call, and to address the scenario of analyzing Bumble&#8217;s stock price drop from $75 to $5 without a public SDK or API, we can break this down into several steps:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">### 1. **Understanding MCP in a Distributed App Context**<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">The MCP, as discussed in the video, acts as a bridge between AI agents and various data sources or APIs. In a distributed app where tokens are paid per API call, MCP can be particularly useful for managing these interactions efficiently and cost-effectively. Here&#8217;s how:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Centralized API Management**: The MCP server can centralize the management of API calls to services like financial data providers (e.g., Investing.com, Yahoo Finance, or other stock market APIs). This reduces the need for each AI agent or application to individually handle API authentication, rate limiting, and token management.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp;&nbsp;<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Token Usage Optimization**: By standardizing the interaction through the MCP server, you can implement logic to minimize unnecessary API calls. For instance, the MCP server can cache responses or batch requests to reduce the number of tokens spent, especially important when each call incurs a cost.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Security and Access Control**: The MCP server can enforce access controls and ensure that only authorized operations are performed, which is crucial when dealing with paid API services. This prevents overuse or misuse of tokens by rogue agents or applications.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">### 2. **Analyzing Bumble&#8217;s Stock Price Drop**<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">Given that Bumble does not have a public SDK or API, and its stock price has dropped significantly from $75 to $5, we need to leverage available financial data sources and the MCP to gather and analyze this information. Here&#8217;s how we can approach this:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp;**Step-by-Step Application of MCP**<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Identify Relevant Data Sources**: Since Bumble lacks a public API, we need to rely on third-party financial data providers that offer stock price history and analysis. Examples include Investing.com, Yahoo Finance, or Alpha Vantage. These services typically provide APIs that can be accessed with tokens.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Set Up the MCP Server**:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &#8211; **Integration with Financial APIs**: The MCP server is configured to connect to these financial APIs. For instance, it can query Investing.com&#8217;s API to retrieve Bumble&#8217;s (BMBL) stock price history.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &#8211; **Tool Implementation**: Create tools within the MCP server that specifically handle stock price queries. For example, a tool named `get_stock_price_history` could be designed to fetch historical data for a given stock ticker (BMBL in this case).<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &#8211; **Documentation and Protocol**: Ensure that the MCP server provides clear documentation on how to use these tools, including the expected payload format (e.g., ticker symbol, date range) and the response format (e.g., historical prices, volumes).<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">**AI Agent Interaction**:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &#8211; The AI agent, such as one integrated into an IDE like Cursor, communicates with the MCP server using the MCP protocol. It requests the stock price history for Bumble by invoking the `get_stock_price_history` tool.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &#8211; The MCP server processes this request, makes the necessary API calls to the financial data provider (paying the required tokens), and returns the data to the AI agent.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp;**Example Workflow**<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">1. **AI Agent Request**:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp;&#8211; The AI agent (e.g., in Cursor) is tasked with analyzing why Bumble&#8217;s stock price dropped from $75 to $5. It formulates a request to the MCP server: &#8220;Get the historical stock price data for BMBL from the peak of $75 to the current price of $5.&#8221;<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">2. **MCP Server Processing**:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp;&#8211; The MCP server receives this request and identifies the relevant tool (`get_stock_price_history`).<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp;&#8211; It constructs the appropriate API call to Investing.com or another provider, specifying the ticker (BMBL) and the date range corresponding to the price drop.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp;&#8211; The MCP server handles the token authentication and payment for this API call.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">3. **Data Retrieval and Return**:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp;&#8211; The financial API returns the historical price data, which the MCP server processes and formats according to the protocol&#8217;s specifications.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp;&#8211; The MCP server sends this data back to the AI agent.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">4. **AI Agent Analysis**:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp;&#8211; The AI agent receives the data and can now perform analysis. For example, it might identify key events (e.g., earnings reports, market news) correlated with the price drop by cross-referencing the price data with news APIs or other contextual data sources available through the MCP server.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">### 3. **Handling the Lack of Public SDK\/API for Bumble**<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">Since Bumble does not provide a public SDK or API, the MCP approach is particularly valuable because it allows the AI agent to indirectly access relevant data through third-party sources. The MCP server can be configured to:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Aggregate Multiple Sources**: Combine data from various financial APIs and news sources to provide a comprehensive view of Bumble&#8217;s stock performance and influencing factors.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Custom Tools for Analysis**: Develop custom tools within the MCP server that specialize in stock analysis, such as trend analysis, volatility calculations, or sentiment analysis based on news articles related to Bumble.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">### 4. **Cost Management with Tokens**<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">Given that each API call incurs a cost, the MCP server can optimize this process:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Caching Mechanisms**: Store frequently accessed data (e.g., recent stock prices) to avoid redundant API calls.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Batch Processing**: Group multiple related requests (e.g., price history over a range) into a single API call where possible.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.duck9.com\/wp-content\/uploads\/2025\/06\/img_5054-1.jpg\" class=\"size-full wp-image-34110\" width=\"720\" height=\"960\" srcset=\"https:\/\/www.duck9.com\/wp-content\/uploads\/2025\/06\/img_5054-1.jpg 720w, https:\/\/www.duck9.com\/wp-content\/uploads\/2025\/06\/img_5054-1-225x300.jpg 225w\" sizes=\"auto, (max-width: 720px) 100vw, 720px\" \/><\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8211; **Rate Limiting and Throttling**: Implement controls to ensure that the number of API calls does not exceed the budget or the provider&#8217;s limits.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">### 5. **Example Code Snippet for MCP Server Tool**<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">Here&#8217;s a conceptual Python snippet for an MCP server tool that handles stock price history requests:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8220;`python<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">import requests<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">from mcp_server import MCPServer, Tool<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">class StockPriceHistoryTool(Tool):<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; def __init__(self):<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; super().__init__(&#8220;get_stock_price_history&#8221;, &#8220;Retrieves historical stock price data for a given ticker.&#8221;)<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; self.api_key = &#8220;YOUR_API_KEY&#8221; &nbsp;# API key for the financial data provider<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; self.base_url = &#8220;https:\/\/api.example.com\/stock&#8221;<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; def execute(self, payload):<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; ticker = payload.get(&#8220;ticker&#8221;, &#8220;BMBL&#8221;)<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; start_date = payload.get(&#8220;start_date&#8221;, &#8220;&#8221;)<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; end_date = payload.get(&#8220;end_date&#8221;, &#8220;&#8221;)<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; # Construct the API request<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; url = f&#8221;{self.base_url}\/history?ticker={ticker}&amp;start_date={start_date}&amp;end_date={end_date}&#8221;<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; headers = {&#8220;Authorization&#8221;: f&#8221;Bearer {self.api_key}&#8221;}<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; try:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response = requests.get(url, headers=headers)<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; response.raise_for_status()<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return response.json()<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; except requests.exceptions.RequestException as e:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return {&#8220;error&#8221;: str(e)}<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\"># Register the tool with the MCP server<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">mcp_server = MCPServer()<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">mcp_server.register_tool(StockPriceHistoryTool())<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8220;`<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">### 6. **AI Agent Interaction with MCP**<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">The AI agent, using an IDE like Cursor, would interact with this MCP server by sending a structured request:<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8220;`json<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">{<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &#8220;tool&#8221;: &#8220;get_stock_price_history&#8221;,<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &#8220;payload&#8221;: {<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &#8220;ticker&#8221;: &#8220;BMBL&#8221;,<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &#8220;start_date&#8221;: &#8220;2023-01-01&#8221;,<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; &nbsp; &nbsp; &#8220;end_date&#8221;: &#8220;2025-06-12&#8221;<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&nbsp; &nbsp; }<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">}<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">&#8220;`<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">The MCP server processes this, makes the API call, and returns the data, which the AI agent then uses to analyze the stock price drop and potentially generate insights or reports.<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">### Conclusion<\/div>\n<div id=\"AppleMailSignature\" dir=\"ltr\">By leveraging the MCP, you can create a robust, scalable solution for a distributed app that manages token-based API calls efficiently, even when dealing with non-public APIs like Bumble&#8217;s. This approach not only handles the technical challenges but also optimizes costs and enhances the AI agent&#8217;s ability to perform complex analyses, such as understanding the reasons behind Bumble&#8217;s stock price decline.<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>&nbsp; &nbsp; Aadit Sheth \u2066\u202a@aaditsh\u202c\u2069 This guy breaks down MCP and how to use it in under 18 minutes pic.x.com\/MTqUjPYgBE &nbsp; 6\/12\/25, 5:00\u202fAM &nbsp; &nbsp; &#8211; The post by Aadit Sheth highlights a video that explains the Model Context Protocol (MCP), an open standard designed to facilitate seamless integration between AI models and various applications [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":34109,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[36],"tags":[],"class_list":["post-34091","post","type-post","status-publish","format-standard","hentry","category-duck-chapter-9-startup-bankruptcy"],"post_mailing_queue_ids":[],"_links":{"self":[{"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/posts\/34091","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/comments?post=34091"}],"version-history":[{"count":4,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/posts\/34091\/revisions"}],"predecessor-version":[{"id":34130,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/posts\/34091\/revisions\/34130"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/media\/34109"}],"wp:attachment":[{"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/media?parent=34091"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/categories?post=34091"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.duck9.com\/blog\/wp-json\/wp\/v2\/tags?post=34091"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}