<?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: Mean</title>
    <description>The latest articles on DEV Community by Mean (@meandp589).</description>
    <link>https://dev.to/meandp589</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3922774%2F96aca30e-a080-4086-a9a2-186e1c0617e0.jpg</url>
      <title>DEV Community: Mean</title>
      <link>https://dev.to/meandp589</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/meandp589"/>
    <language>en</language>
    <item>
      <title>Stop sending README files as API docs — publish a live, versioned docs site with APIKumo</title>
      <dc:creator>Mean</dc:creator>
      <pubDate>Wed, 13 May 2026 02:06:03 +0000</pubDate>
      <link>https://dev.to/apikumo/stop-sending-readme-files-as-api-docs-publish-a-live-versioned-docs-site-with-apikumo-1493</link>
      <guid>https://dev.to/apikumo/stop-sending-readme-files-as-api-docs-publish-a-live-versioned-docs-site-with-apikumo-1493</guid>
      <description>&lt;p&gt;We've all been there. You build an API, you're proud of it, and then someone asks:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;"Hey, where are the docs?"&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;And you paste them a GitHub link to a markdown file.&lt;/p&gt;

&lt;p&gt;It works — technically. But it's not great. There's no try-it button, no version history, no search, no way for an AI assistant to understand your endpoints. Just a wall of text.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There's a better way&lt;/strong&gt;, and it takes about 5 minutes to set up.&lt;/p&gt;




&lt;h2&gt;
  
  
  What APIKumo publishes
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apikumo.com" rel="noopener noreferrer"&gt;APIKumo&lt;/a&gt; is a full API workspace — you design requests, automate auth, version your work, and publish typed docs to your own subdomain. The publish step is what this post is about.&lt;/p&gt;

&lt;p&gt;When you hit &lt;strong&gt;Publish&lt;/strong&gt; on a collection, APIKumo gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;A live subdomain&lt;/strong&gt; — &lt;code&gt;your-api.apikumo.com&lt;/code&gt; (or your own domain)&lt;/li&gt;
&lt;li&gt;🔍 &lt;strong&gt;Full-text search&lt;/strong&gt; across every endpoint&lt;/li&gt;
&lt;li&gt;📜 &lt;strong&gt;Scroll-spy navigation&lt;/strong&gt; so readers always know where they are&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Custom theme&lt;/strong&gt; — your brand colors, logo, and name&lt;/li&gt;
&lt;li&gt;🔢 &lt;strong&gt;Version selector&lt;/strong&gt; — v1.0, v1.1, v2.0 all live at once&lt;/li&gt;
&lt;li&gt;📋 &lt;strong&gt;Changelog&lt;/strong&gt; so consumers know what changed between versions&lt;/li&gt;
&lt;li&gt;▶️ &lt;strong&gt;Try-it&lt;/strong&gt; — readers can fire real requests right from the docs (with their own auth)&lt;/li&gt;
&lt;li&gt;🤖 &lt;strong&gt;AI docs chat&lt;/strong&gt; — a built-in assistant that answers questions grounded in &lt;em&gt;your&lt;/em&gt; endpoints&lt;/li&gt;
&lt;li&gt;🔌 &lt;strong&gt;MCP endpoint&lt;/strong&gt; — Claude, Cursor, and Continue can read and call your API automatically&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How it works in practice
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Build your collection normally
&lt;/h3&gt;

&lt;p&gt;In APIKumo, you send requests the usual way — method, URL, headers, body, auth. The Monaco-powered editor handles JSON, XML, GraphQL, and more.&lt;/p&gt;

&lt;p&gt;What makes it different: you also define &lt;strong&gt;request and response schemas&lt;/strong&gt; — fields, types, enums, and examples. These become the docs.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;GET /users/:id
→ 200 { id: string, email: string, role: "admin" | "member" }
→ 404 { error: string }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Snapshot a version
&lt;/h3&gt;

