<?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: SpicyAPI</title>
    <description>The latest articles on DEV Community by SpicyAPI (@spicyapi).</description>
    <link>https://dev.to/spicyapi</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%2F4167009%2F4fb94942-1db9-447a-99d9-a3e1311f78a6.png</url>
      <title>DEV Community: SpicyAPI</title>
      <link>https://dev.to/spicyapi</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/spicyapi"/>
    <language>en</language>
    <item>
      <title>Give Claude Code an unrestricted image and video API with one MCP server</title>
      <dc:creator>SpicyAPI</dc:creator>
      <pubDate>Tue, 06 Oct 2026 17:10:22 +0000</pubDate>
      <link>https://dev.to/spicyapi/give-claude-code-an-unrestricted-image-and-video-api-with-one-mcp-server-1ba4</link>
      <guid>https://dev.to/spicyapi/give-claude-code-an-unrestricted-image-and-video-api-with-one-mcp-server-1ba4</guid>
      <description>&lt;p&gt;Most image and video models live behind their own account, SDK and billing page, and most hosted APIs add a moderation layer of their own on top of the model. If you want your coding agent to make a product shot, a short clip or a voice-over while it works, wiring each provider up by hand gets old fast, and having a request refused by a filter you never asked for gets old even faster.&lt;/p&gt;

&lt;p&gt;This post shows how to give Claude Code (or Cursor, Codex, VS Code and other MCP clients) one tool that can browse 200+ generation models, price a request, and run it, with the agent stopping to ask you before anything costs money. It uses the official MCP server for &lt;a href="https://spicyapi.ai" rel="noopener noreferrer"&gt;SpicyAPI&lt;/a&gt;, an unrestricted AI API: the platform adds no content filter of its own, so what you can generate depends only on the model you pick, and the catalog marks which models are uncensored.&lt;/p&gt;

&lt;h2&gt;
  
  
  What you need
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Node.js 22.13 or later&lt;/strong&gt; (&lt;code&gt;node --version&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A SpicyAPI API key.&lt;/strong&gt; Create one on the &lt;a href="https://spicyapi.ai/console/keys" rel="noopener noreferrer"&gt;API keys page&lt;/a&gt;. Keys start with &lt;code&gt;sk-spicy-&lt;/code&gt; and are shown once. Under &lt;em&gt;Advanced&lt;/em&gt; you can give the key a daily cap or restrict it to certain models, which is a good idea for a key an agent will use.&lt;/li&gt;
&lt;li&gt;Funds on the account for paid runs. Browsing models, quoting prices and reading results are free.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Add the server to Claude Code
&lt;/h2&gt;

&lt;p&gt;Export your key in the terminal you will run the command from, then register the server:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;SPICY_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"sk-spicy-..."&lt;/span&gt;

claude mcp add spicyapi &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-e&lt;/span&gt; &lt;span class="nv"&gt;SPICY_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="nv"&gt;$SPICY_API_KEY&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;--&lt;/span&gt; npx &lt;span class="nt"&gt;--yes&lt;/span&gt; &lt;span class="nt"&gt;--package&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;@spicyapi/mcp spicyapi-mcp
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The &lt;code&gt;--package&lt;/code&gt; flag matters: the package ships two binaries, so plain &lt;code&gt;npx @spicyapi/mcp&lt;/code&gt; cannot tell which one to run.&lt;/p&gt;

&lt;p&gt;Check it with &lt;code&gt;claude mcp list&lt;/code&gt; or &lt;code&gt;/mcp&lt;/code&gt; inside a session. Add &lt;code&gt;--scope user&lt;/code&gt; if you want it in every project, and avoid &lt;code&gt;--scope project&lt;/code&gt;, which would write your key into a &lt;code&gt;.mcp.json&lt;/code&gt; in the repository.&lt;/p&gt;

&lt;h2&gt;
  
  
  Or add it to Cursor
&lt;/h2&gt;

&lt;p&gt;Cursor reads &lt;code&gt;~/.cursor/mcp.json&lt;/code&gt; (Windsurf and Gemini CLI use the same shape in their own files):&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="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"mcpServers"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"spicyapi"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"command"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"npx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"args"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"--yes"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"--package=@spicyapi/mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"spicyapi-mcp"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"env"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"SPICY_API_KEY"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"YOUR_SPICY_API_KEY"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Keep this in your user-level file, not a project file that gets committed.&lt;/p&gt;

&lt;h2&gt;
  
  
  First three prompts (all free)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;em&gt;"Check the SpicyAPI service status."&lt;/em&gt; This tool needs no key, so it proves the server starts.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;"What is my SpicyAPI balance?"&lt;/em&gt; Proves the key reaches the server.&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;"Which SpicyAPI tools do you have?"&lt;/em&gt; You should see 15 tools prefixed &lt;code&gt;spicyapi_&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Then ask for something real
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;Use SpicyAPI to list the image models I can call, pick an inexpensive one, generate a cinematic night portrait, and give me the result link when it finishes.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Behind the scenes the agent:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;reads the live catalog and the chosen model's input schema;&lt;/li&gt;
&lt;li&gt;gets an exact USD quote;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;stops and asks you to confirm&lt;/strong&gt; the estimate and the maximum charge;&lt;/li&gt;
&lt;li&gt;creates the task, waits for it and returns the result link.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;A few more that work well:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;em&gt;"Find models that turn an image into a video and compare what a 5-second clip costs on each."&lt;/em&gt; (catalog plus quotes, free)&lt;/li&gt;
&lt;li&gt;
&lt;em&gt;"Turn ~/Desktop/product.jpg into a 5-second video with a slow push-in."&lt;/em&gt; (uploads the file, then a confirmed task)&lt;/li&gt;
&lt;li&gt;&lt;em&gt;"Show my tasks from the last three days that failed, and why."&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Why the agent cannot spend on its own
&lt;/h2&gt;

&lt;p&gt;Paid tools use MCP &lt;strong&gt;elicitation&lt;/strong&gt;: the confirmation is rendered by your client and answered by you, not by the model. The answer is bound to the exact request, so if the model or input changes after the question, nothing is created. Declining means no task, no hold and no charge. Quotes are valid for five minutes, and a client that does not support elicitation simply cannot create paid tasks; the read-only tools still work.&lt;/p&gt;

&lt;h2&gt;
  
  
  Local files and results
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;spicyapi_upload_file&lt;/code&gt; takes an absolute path, uploads the file and returns a &lt;code&gt;spicy://&lt;/code&gt; URI the agent can pass to a model. By default it only reads under your home directory, which protects you from a path smuggled in through a web page or an email. Results come back as ready-to-use links; generated files are kept for about 14 days, so download anything you want to keep.&lt;/p&gt;

&lt;h2&gt;
  
  
  Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Website and model catalog: &lt;a href="https://spicyapi.ai" rel="noopener noreferrer"&gt;spicyapi.ai&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Full MCP guide: &lt;a href="https://docs.spicyapi.ai/docs/mcp" rel="noopener noreferrer"&gt;docs.spicyapi.ai/docs/mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Source: &lt;a href="https://github.com/spicyapi-ai/spicy-mcp" rel="noopener noreferrer"&gt;github.com/spicyapi-ai/spicy-mcp&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;If you also want the agent to know the recommended workflow, there is an Agent Skill: &lt;code&gt;npx skills add spicyapi-ai/spicy-skill&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

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