MMRequest

Multimodal HTTP client. Drop an image and it auto-encodes to base64 in your API request body. For vision LLM developers.

As of June 2026, MMRequest has 4 users in the Developer Tools category.

Usersno change0%
4
4
Ratingno change0%
— reviews
Reviewsno change0%
Version
0.0.5
Manifest V3
90-day change · In the last 90 days this extension 2 version updates.

History

3 snapshots

Tracking since May 26, 2026.

4.242.50.7599999999999998May 26, 2026Jun 8, 2026
View as table
DateUsersRatingReviewsVersion
May 26, 20260.0.1
Jun 2, 20260.0.1
Jun 8, 202610.0.3
Now40.0.5

Changelog

  • Jun 8, 2026
    description
    🚀 MMRequest — the HTTP client built for multimodal LLM APIs.
    
    THE PROBLEM
    Every vision/audio LLM API (GPT-4o, Claude, Gemini, vLLM, Llama, …) wants your image or audio as a base64 string buried inside the JSON body. So today you end up uploading the file to some random website just to copy its base64, pasting a 300KB blob into Postman, and redoing the whole thing every time the file changes. It's slow, messy, and easy to get wrong.
    
    THE FIX
    Drop an image or audio file → MMRequest auto-encodes it to base64 (in your browser, no upload) and injects it into your request through a clean {{base64Image}} / {{base64Audio}} placeholder. Your JSON body stays readable; the heavy base64 is substituted only at Send time. Build, send, and iterate on multimodal requests the way a normal HTTP client never let you.
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    ✨ What's New in v0.0.3 ✨
    
    🎨 Themes — 10 hand-crafted color themes (7 dark + 3 light: Midnight, Ocean, Forest, Aurora, Crimson, Nord, Sunset, Daylight, Paper, Mint). Recolors the whole app, not just the accent.
    🌗 Sync with system — auto day/night switching that follows your OS appearance, or pick a theme manually.
    🗂️ Smarter tabs — multi-session tabs with a right-click menu (New / Close / Close Others / Close All) and unsaved-change indicators (🟠 editing · 🟢 saved) shown on tabs AND saved requests.
    📦 Postman compatible — export any request as a Postman Collection (v2.1) and import Postman collections too. Real base64 media is embedded so the request runs anywhere.
    🌊 Streaming responses — a new Stream tab merges chunked NDJSON / SSE output (including reasoning tokens) into one clean, combined JSON.
    🌲 Collapsible JSON viewer — Pretty view folds each field; long strings collapse with "…expand" so base64 no longer floods the screen.
    🔢 Line numbers in the Raw response view.
    🧰 Collections — drag & drop to reorder or move requests between collections, pin favorites, rename / duplicate / copy via the ⋯ menu, and search across all requests.
    🧾 Grouped console — each request/response cycle folds into a single expandable log entry.
    ⌨️ Shortcuts — Cmd/Ctrl + S to save a request, Cmd/Ctrl + E to rename.
    🐛 Fixes — dropped/pasted media now always attaches to the active tab, plus lots of UI polish.
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    MMRequest is a Chrome extension HTTP client built for one specific workflow that existing tools don't automate well: calling multimodal LLM APIs (GPT-4V, Claude vision, vLLM, Llama vision, etc.) that need a base64-encoded image inside the JSON body.
    
    If you've ever:
      - Uploaded an image to a 3rd-party site just to get its base64 string
      - Copy-pasted a 300KB base64 string into Postman's JSON body
      - Forgotten to update the {{image}} placeholder before re-sending
      - Debugged the "wrong Content-Type" issue with multimodal endpoints
    … this extension is for you.
    
    ━━━ HOW IT WORKS ━━━
    
    1. Click the toolbar icon → MMRequest opens in a full-screen tab
    2. Set your API URL (supports variables: http://{{host}}:4017/v1/chat/completions)
    3. Drop an image into the right-side dropzone (or paste with Ctrl+V)
    4. The image is auto-base64-encoded and bound to {{base64Image}}
    5. Your JSON body keeps the placeholder for readability — substitution happens only at Send time
    6. Click Send → see the response below (Pretty / Raw / Stream / Headers / Console tabs)
    
    ━━━ FEATURES ━━━
    
    CORE
    • Drag & drop, file picker, and clipboard paste for images
    • Auto base64 encoding via FileReader (no network round-trip)
    • Multiple images supported ({{base64Image1}}, {{base64Image2}}, ...)
    • Variable system with {{host}}, {{api_key}}, etc.
    • Live "Resolved URL" preview showing the actual request URL
    
    REQUEST EDITING
    • HTTP methods: POST / GET / PUT / DELETE / PATCH
    • Custom + auto-generated headers (toggle on/off)
    • Body modes: Raw JSON with syntax-aware textarea
    • Authentication: None / Bearer Token / Basic Auth / API Key (header or query)
    • Variables tab with image variable auto-binding
    
    RESPONSE VIEWING
    • Status, duration, size, token usage (vLLM `usage` field)
    • Pretty (JSON formatted), Raw (line numbers), Stream (streamed merge), Headers
    • Console tab with full request/response logs and "Failed to fetch" diagnostics
    • Copy response / Copy cURL / Copy body buttons
    
    WORKFLOW
    • Request history (last 50, click to restore)
    • Collections / Favorites with tree structure
    • Postman Collection import/export, cURL export
    • Cmd/Ctrl + Enter to send
    • Settings persist across sessions (localStorage)
    
    ━━━ PRIVACY ━━━
    
    MMRequest is privacy-first by design.
    
    • All request/response data stays in your browser. We never see your URLs, headers, bodies, or responses.
    • Images you drop are encoded in your browser via FileReader — they never touch our servers.
    • The only data we collect is your Google email (when you choose to sign in for Early Adopter benefits) and basic sign-in event timestamps.
    • Full privacy policy: https://mm-request.vercel.app/privacy
    
    ━━━ EARLY ADOPTER BENEFIT ━━━
    
    We are currently in beta. Users who sign in with their Google account before our public launch will retain free access to all features after we introduce paid plans.
    
    ━━━ PERMISSIONS WHY ━━━
    
    • storage: Saves your URL, headers, variables, collections, and history locally so they persist across sessions.
    • host_permissions <all_urls>: MMRequest is an HTTP client where you enter your own API endpoints. We cannot know in advance which hosts you will call. No automatic requests are ever made; every request is triggered by you clicking Send.
    • identity / identity.email: Reads your Google email when you click "Get started with Google" to track Early Adopter eligibility. Not used for anything else.
    
    ━━━ FEEDBACK ━━━
    
    This is an actively developed beta. Send feedback or feature requests:
      [email protected]
    
    Website: https://mm-request.vercel.app
    🚀 MMRequest — the HTTP client built for multimodal LLM APIs.
    
    THE PROBLEM
    Every vision/audio LLM API (GPT-4o, Claude, Gemini, vLLM, Llama, …) wants your image or audio as a base64 string buried inside the JSON body. So today you end up uploading the file to some random website just to copy its base64, pasting a 300KB blob into Postman, and redoing the whole thing every time the file changes. It's slow, messy, and easy to get wrong.
    
    THE FIX
    Drop an image or audio file → MMRequest auto-encodes it to base64 (in your browser, no upload) and injects it into your request through a clean {{base64Image}} / {{base64Audio}} placeholder. Your JSON body stays readable; the heavy base64 is substituted only at Send time. Build, send, and iterate on multimodal requests the way a normal HTTP client never let you.
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    ✨ What's New in v0.0.5 ✨
    
    🔢 Stream-aware token extraction — SSE responses (OpenAI / vLLM / Anthropic / Gemini) are parsed end-to-end. Token usage and cost surface even when the request is streamed; the detail panel shows merged content + usage with a one-click toggle to the original SSE frames.
    💵 Total cost rollup — every Runner result carries a footer with ↑ input · ↓ output · total cost. Outside the table so columns stay aligned at any width.
    📐 Pricing pane, actually editable — number inputs in Settings → Pricing now select-to-replace on click. The per-million rate sticks, even on values like 0.
    ▶ Collection Runner, reborn — two-pane layout (Run Sequence + configuration). Drag a collection or folder from the sidebar to load it. Iterations, delay, stop-on-failure, per-row skip checkbox.
    🪟 Multi-tab Runner instances — each ▶ Runner press opens a new tab, auto-named after the collection. Run several suites side-by-side without losing earlier results.
    🔍 Per-row response panel — click any result row to open a right-side detail panel showing the full response, status, duration, and content type. For successful rows too, not only errors.
    ⚠ Unresolved variable warnings — references to unbound {{var}} surface as a ⚠ on the row and a summary banner above Run — caught before the request fires.
    🎵 Raw base64 convention — variables named rawBase64Audio / rawBase64Image with a file attached now bind raw base64 automatically (no data: prefix). Fixes OpenAI's audio endpoint rejecting otherwise-valid uploads.
    🐛 Polish & fixes — number inputs accept select-to-replace across the board. Closing all tabs now closes Runner instances too. Result table columns stay aligned via fixed layout + colgroup.
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    MMRequest is a Chrome extension HTTP client built for one specific workflow that existing tools don't automate well: calling multimodal LLM APIs (GPT-4V, Claude vision, vLLM, Llama vision, etc.) that need a base64-encoded image inside the JSON body.
    
    If you've ever:
      - Uploaded an image to a 3rd-party site just to get its base64 string
      - Copy-pasted a 300KB base64 string into Postman's JSON body
      - Forgotten to update the {{image}} placeholder before re-sending
      - Debugged the "wrong Content-Type" issue with multimodal endpoints
    … this extension is for you.
    
    ━━━ HOW IT WORKS ━━━
    
    1. Click the toolbar icon → MMRequest opens in a full-screen tab
    2. Set your API URL (supports variables: http://{{host}}:4017/v1/chat/completions)
    3. Drop an image into the right-side dropzone (or paste with Ctrl+V)
    4. The image is auto-base64-encoded and bound to {{base64Image}}
    5. Your JSON body keeps the placeholder for readability — substitution happens only at Send time
    6. Click Send → see the response below (Pretty / Raw / Stream / Headers / Console tabs)
    
    ━━━ FEATURES ━━━
    
    CORE
    • Drag & drop, file picker, and clipboard paste for images
    • Auto base64 encoding via FileReader (no network round-trip)
    • Multiple images supported ({{base64Image1}}, {{base64Image2}}, ...)
    • Variable system with {{host}}, {{api_key}}, etc.
    • Live "Resolved URL" preview showing the actual request URL
    
    REQUEST EDITING
    • HTTP methods: POST / GET / PUT / DELETE / PATCH
    • Custom + auto-generated headers (toggle on/off)
    • Body modes: Raw JSON with syntax-aware textarea
    • Authentication: None / Bearer Token / Basic Auth / API Key (header or query)
    • Variables tab with image variable auto-binding
    
    RESPONSE VIEWING
    • Status, duration, size, token usage (vLLM `usage` field)
    • Pretty (JSON formatted), Raw (line numbers), Stream (streamed merge), Headers
    • Console tab with full request/response logs and "Failed to fetch" diagnostics
    • Copy response / Copy cURL / Copy body buttons
    
    WORKFLOW
    • Request history (last 50, click to restore)
    • Collections / Favorites with tree structure
    • Postman Collection import/export, cURL export
    • Cmd/Ctrl + Enter to send
    • Settings persist across sessions (localStorage)
    
    ━━━ PRIVACY ━━━
    
    MMRequest is privacy-first by design.
    
    • All request/response data stays in your browser. We never see your URLs, headers, bodies, or responses.
    • Images you drop are encoded in your browser via FileReader — they never touch our servers.
    • The only data we collect is your Google email (when you choose to sign in for Early Adopter benefits) and basic sign-in event timestamps.
    • Full privacy policy: https://mm-request.vercel.app/privacy
    
    ━━━ EARLY ADOPTER BENEFIT ━━━
    
    We are currently in beta. Users who sign in with their Google account before our public launch will retain free access to all features after we introduce paid plans.
    
    ━━━ PERMISSIONS WHY ━━━
    
    • storage: Saves your URL, headers, variables, collections, and history locally so they persist across sessions.
    • host_permissions <all_urls>: MMRequest is an HTTP client where you enter your own API endpoints. We cannot know in advance which hosts you will call. No automatic requests are ever made; every request is triggered by you clicking Send.
    • identity / identity.email: Reads your Google email when you click "Get started with Google" to track Early Adopter eligibility. Not used for anything else.
    
    ━━━ FEEDBACK ━━━
    
    This is an actively developed beta. Send feedback or feature requests:
      [email protected]
    
    Website: https://mm-request.vercel.app
  • Jun 2, 2026
    description
    MMRequest is a Chrome extension HTTP client built for one specific workflow that existing tools don't automate well: calling multimodal LLM APIs (GPT-4V, Claude vision, vLLM, HCX, Llama vision, etc.) that need a base64-encoded image inside the JSON body.
    
    If you've ever:
      - Uploaded an image to a 3rd-party site just to get its base64 string
      - Copy-pasted a 300KB base64 string into Postman's JSON body
      - Forgotten to update the {{image}} placeholder before re-sending
      - Debugged the "wrong Content-Type" issue with multimodal endpoints
    … this extension is for you.
    
    ━━━ HOW IT WORKS ━━━
    
    1. Click the toolbar icon → MMRequest opens in a full-screen tab
    2. Set your API URL (supports variables: http://{{host}}:4017/v1/chat/completions)
    3. Drop an image into the right-side dropzone (or paste with Ctrl+V)
    4. The image is auto-base64-encoded and bound to {{base64Image}}
    5. Your JSON body keeps the placeholder for readability — substitution happens only at Send time
    6. Click Send → see the response below (Pretty / Raw / Preview / Headers / Console tabs)
    
    ━━━ FEATURES ━━━
    
    CORE
    • Drag & drop, file picker, and clipboard paste for images
    • Auto base64 encoding via FileReader (no network round-trip)
    • Multiple images supported ({{base64Image1}}, {{base64Image2}}, ...)
    • Variable system with {{host}}, {{api_key}}, etc.
    • Live "Resolved URL" preview showing the actual request URL
    
    REQUEST EDITING
    • HTTP methods: POST / GET / PUT / DELETE / PATCH
    • Custom + auto-generated headers (toggle on/off)
    • Body modes: Raw JSON with syntax-aware textarea
    • Authentication: None / Bearer Token / Basic Auth / API Key (header or query)
    • Variables tab with image variable auto-binding
    
    RESPONSE VIEWING
    • Status, duration, size, token usage (vLLM `usage` field)
    • Pretty (JSON formatted), Raw, Preview (assistant text), Headers
    • Console tab with full request/response logs and "Failed to fetch" diagnostics
    • Copy response / Copy cURL / Copy body buttons
    
    WORKFLOW
    • Request history (last 50, click to restore)
    • Collections / Favorites with tree structure
    • cURL export
    • Cmd/Ctrl + Enter to send
    • Settings persist across sessions (localStorage)
    
    ━━━ PRIVACY ━━━
    
    MMRequest is privacy-first by design.
    
    • All request/response data stays in your browser. We never see your URLs, headers, bodies, or responses.
    • Images you drop are encoded in your browser via FileReader — they never touch our servers.
    • The only data we collect is your Google email (when you choose to sign in for Early Adopter benefits) and basic sign-in event timestamps.
    • Full privacy policy: <https://mm-request.vercel.app/privacy>
    
    ━━━ EARLY ADOPTER BENEFIT ━━━
    
    We are currently in beta. Users who sign in with their Google account before our public launch will retain free access to all features after we introduce paid plans.
    
    ━━━ PERMISSIONS WHY ━━━
    
    • storage: Saves your URL, headers, variables, collections, and history locally so they persist across sessions.
    • host_permissions <all_urls>: MMRequest is an HTTP client where you enter your own API endpoints. We cannot know in advance which hosts you will call. No automatic requests are ever made; every request is triggered by you clicking Send.
    • identity / identity.email: Reads your Google email when you click "Get started with Google" to track Early Adopter eligibility. Not used for anything else.
    
    ━━━ FEEDBACK ━━━
    
    This is an actively developed beta. Send feedback or feature requests:
      [email protected]
    
    Website: <https://mm-request.vercel.app>
    🚀 MMRequest — the HTTP client built for multimodal LLM APIs.
    
    THE PROBLEM
    Every vision/audio LLM API (GPT-4o, Claude, Gemini, vLLM, Llama, …) wants your image or audio as a base64 string buried inside the JSON body. So today you end up uploading the file to some random website just to copy its base64, pasting a 300KB blob into Postman, and redoing the whole thing every time the file changes. It's slow, messy, and easy to get wrong.
    
    THE FIX
    Drop an image or audio file → MMRequest auto-encodes it to base64 (in your browser, no upload) and injects it into your request through a clean {{base64Image}} / {{base64Audio}} placeholder. Your JSON body stays readable; the heavy base64 is substituted only at Send time. Build, send, and iterate on multimodal requests the way a normal HTTP client never let you.
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    ✨ What's New in v0.0.3 ✨
    
    🎨 Themes — 10 hand-crafted color themes (7 dark + 3 light: Midnight, Ocean, Forest, Aurora, Crimson, Nord, Sunset, Daylight, Paper, Mint). Recolors the whole app, not just the accent.
    🌗 Sync with system — auto day/night switching that follows your OS appearance, or pick a theme manually.
    🗂️ Smarter tabs — multi-session tabs with a right-click menu (New / Close / Close Others / Close All) and unsaved-change indicators (🟠 editing · 🟢 saved) shown on tabs AND saved requests.
    📦 Postman compatible — export any request as a Postman Collection (v2.1) and import Postman collections too. Real base64 media is embedded so the request runs anywhere.
    🌊 Streaming responses — a new Stream tab merges chunked NDJSON / SSE output (including reasoning tokens) into one clean, combined JSON.
    🌲 Collapsible JSON viewer — Pretty view folds each field; long strings collapse with "…expand" so base64 no longer floods the screen.
    🔢 Line numbers in the Raw response view.
    🧰 Collections — drag & drop to reorder or move requests between collections, pin favorites, rename / duplicate / copy via the ⋯ menu, and search across all requests.
    🧾 Grouped console — each request/response cycle folds into a single expandable log entry.
    ⌨️ Shortcuts — Cmd/Ctrl + S to save a request, Cmd/Ctrl + E to rename.
    🐛 Fixes — dropped/pasted media now always attaches to the active tab, plus lots of UI polish.
    
    ━━━━━━━━━━━━━━━━━━━━━━━━━━━
    
    MMRequest is a Chrome extension HTTP client built for one specific workflow that existing tools don't automate well: calling multimodal LLM APIs (GPT-4V, Claude vision, vLLM, Llama vision, etc.) that need a base64-encoded image inside the JSON body.
    
    If you've ever:
      - Uploaded an image to a 3rd-party site just to get its base64 string
      - Copy-pasted a 300KB base64 string into Postman's JSON body
      - Forgotten to update the {{image}} placeholder before re-sending
      - Debugged the "wrong Content-Type" issue with multimodal endpoints
    … this extension is for you.
    
    ━━━ HOW IT WORKS ━━━
    
    1. Click the toolbar icon → MMRequest opens in a full-screen tab
    2. Set your API URL (supports variables: http://{{host}}:4017/v1/chat/completions)
    3. Drop an image into the right-side dropzone (or paste with Ctrl+V)
    4. The image is auto-base64-encoded and bound to {{base64Image}}
    5. Your JSON body keeps the placeholder for readability — substitution happens only at Send time
    6. Click Send → see the response below (Pretty / Raw / Stream / Headers / Console tabs)
    
    ━━━ FEATURES ━━━
    
    CORE
    • Drag & drop, file picker, and clipboard paste for images
    • Auto base64 encoding via FileReader (no network round-trip)
    • Multiple images supported ({{base64Image1}}, {{base64Image2}}, ...)
    • Variable system with {{host}}, {{api_key}}, etc.
    • Live "Resolved URL" preview showing the actual request URL
    
    REQUEST EDITING
    • HTTP methods: POST / GET / PUT / DELETE / PATCH
    • Custom + auto-generated headers (toggle on/off)
    • Body modes: Raw JSON with syntax-aware textarea
    • Authentication: None / Bearer Token / Basic Auth / API Key (header or query)
    • Variables tab with image variable auto-binding
    
    RESPONSE VIEWING
    • Status, duration, size, token usage (vLLM `usage` field)
    • Pretty (JSON formatted), Raw (line numbers), Stream (streamed merge), Headers
    • Console tab with full request/response logs and "Failed to fetch" diagnostics
    • Copy response / Copy cURL / Copy body buttons
    
    WORKFLOW
    • Request history (last 50, click to restore)
    • Collections / Favorites with tree structure
    • Postman Collection import/export, cURL export
    • Cmd/Ctrl + Enter to send
    • Settings persist across sessions (localStorage)
    
    ━━━ PRIVACY ━━━
    
    MMRequest is privacy-first by design.
    
    • All request/response data stays in your browser. We never see your URLs, headers, bodies, or responses.
    • Images you drop are encoded in your browser via FileReader — they never touch our servers.
    • The only data we collect is your Google email (when you choose to sign in for Early Adopter benefits) and basic sign-in event timestamps.
    • Full privacy policy: https://mm-request.vercel.app/privacy
    
    ━━━ EARLY ADOPTER BENEFIT ━━━
    
    We are currently in beta. Users who sign in with their Google account before our public launch will retain free access to all features after we introduce paid plans.
    
    ━━━ PERMISSIONS WHY ━━━
    
    • storage: Saves your URL, headers, variables, collections, and history locally so they persist across sessions.
    • host_permissions <all_urls>: MMRequest is an HTTP client where you enter your own API endpoints. We cannot know in advance which hosts you will call. No automatic requests are ever made; every request is triggered by you clicking Send.
    • identity / identity.email: Reads your Google email when you click "Get started with Google" to track Early Adopter eligibility. Not used for anything else.
    
    ━━━ FEEDBACK ━━━
    
    This is an actively developed beta. Send feedback or feature requests:
      [email protected]
    
    Website: https://mm-request.vercel.app
  • Jun 2, 2026
    short_description
    Multimodal HTTP client — drop an image/audio/video and have it auto-base64-injected into your API request body.
    Multimodal HTTP client. Drop an image and it auto-encodes to base64 in your API request body. For vision LLM developers.

Permissions & access

Permissions
storageidentityidentity.email
Host access
<all_urls>

Screenshots

MMRequest screenshot 1MMRequest screenshot 2MMRequest screenshot 3MMRequest screenshot 4MMRequest screenshot 5

About

🚀 MMRequest — the HTTP client built for multimodal LLM APIs.

THE PROBLEM
Every vision/audio LLM API (GPT-4o, Claude, Gemini, vLLM, Llama, …) wants your image or audio as a base64 string buried inside the JSON body. So today you end up uploading the file to some random website just to copy its base64, pasting a 300KB blob into Postman, and redoing the whole thing every time the file changes. It's slow, messy, and easy to get wrong.

THE FIX
Drop an image or audio file → MMRequest auto-encodes it to base64 (in your browser, no upload) and injects it into your request through a clean {{base64Image}} / {{base64Audio}} placeholder. Your JSON body stays readable; the heavy base64 is substituted only at Send time. Build, send, and iterate on multimodal requests the way a normal HTTP client never let you.

━━━━━━━━━━━━━━━━━━━━━━━━━━━

✨ What's New in v0.0.5 ✨

🔢 Stream-aware token extraction — SSE responses (OpenAI / vLLM / Anthropic / Gemini) are parsed end-to-end. Token usage and cost surface even when the request is streamed; the detail panel shows merged content + usage with a one-click toggle to the original SSE frames.
💵 Total cost rollup — every Runner result carries a footer with ↑ input · ↓ output · total cost. Outside the table so columns stay aligned at any width.
📐 Pricing pane, actually editable — number inputs in Settings → Pricing now select-to-replace on click. The per-million rate sticks, even on values like 0.
▶ Collection Runner, reborn — two-pane layout (Run Sequence + configuration). Drag a collection or folder from the sidebar to load it. Iterations, delay, stop-on-failure, per-row skip checkbox.
🪟 Multi-tab Runner instances — each ▶ Runner press opens a new tab, auto-named after the collection. Run several suites side-by-side without losing earlier results.
🔍 Per-row response panel — click any result row to open a right-side detail panel showing the full response, status, duration, and content type. For successful rows too, not only errors.
⚠ Unresolved variable warnings — references to unbound {{var}} surface as a ⚠ on the row and a summary banner above Run — caught before the request fires.
🎵 Raw base64 convention — variables named rawBase64Audio / rawBase64Image with a file attached now bind raw base64 automatically (no data: prefix). Fixes OpenAI's audio endpoint rejecting otherwise-valid uploads.
🐛 Polish & fixes — number inputs accept select-to-replace across the board. Closing all tabs now closes Runner instances too. Result table columns stay aligned via fixed layout + colgroup.

━━━━━━━━━━━━━━━━━━━━━━━━━━━

MMRequest is a Chrome extension HTTP client built for one specific workflow that existing tools don't automate well: calling multimodal LLM APIs (GPT-4V, Claude vision, vLLM, Llama vision, etc.) that need a base64-encoded image inside the JSON body.

If you've ever:
  - Uploaded an image to a 3rd-party site just to get its base64 string
  - Copy-pasted a 300KB base64 string into Postman's JSON body
  - Forgotten to update the {{image}} placeholder before re-sending
  - Debugged the "wrong Content-Type" issue with multimodal endpoints
… this extension is for you.

━━━ HOW IT WORKS ━━━

1. Click the toolbar icon → MMRequest opens in a full-screen tab
2. Set your API URL (supports variables: http://{{host}}:4017/v1/chat/completions)
3. Drop an image into the right-side dropzone (or paste with Ctrl+V)
4. The image is auto-base64-encoded and bound to {{base64Image}}
5. Your JSON body keeps the placeholder for readability — substitution happens only at Send time
6. Click Send → see the response below (Pretty / Raw / Stream / Headers / Console tabs)

━━━ FEATURES ━━━

CORE
• Drag & drop, file picker, and clipboard paste for images
• Auto base64 encoding via FileReader (no network round-trip)
• Multiple images supported ({{base64Image1}}, {{base64Image2}}, ...)
• Variable system with {{host}}, {{api_key}}, etc.
• Live "Resolved URL" preview showing the actual request URL

REQUEST EDITING
• HTTP methods: POST / GET / PUT / DELETE / PATCH
• Custom + auto-generated headers (toggle on/off)
• Body modes: Raw JSON with syntax-aware textarea
• Authentication: None / Bearer Token / Basic Auth / API Key (header or query)
• Variables tab with image variable auto-binding

RESPONSE VIEWING
• Status, duration, size, token usage (vLLM `usage` field)
• Pretty (JSON formatted), Raw (line numbers), Stream (streamed merge), Headers
• Console tab with full request/response logs and "Failed to fetch" diagnostics
• Copy response / Copy cURL / Copy body buttons

WORKFLOW
• Request history (last 50, click to restore)
• Collections / Favorites with tree structure
• Postman Collection import/export, cURL export
• Cmd/Ctrl + Enter to send
• Settings persist across sessions (localStorage)

━━━ PRIVACY ━━━

MMRequest is privacy-first by design.

• All request/response data stays in your browser. We never see your URLs, headers, bodies, or responses.
• Images you drop are encoded in your browser via FileReader — they never touch our servers.
• The only data we collect is your Google email (when you choose to sign in for Early Adopter benefits) and basic sign-in event timestamps.
• Full privacy policy: https://mm-request.vercel.app/privacy

━━━ EARLY ADOPTER BENEFIT ━━━

We are currently in beta. Users who sign in with their Google account before our public launch will retain free access to all features after we introduce paid plans.

━━━ PERMISSIONS WHY ━━━

• storage: Saves your URL, headers, variables, collections, and history locally so they persist across sessions.
• host_permissions <all_urls>: MMRequest is an HTTP client where you enter your own API endpoints. We cannot know in advance which hosts you will call. No automatic requests are ever made; every request is triggered by you clicking Send.
• identity / identity.email: Reads your Google email when you click "Get started with Google" to track Early Adopter eligibility. Not used for anything else.

━━━ FEEDBACK ━━━

This is an actively developed beta. Send feedback or feature requests:
  [email protected]

Website: https://mm-request.vercel.app

Technical

Version
0.0.5
Manifest
V3
Size
636KiB
Min Chrome
88
Languages
8
Featured
No

Metadata

ID
bpjcjkbaokboobjfbfolcbeafbgcopof
Developer ID
ud2310bcb9d7562361cb51a36779b095f
Developer Email
[email protected]
Created
May 25, 2026
Last Updated (Store)
Jun 7, 2026
Last Scraped
Jun 8, 2026
Website

Data sourced from the Chrome Web Store · last verified Jun 8, 2026.