&lt;p&gt;When your API is ready to ship (or already shipped), you take a version snapshot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;v1.0  →  snapshot  →  "Initial release"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can keep editing in v1.1 without touching the published v1.0. Consumers on v1 see stable docs; v2 readers see the new surface. No separate repos, no copy-pasting.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Write your changelog
&lt;/h3&gt;

&lt;p&gt;Each version gets a changelog entry. Plain text or markdown — whatever your team prefers.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## v1.1&lt;/span&gt;
&lt;span class="p"&gt;-&lt;/span&gt; Added pagination to GET /users
&lt;span class="p"&gt;-&lt;/span&gt; Deprecated X-Auth-Token header (use Authorization: Bearer instead)
&lt;span class="p"&gt;-&lt;/span&gt; Fixed schema for POST /events body
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your API consumers see this in the version selector. They know exactly what changed and when.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Hit publish
&lt;/h3&gt;

&lt;p&gt;One button. APIKumo generates the full docs site from everything you've built — schemas, examples, descriptions, changelogs — and deploys it to your subdomain.&lt;/p&gt;

&lt;p&gt;The result looks like professional docs. Because it is.&lt;/p&gt;




&lt;h2&gt;
  
  
  The AI layer on top
&lt;/h2&gt;

&lt;p&gt;Every published collection automatically gets two things that feel like magic the first time you see them:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docs chat&lt;/strong&gt;: An AI assistant trained on &lt;em&gt;your actual endpoints&lt;/em&gt;. Not generic "how do I use an API" answers — specific answers like "What fields does POST /webhooks accept?" or "Show me how to paginate through orders."&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;MCP endpoint&lt;/strong&gt;: A Model Context Protocol URL your team can plug into Claude, Cursor, or Continue. The AI reads your API surface and can help write the integration code — without hallucinating endpoints that don't exist.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this matters more than a README
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;README&lt;/th&gt;
&lt;th&gt;APIKumo docs&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Static text&lt;/td&gt;
&lt;td&gt;Live, always up to date&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No versions&lt;/td&gt;
&lt;td&gt;v1.0, v1.1, v2.0 in one place&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No try-it&lt;/td&gt;
&lt;td&gt;Readers can fire requests in-browser&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No search&lt;/td&gt;
&lt;td&gt;Full-text search&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No AI&lt;/td&gt;
&lt;td&gt;AI chat grounded in your endpoints&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;No MCP&lt;/td&gt;
&lt;td&gt;Claude / Cursor can call your API&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;If you're building APIs and still shipping documentation as a markdown file, give APIKumo's publish flow a try. It's free while in preview.&lt;/p&gt;

&lt;p&gt;🌐 &lt;a href="https://apikumo.com" rel="noopener noreferrer"&gt;apikumo.com&lt;/a&gt; · Sign in with Google, GitHub, or Discord.&lt;/p&gt;

</description>
      <category>api</category>
      <category>documentation</category>
      <category>webdev</category>
      <category>productivity</category>
    </item>
    <item>
      <title>Stop writing auth boilerplate: API automation with pre/post processors in APIKumo</title>
      <dc:creator>Mean</dc:creator>
      <pubDate>Tue, 12 May 2026 02:40:02 +0000</pubDate>
      <link>https://dev.to/apikumo/stop-writing-auth-boilerplate-api-automation-with-prepost-processors-in-apikumo-1985</link>
      <guid>https://dev.to/apikumo/stop-writing-auth-boilerplate-api-automation-with-prepost-processors-in-apikumo-1985</guid>
      <description>&lt;p&gt;If you've spent more than a few hours testing APIs, you know the drill: copy the token from the previous response, paste it into the Authorization header of the next request, remember to re-sign the HMAC payload before sending, then manually check the response body for the field you actually care about.&lt;/p&gt;

&lt;p&gt;It's tedious. It breaks your flow. And it's completely automatable.&lt;/p&gt;

