<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: SecretPass</title>
    <description>The latest articles on DEV Community by SecretPass (@secretpass).</description>
    <link>https://dev.to/secretpass</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4236022%2F74862d0f-83ae-4b78-a0e2-7d01b7dd91b2.png</url>
      <title>DEV Community: SecretPass</title>
      <link>https://dev.to/secretpass</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/secretpass"/>
    <language>en</language>
    <item>
      <title>Give your AI assistant real coupon search with an open MCP server</title>
      <dc:creator>SecretPass</dc:creator>
      <pubDate>Mon, 09 Nov 2026 23:27:22 +0000</pubDate>
      <link>https://dev.to/secretpass/give-your-ai-assistant-real-coupon-search-with-an-open-mcp-server-3852</link>
      <guid>https://dev.to/secretpass/give-your-ai-assistant-real-coupon-search-with-an-open-mcp-server-3852</guid>
      <description>&lt;p&gt;Most shopping assistants stop at "try searching for a coupon". We wanted an AI assistant to be able to look up real offers, so we put the &lt;a href="https://secretpass.com" rel="noopener noreferrer"&gt;SecretPass&lt;/a&gt; offer search behind an open Model Context Protocol (MCP) server.&lt;/p&gt;

&lt;p&gt;SecretPass is a shopping club with coupon codes and deals for online shopping stores in the United States, the United Kingdom and Australia. This post shows how to connect the MCP server to an assistant, and how to call it directly. It needs no account or API key.&lt;/p&gt;

&lt;p&gt;Disclosure: this is written by the team behind SecretPass.&lt;/p&gt;

&lt;h2&gt;
  
  
  What the server does
&lt;/h2&gt;

&lt;p&gt;The endpoint is &lt;code&gt;https://secretpass.com/mcp&lt;/code&gt; (Streamable HTTP, no authentication). It has three read-only tools:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Tool&lt;/th&gt;
&lt;th&gt;What it does&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;search_offers&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Search offers by keyword, region, category, shop, brand or product type&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;get_offer&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Read the full public details of one offer&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;list_filters&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;List countries, categories, brands and product types with offer counts&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Results link to the SecretPass offer page. Voucher codes are not included in MCP results: search is free, and membership unlocks the codes on the website.&lt;/p&gt;

&lt;h2&gt;
  
  
  Connect it to an assistant
&lt;/h2&gt;

&lt;p&gt;In Claude Code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;claude mcp add --transport http secretpass https://secretpass.com/mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In Cursor, add it to &lt;code&gt;mcp.json&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"secretpass"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"https://secretpass.com/mcp"&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then ask something like: "Find current shoe offers in the US and compare the savings."&lt;/p&gt;

&lt;h2&gt;
  
  
  Call it directly
&lt;/h2&gt;

&lt;p&gt;MCP over HTTP is JSON-RPC, so you can try it with &lt;code&gt;curl&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl -s -X POST https://secretpass.com/mcp \
  -H &lt;span class="s1"&gt;'Content-Type: application/json'&lt;/span&gt; \
  -H &lt;span class="s1"&gt;'Accept: application/json, text/event-stream'&lt;/span&gt; \
  -d &lt;span class="s1"&gt;'{"jsonrpc":"2.0","id":1,"method":"tools/call",
       "params":{"name":"search_offers",
                 "arguments":{"query":"shoes","region":"us","limit":2}}}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Each offer comes back as structured data. Trimmed, one result looks like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"us/48237228"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"business"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Marion Parke"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"New pre-fall footwear"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"region"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"us"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"category_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Retail &amp;amp; Gifts"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"offer_display"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;"product_type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"Shoes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nl"&gt;"features"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"15% off the first order."&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"expires_at"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"https://secretpass.com/offer-item/us/48237228"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nl"&gt;"membership_required_to_unlock"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Offers change and expire, so have your agent check &lt;code&gt;expires_at&lt;/code&gt; and &lt;code&gt;updated_at&lt;/code&gt;, and show the user the offer page instead of promising a saving.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few tips for agents
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Call &lt;code&gt;list_filters&lt;/code&gt; first if you need exact brand or product type values.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;limit&lt;/code&gt; and &lt;code&gt;next_offset&lt;/code&gt; to page through results.&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;get_offer&lt;/code&gt; with an &lt;code&gt;id&lt;/code&gt; to read an offer's conditions before comparing it with others.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Full documentation is at &lt;a href="https://secretpass.com/mcp-api-docs" rel="noopener noreferrer"&gt;secretpass.com/mcp-api-docs&lt;/a&gt;. If you build something with it, we'd like to hear what's missing.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>api</category>
      <category>mcp</category>
      <category>tools</category>
    </item>
  </channel>
</rss>
