stensul-image-upload-session
The upload path for local images: files the user has, pastes or attaches. Mints a single-use browser upload link, or a small uploader script on hosts with a shell.
Links are valid for about 15 minutes and scoped to one email. Images are never base64-encoded into a tool call.
Inputs
- action"start" | "check"required
startmints the upload;checkfetches the filenames after the user uploaded. - email_idstringrequired
The email the images belong to.
- mode"link" | "script"optional
link(default, works on every host) orscript(hosts with a shell, Python 3 and internet). - countinteger 1–5optional
How many images the upload accepts (default 1).
- labelsstring[] (≤5)optional
Per-slot labels shown on the upload page, for example
"Hero banner (top)". - upload_idstringoptional
checkonly: the id returned bystart.
Errors people hit
| What you see | Fix |
|---|---|
| 401 Authentication expired or missing The session's authorization expired. | Sign in again when the host prompts. On a 401 or 403, the server's instructions tell the model to re-check sign-in first. |
| 403 Insufficient OAuth scope (403): The token lacks the required scope The API connection doesn't have the scope this tool needs. | An admin adds the scope to the API connection. Then sign in again: adding a scope revokes existing tokens. |
| 403 API error (403): Action is unauthorized. The signed-in user's role lacks the permission, for example edit_campaign. | Grant the permission to the user's role in Admin > Users & Roles. It works for other users on the same connection. |
All errors: Errors and troubleshooting.
{
"action": "start",
"email_id": "64f0c0ffee0000000000abcd",
"count": 1,
"labels": [
"Hero banner (top)"
]
}{
"jsonrpc": "2.0",
"id": 1,
"method": "tools/call",
"params": {
"name": "stensul-image-upload-session",
"arguments": {
"action": "start",
"email_id": "64f0c0ffee0000000000abcd",
"count": 1,
"labels": [
"Hero banner (top)"
]
}
}
}start (link mode): an upload link to give the user and an upload_id. check: the uploaded filenames.
Described from the tool's definition. Captured responses from a Stensul-internal tenant will replace this.
Example values use invented brands and ids. Tool list captured 2026-09-28.