&lt;p&gt;APIKumo has a &lt;strong&gt;pre/post processor pipeline&lt;/strong&gt; baked directly into every request — no plugins, no scripts stored somewhere off to the side, no separate test runner. Here's how it works and why it matters.&lt;/p&gt;




&lt;h2&gt;
  
  
  What are pre/post processors?
&lt;/h2&gt;

&lt;p&gt;Every request in APIKumo can have two processor layers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Pre-processors&lt;/strong&gt; run &lt;em&gt;before&lt;/em&gt; the request is sent — they can modify headers, compute signatures, inject dynamic values, or run custom JavaScript.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Post-processors&lt;/strong&gt; run &lt;em&gt;after&lt;/em&gt; the response arrives — they can extract values, assert on status codes or body fields, log output, or pass data forward to the next request.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Together they form a mini pipeline that makes your collection self-sufficient.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common pre-processor use cases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. HMAC request signing
&lt;/h3&gt;

&lt;p&gt;Many payment, security, and internal APIs require requests to be signed with an HMAC-SHA256 digest computed from the request body + a timestamp. Without automation you'd compute this in a terminal, copy it, paste it — every single time.&lt;/p&gt;

&lt;p&gt;In APIKumo, a pre-processor can do it for you:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;crypto&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;crypto&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toString&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sig&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;crypto&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;createHmac&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sha256&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;SIGNING_SECRET&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;digest&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;hex&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-Timestamp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;ts&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;request&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;X-Signature&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s2"&gt;`v1=&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;sig&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Save once. It runs on every send, automatically pulling &lt;code&gt;SIGNING_SECRET&lt;/code&gt; from your environment — which can differ between staging and production.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Bearer token from environment
&lt;/h3&gt;

&lt;p&gt;Got a &lt;code&gt;/auth/token&lt;/code&gt; endpoint that you hit to get a JWT? Instead of manually copying the token, set it in an environment variable and reference it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{{AUTH_TOKEN}}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Pair that with a post-processor on the login request (see below) and the token refreshes itself.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Timestamp nonces
&lt;/h3&gt;

&lt;p&gt;Some APIs reject replayed requests by requiring a unique nonce or timestamp in a header. Pre-processors can inject &lt;code&gt;Date.now()&lt;/code&gt; or a UUID before every send, without you thinking about it.&lt;/p&gt;




&lt;h2&gt;
  
  
  Common post-processor use cases
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Extract and store a JWT
&lt;/h3&gt;

&lt;p&gt;After a successful login, capture the token and save it to an environment variable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;access_token&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;AUTH_TOKEN&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;token&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now every subsequent request in the collection that uses &lt;code&gt;{{AUTH_TOKEN}}&lt;/code&gt; picks it up automatically. This is especially powerful when you chain a sequence of requests — login → create resource → fetch resource → delete — because each step feeds the next.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Assert on status and body
&lt;/h3&gt;

&lt;p&gt;Post-processors double as lightweight tests:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;status&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Expected 200 OK&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="nf"&gt;assert&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;json&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;!==&lt;/span&gt; &lt;span class="kc"&gt;undefined&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Response missing id field&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Assertions surface clearly in the response panel. Run through a collection and you'll immediately see which steps passed and which didn't — no separate test suite needed.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. JSONPath and regex extraction
&lt;/h3&gt;

&lt;p&gt;APIKumo includes built-in JSONPath and regex extractors so you don't have to write custom JS for straightforward cases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;JSONPath&lt;/strong&gt;: &lt;code&gt;$.data.user.id&lt;/code&gt; → store in &lt;code&gt;USER_ID&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Regex&lt;/strong&gt;: extract an order number from a plain-text response body
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Header&lt;/strong&gt;: capture a &lt;code&gt;Set-Cookie&lt;/code&gt; value or &lt;code&gt;Location&lt;/code&gt; redirect header&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Environments tie it all together
&lt;/h2&gt;

