- name
- easyimage-uploader
- description
- Upload local image files to an EasyImages 2.0 service and return the hosted image URL. Use when the user asks to upload an image, host a picture, put a local screenshot/photo onto an EasyImages server, or wants a sharable image link generated from a local file. This skill supports skill-local configuration via config.json, with CLI flags or environment variables as fallback.
easyimage-uploader
Upload a local image to an EasyImages 2.0 server, then return the hosted image URL.
Configuration priority
Resolve configuration in this order:
- CLI flags:
--serverand--token - Skill-local config file:
config.json - Environment variables fallback:
- EASYIMAGE_URL - EASYIMAGE_TOKEN
Recommended setup: create config.json in the root of this skill.
Example:
{
"server": "https://img.example.com",
"token": "your-easyimage-token",
"allow_model_image_input": false,
"temp_dir": "./temp"
}A template file is included as config.example.json.
Config fields
server: EasyImages service base URLtoken: EasyImages upload tokenallow_model_image_input: whether upload requests are allowed to rely on model-side image understanding
- false: prefer direct file-path upload only, avoid image analysis, avoid vision tool usage - true: model-side image handling is allowed when needed
temp_dir: temp working directory for this skill
- default recommended value: ./temp - relative paths are resolved relative to this SKILL.md / skill root directory - with the default, the effective directory is easyimage-uploader/temp/
If configuration is missing, stop and ask the user for the missing value.
Workflow
- Confirm which local image file should be uploaded.
- Read
references/api.mdif you need the exact upstream API shape or status meanings. - Read
config.jsonwhen behavior matters. - If
allow_model_image_inputisfalse, do not use image analysis or vision tools just to understand image content. Treat the image as a file and upload by path only. - Use
temp_dirfor temporary files when downloads, conversions, or intermediate storage are needed. If the directory does not exist, create it first. - Prefer absolute paths for both the script and the image file. Do not rely on
~expansion in generated commands. Safe default:
python3 /absolute/path/to/skills/easyimage-uploader/scripts/upload_easyimage.py /absolute/path/to/image- If needed, point to a specific config file with an absolute path:
python3 /absolute/path/to/skills/easyimage-uploader/scripts/upload_easyimage.py /absolute/path/to/image \
--config /absolute/path/to/config.json- If needed, override with explicit CLI values:
python3 /absolute/path/to/skills/easyimage-uploader/scripts/upload_easyimage.py /absolute/path/to/image \
--server https://img.example.com \
--token YOUR_TOKEN- The bundled script normalizes
~and relative paths for the image and config arguments, but still prefer absolute paths in examples and real executions to avoid shell-specific surprises. - Parse the JSON output.
- If
okis true, return theurlto the user. Mentionthumbonly if useful. - Do not expose
delete_urlunless the user explicitly asks for deletion capability. - If upload fails, explain the likely cause using the
codeor error payload.
Failure handling
When the script returns a failure payload:
network_error: server unreachable, DNS/TLS/network problem, or timeouthttp_error: server returned a non-2xx HTTP responseinvalid_json: server responded unexpectedly- EasyImages
codevalues should be interpreted usingreferences/api.md
Common user-facing explanations:
202: server-side upload quota reached205: current client is blocked by EasyImages allow/deny rules401: server requires login uploads instead of token-only uploads403: token invalid or signature check failed406: file type rejected
Notes
- Use this skill for local files that already exist on disk.
- If the user only gives a remote URL and wants it mirrored, download it first only if appropriate and allowed.
- Prefer returning the direct image
urlas the main result. - Keep secrets safe. Never echo the configured token back to the user.
config.jsoncontains secrets. Keep file permissions tight and avoid committing it to public repositories.