&lt;p&gt;Pre/post processors resolve &lt;code&gt;{{variables}}&lt;/code&gt; from whichever environment is active. Switch from &lt;strong&gt;Staging&lt;/strong&gt; to &lt;strong&gt;Production&lt;/strong&gt; in one click and the same processors run against the right base URL, credentials, and secrets — without touching any processor code.&lt;/p&gt;

&lt;p&gt;This is what makes collections genuinely reusable across teams. A new teammate clones the collection, fills in their own environment values, and every auth flow just works.&lt;/p&gt;




&lt;h2&gt;
  
  
  A real-world example: testing a webhook flow
&lt;/h2&gt;

&lt;p&gt;Here's a simple three-request chain that would otherwise require constant manual copy-pasting:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;POST /sessions&lt;/strong&gt; — pre-processor injects HMAC signature; post-processor extracts &lt;code&gt;session_id&lt;/code&gt; → &lt;code&gt;SESSION_ID&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST /webhooks&lt;/strong&gt; — pre-processor uses &lt;code&gt;{{SESSION_ID}}&lt;/code&gt; in the body; post-processor extracts &lt;code&gt;webhook_secret&lt;/code&gt; → &lt;code&gt;WH_SECRET&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;POST /events/simulate&lt;/strong&gt; — pre-processor signs the payload with &lt;code&gt;{{WH_SECRET}}&lt;/code&gt;; post-processor asserts status 202&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Three requests, zero manual copy-pasting, zero terminal tabs open on the side.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this beats a separate test runner
&lt;/h2&gt;

&lt;p&gt;The usual alternative is to put this logic in a Postman test script, a shell script, or a pytest fixture. Those work — but they live &lt;em&gt;outside&lt;/em&gt; your API workspace. Someone updates an endpoint and forgets to update the test script. The docs go stale. The scripts accumulate in a repo no one remembers to run.&lt;/p&gt;

&lt;p&gt;APIKumo keeps processors &lt;em&gt;inside&lt;/em&gt; the request, right next to the URL, headers, and body. When you publish that collection to a docs subdomain, the processors stay in the workspace while the docs reflect the actual schema — everything in one place.&lt;/p&gt;




&lt;h2&gt;
  
  
  Getting started
&lt;/h2&gt;

&lt;p&gt;If you haven't tried APIKumo yet, it's free while in preview.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Go to &lt;a href="https://apikumo.com" rel="noopener noreferrer"&gt;apikumo.com&lt;/a&gt; and sign in with Google, GitHub, or Discord.&lt;/li&gt;
&lt;li&gt;Create a new collection and add a request to an API you work with.&lt;/li&gt;
&lt;li&gt;Open the &lt;strong&gt;Pre-processors&lt;/strong&gt; tab on any request and try injecting a timestamp header.&lt;/li&gt;
&lt;li&gt;Open &lt;strong&gt;Post-processors&lt;/strong&gt; and add a JSONPath extractor or a status assertion.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The feedback loop is fast — you'll see exactly what each processor did in the response panel on every send.&lt;/p&gt;




&lt;p&gt;API automation shouldn't require a separate tool. If your API client can't sign your requests, chain your calls, and assert on your responses without leaving the tab — it's time to upgrade.&lt;/p&gt;

&lt;p&gt;— The APIKumo team&lt;/p&gt;

</description>
      <category>api</category>
      <category>automation</category>
      <category>devtools</category>
      <category>productivity</category>
    </item>
    <item>
      <title>APIKumo gives every API collection an automatic MCP endpoint — here's why that matters</title>
      <dc:creator>Mean</dc:creator>
      <pubDate>Mon, 11 May 2026 09:07:18 +0000</pubDate>
      <link>https://dev.to/apikumo/apikumo-gives-every-api-collection-an-automatic-mcp-endpoint-heres-why-that-matters-4nhe</link>
      <guid>https://dev.to/apikumo/apikumo-gives-every-api-collection-an-automatic-mcp-endpoint-heres-why-that-matters-4nhe</guid>
      <description>&lt;p&gt;MCP (Model Context Protocol) is quickly becoming the standard way AI agents interact with external tools and services. Claude, Cursor, Continue, and others all speak MCP natively now.&lt;/p&gt;

&lt;p&gt;The problem? Setting up an MCP server for your API used to mean writing a separate server, maintaining it alongside your actual API, and keeping it in sync whenever your schema changed.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;APIKumo removes that entirely.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every collection you build and publish in APIKumo gets an automatic MCP endpoint — no configuration, no separate server, no code to maintain.&lt;/p&gt;




&lt;h2&gt;
  
  
  How it works in APIKumo
&lt;/h2&gt;

&lt;p&gt;When you publish a collection in APIKumo, you get three things out of the box:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;A public doc page&lt;/strong&gt; — with version selector, scroll-spy nav, changelog, and a live try-it console&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AI chat grounded in your endpoints&lt;/strong&gt; — users can ask questions about your API and get answers based on your &lt;em&gt;actual&lt;/em&gt; definition, not hallucinated responses&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;An MCP endpoint&lt;/strong&gt; — a live Model Context Protocol endpoint that any MCP-compatible AI agent can connect to immediately&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The MCP endpoint is generated directly from your collection. That means it stays accurate by default — if you update a request in APIKumo, the MCP endpoint reflects it automatically.&lt;/p&gt;




&lt;h2&gt;
  
  
  What this looks like in practice
&lt;/h2&gt;

&lt;p&gt;Say you've built a collection for a weather API in APIKumo. Once published, any AI agent that supports MCP can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Discover&lt;/strong&gt; your endpoints (GET /forecast, GET /current, etc.)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Understand&lt;/strong&gt; the parameters, response shapes, and authentication requirements&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Call&lt;/strong&gt; the API natively — no custom tool definitions, no prompt engineering&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Your API becomes an AI-native service the moment you publish it.&lt;/p&gt;

&lt;p&gt;This is what "AI-ready docs" actually means — not just a page that looks good, but a surface that AI agents can read and act on.&lt;/p&gt;




&lt;h2&gt;
  
  
  Why this is a big deal for API developers
&lt;/h2&gt;

&lt;p&gt;Most APIs are invisible to AI agents today. They exist as REST endpoints that humans know about, but agents can't discover or use without a human writing a wrapper.&lt;/p&gt;

&lt;p&gt;With APIKumo's automatic MCP endpoint:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;No MCP server to build or maintain&lt;/strong&gt; — it's generated from your collection&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;No drift&lt;/strong&gt; — your docs, AI chat, and MCP endpoint all come from the same source of truth&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Works immediately&lt;/strong&gt; — publish a collection, share the MCP endpoint URL, done&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;APIKumo is free while in preview.&lt;/p&gt;

&lt;p&gt;Build your collection, publish it, and you'll see the MCP endpoint URL right in your dashboard — ready to drop into Claude, Cursor, or any MCP-compatible client.&lt;/p&gt;


&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
        &lt;div class="c-embed__cover"&gt;
          &lt;a href="https://apikumo.com/" class="c-link align-middle" rel="noopener noreferrer"&gt;
            &lt;img alt="" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapikumo.com%2Fog-image.png" height="420" class="m-0" width="800"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="c-embed__body"&gt;
        &lt;h2 class="fs-xl lh-tight"&gt;
          &lt;a href="https://apikumo.com/" rel="noopener noreferrer" class="c-link"&gt;
            APIKumo · Build, automate, and publish your API
          &lt;/a&gt;
        &lt;/h2&gt;
          &lt;p class="truncate-at-3"&gt;
            Design requests, automate auth, version, and publish typed docs with AI chat and MCP built in.
          &lt;/p&gt;
        &lt;div class="color-secondary fs-s flex items-center"&gt;
            &lt;img alt="favicon" class="c-embed__favicon m-0 mr-2 radius-0" src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fapikumo.com%2Fassets%2Ffavicon-Dps_Gorg.svg" width="500" height="500"&gt;
          apikumo.com
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;


&lt;p&gt;What APIs are you working with that you'd want to expose as MCP endpoints? Drop it in the comments.&lt;/p&gt;

</description>
      <category>api</category>
      <category>mcp</category>
      <category>ai</category>
      <category>webdev</category>
    </item>
    <item>
      <title>I built an API workspace where docs write themselves — with AI chat and MCP built in</title>
      <dc:creator>Mean</dc:creator>
      <pubDate>Sun, 10 May 2026 04:09:40 +0000</pubDate>
      <link>https://dev.to/apikumo/i-built-an-api-workspace-where-docs-write-themselves-with-ai-chat-and-mcp-built-in-269o</link>
      <guid>https://dev.to/apikumo/i-built-an-api-workspace-where-docs-write-themselves-with-ai-chat-and-mcp-built-in-269o</guid>
      <description>&lt;p&gt;Most developers I know use at least three tools for a single API.&lt;/p&gt;

&lt;p&gt;Postman or Insomnia for sending requests. Notion or a static site for &lt;br&gt;
documentation. And some custom script — or a lot of manual copy-pasting &lt;br&gt;
— for handling auth like HMAC signatures or chained tokens.&lt;/p&gt;

&lt;p&gt;None of them stay in sync. The docs go stale. The auth scripts break. &lt;br&gt;
And every new teammate has to figure out the whole setup from scratch.&lt;/p&gt;

&lt;p&gt;That's why I built &lt;strong&gt;APIKumo&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it is
&lt;/h2&gt;

&lt;p&gt;APIKumo is an API workspace that covers the full lifecycle in one place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Request builder&lt;/strong&gt; — Monaco-powered editor, collections, environments, 
multi-tab, 20+ code generation targets&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Pre/Post processors&lt;/strong&gt; — automate auth before requests fire. 
HMAC signing, bearer token from env, JSONPath extraction, 
variable chaining, response assertions. No external scripts.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Doc publishing&lt;/strong&gt; — publish to your own subdomain with version 
selector, changelog, scroll-spy navigation, and a live try-it console&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The part I'm most proud of: Docs
&lt;/h2&gt;

&lt;p&gt;API documentation has a reliability problem. You write it once, &lt;br&gt;
it drifts from the actual implementation, and nobody trusts it after a month.&lt;/p&gt;

&lt;p&gt;APIKumo generates docs directly from your requests and schemas — &lt;br&gt;
so they stay accurate by default, not by discipline.&lt;/p&gt;

&lt;p&gt;Every published collection also gets:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI chat grounded in your real endpoints&lt;/strong&gt;&lt;br&gt;
Users can ask questions inside your doc page and get answers based on &lt;br&gt;
your actual API definition. Not hallucinated. Not generic.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Automatic MCP endpoint&lt;/strong&gt;&lt;br&gt;
Every collection exposes a Model Context Protocol endpoint with zero &lt;br&gt;
configuration. Claude, Cursor, Continue — any MCP-compatible AI agent &lt;br&gt;
can read your API surface and call it natively.&lt;/p&gt;

&lt;p&gt;The goal: docs shouldn't be a static page you maintain by hand. &lt;br&gt;
They should be a living surface that works for both humans and AI agents.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it stands
&lt;/h2&gt;

&lt;p&gt;APIKumo is free while in preview. I'm actively building and would &lt;br&gt;
genuinely love feedback — especially from developers who've felt this &lt;br&gt;
pain before.&lt;/p&gt;

&lt;p&gt;👉 &lt;a href="https://apikumo.com" rel="noopener noreferrer"&gt;apikumo.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Also launched on Product Hunt today if you want to support or leave feedback there.&lt;/p&gt;

&lt;p&gt;What's the biggest pain point you've had with API tooling? &lt;br&gt;
Would love to hear in the comments.&lt;/p&gt;

</description>
      <category>api</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>ai</category>
    </item>
  </channel>
</rss>
