Arumi MCP
An MCP server enabling AI assistants to generate images, video, and audio using Arumi's 55 models. It allows users to browse models, check prices and balances, generate content, and upload files, all while enforcing credit limits and spending controls.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://api.arumi.ai/mcpWhat its tools do
9 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Can change data (1)
Not annotated (2)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Generate images, video, and audio using AI models
- Check generation costs and account balance before spending
- Upload files to use as references for generation
- List and browse available AI models
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- arumi 1
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 9 advertised
- Resources
- Not advertised
- Resource templates
- Not advertised
- Prompts
- Not advertised
{
"tools": {
"listChanged": true
},
"logging": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
9 advertised
complete_upload
Finish an upload after the PUT; returns the asset_id to pass in a generation's references.
{
"type": "object",
"required": [
"upload_id"
],
"properties": {
"upload_id": {
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"asset_id",
"kind",
"name"
],
"properties": {
"kind": {
"type": "string"
},
"name": {
"type": "string"
},
"asset_id": {
"type": "string"
},
"duration_seconds": {
"type": "number"
}
},
"additionalProperties": false
}create_upload
Start uploading one of the user's files to use as a reference. PUT the file's bytes to upload_url with exactly the returned headers, then call complete_upload.
{
"type": "object",
"required": [
"file_name",
"content_type",
"size_bytes",
"sha256"
],
"properties": {
"width": {
"type": "integer",
"description": "required for images: width in pixels"
},
"height": {
"type": "integer",
"description": "required for images: height in pixels"
},
"sha256": {
"type": "string",
"description": "the file's SHA-256 as 64 lower-case hex characters (shasum -a 256)"
},
"file_name": {
"type": "string",
"description": "the file's name, with its extension"
},
"size_bytes": {
"type": "integer"
},
"content_type": {
"type": "string",
"description": "for example image/png, image/jpeg, video/mp4, audio/mpeg"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"upload_id",
"upload_url",
"headers",
"expires_at",
"next"
],
"properties": {
"next": {
"type": "string"
},
"headers": {
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"upload_id": {
"type": "string"
},
"expires_at": {
"type": "string"
},
"upload_url": {
"type": "string"
}
},
"additionalProperties": false
}generate
Start a generation with the user's credits. It is refused, with nothing charged, when it would cost more than max_credits. Returns at once with a generation_id: call get_generation until it has succeeded or failed.
{
"type": "object",
"required": [
"model",
"max_credits"
],
"properties": {
"model": {
"type": "string",
"description": "the model id from list_models"
},
"prompt": {
"type": "string",
"description": "what to make; for speech models the text to read"
},
"parameters": {
"type": "object",
"description": "the model's settings by key (get_model); any left out take the model's default",
"additionalProperties": true
},
"references": {
"type": [
"null",
"object"
],
"properties": {
"audio": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "asset ids of uploaded audio files, in the order of the model's audio slots"
},
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "asset ids of uploaded images (complete_upload), in the order of the model's image slots"
},
"videos": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "asset ids of uploaded videos, in the order of the model's video slots"
}
},
"description": "uploaded files the model works from",
"additionalProperties": false
},
"max_credits": {
"type": "integer",
"description": "the most credits the user agreed to spend on this generation; it is refused when the quote is higher"
},
"idempotency_key": {
"type": "string",
"description": "optional, 16-128 characters [A-Za-z0-9._:-]: repeating a call with the same key returns the same generation instead of making another"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"generation_id",
"model",
"modality",
"status",
"progress",
"created_at",
"credits"
],
"properties": {
"tip": {
"type": "string"
},
"text": {
"type": "string"
},
"error": {
"type": [
"null",
"object"
],
"required": [
"code",
"message",
"retryable"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
}
},
"additionalProperties": false
},
"model": {
"type": "string"
},
"prompt": {
"type": "string"
},
"status": {
"type": "string",
"description": "queued, processing, succeeded, failed or unknown"
},
"credits": {
"type": "object",
"required": [
"reserved",
"charged",
"state"
],
"properties": {
"state": {
"type": "string",
"description": "reserved while it runs; settled when charged; released when nothing was charged"
},
"charged": {
"type": "integer"
},
"reserved": {
"type": "integer"
}
},
"additionalProperties": false
},
"outputs": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"url",
"kind"
],
"properties": {
"url": {
"type": "string"
},
"kind": {
"type": "string"
},
"duration_ms": {
"type": "integer"
}
},
"additionalProperties": false
}
},
"modality": {
"type": "string"
},
"progress": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"generation_id": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": false,
"idempotentHint": false,
"destructiveHint": false
}get_balance
The user's Arumi credits: available, held by running generations, and owed. 1 credit = 0.01 USD.
{
"type": "object",
"additionalProperties": false
}{
"type": "object",
"additionalProperties": {
"type": "integer"
}
}{
"readOnlyHint": true,
"idempotentHint": false
}get_generation
A generation's status; once it has succeeded, links to its results, and what it charged.
{
"type": "object",
"required": [
"generation_id"
],
"properties": {
"generation_id": {
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"generation_id",
"model",
"modality",
"status",
"progress",
"created_at",
"credits"
],
"properties": {
"tip": {
"type": "string"
},
"text": {
"type": "string"
},
"error": {
"type": [
"null",
"object"
],
"required": [
"code",
"message",
"retryable"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
}
},
"additionalProperties": false
},
"model": {
"type": "string"
},
"prompt": {
"type": "string"
},
"status": {
"type": "string",
"description": "queued, processing, succeeded, failed or unknown"
},
"credits": {
"type": "object",
"required": [
"reserved",
"charged",
"state"
],
"properties": {
"state": {
"type": "string",
"description": "reserved while it runs; settled when charged; released when nothing was charged"
},
"charged": {
"type": "integer"
},
"reserved": {
"type": "integer"
}
},
"additionalProperties": false
},
"outputs": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"url",
"kind"
],
"properties": {
"url": {
"type": "string"
},
"kind": {
"type": "string"
},
"duration_ms": {
"type": "integer"
}
},
"additionalProperties": false
}
},
"modality": {
"type": "string"
},
"progress": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"generation_id": {
"type": "string"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"idempotentHint": false
}get_model
One model's prompt limit, the reference files it takes, and its settings with their allowed values and defaults.
{
"type": "object",
"required": [
"model"
],
"properties": {
"model": {
"type": "string",
"description": "the model id from list_models"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"id",
"name",
"maker",
"modality",
"settings"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"maker": {
"type": "string"
},
"prompt": {
"type": "object",
"additionalProperties": true
},
"modality": {
"type": "string"
},
"settings": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"key",
"name"
],
"properties": {
"key": {
"type": "string"
},
"max": {
"type": [
"null",
"number"
]
},
"min": {
"type": [
"null",
"number"
]
},
"help": {
"type": "string"
},
"name": {
"type": "string"
},
"type": {
"type": "string"
},
"values": {
"type": [
"null",
"array"
],
"items": true
},
"default": true,
"optional": {
"type": "boolean",
"description": "left out unless given"
},
"required": {
"type": "boolean"
},
"only_when": {
"type": "string"
}
},
"additionalProperties": false
}
},
"reference_inputs": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"name",
"kind",
"min",
"max"
],
"properties": {
"max": {
"type": "integer"
},
"min": {
"type": "integer"
},
"kind": {
"type": "string"
},
"name": {
"type": "string"
},
"role": {
"type": "string"
},
"max_bytes": {
"type": "integer"
},
"file_types": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
}
}
},
"additionalProperties": false
},
"description": "in order: references of one kind fill these slots in turn"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"idempotentHint": false
}list_generations
The user's latest generations, newest first, made on the site or through any of their keys.
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"description": "how many, newest first (1–20, default 10)"
}
},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"generation_id",
"model",
"modality",
"status",
"progress",
"created_at",
"credits"
],
"properties": {
"tip": {
"type": "string"
},
"text": {
"type": "string"
},
"error": {
"type": [
"null",
"object"
],
"required": [
"code",
"message",
"retryable"
],
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"retryable": {
"type": "boolean"
}
},
"additionalProperties": false
},
"model": {
"type": "string"
},
"prompt": {
"type": "string"
},
"status": {
"type": "string",
"description": "queued, processing, succeeded, failed or unknown"
},
"credits": {
"type": "object",
"required": [
"reserved",
"charged",
"state"
],
"properties": {
"state": {
"type": "string",
"description": "reserved while it runs; settled when charged; released when nothing was charged"
},
"charged": {
"type": "integer"
},
"reserved": {
"type": "integer"
}
},
"additionalProperties": false
},
"outputs": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"url",
"kind"
],
"properties": {
"url": {
"type": "string"
},
"kind": {
"type": "string"
},
"duration_ms": {
"type": "integer"
}
},
"additionalProperties": false
}
},
"modality": {
"type": "string"
},
"progress": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"generation_id": {
"type": "string"
}
},
"additionalProperties": false
}
}
}{
"readOnlyHint": true,
"idempotentHint": false
}list_models
The models the user can generate with, by kind (image, video, audio, text). get_model gives one model's inputs and settings.
{
"type": "object",
"properties": {
"modality": {
"type": "string",
"description": "only this kind: image, video, audio or text"
}
},
"additionalProperties": false
}{
"type": "object",
"additionalProperties": {
"type": [
"null",
"array"
],
"items": {
"type": "object",
"required": [
"id",
"name",
"maker",
"modality",
"takes"
],
"properties": {
"id": {
"type": "string"
},
"name": {
"type": "string"
},
"maker": {
"type": "string"
},
"takes": {
"type": "string"
},
"featured": {
"type": "boolean"
},
"modality": {
"type": "string"
}
},
"additionalProperties": false
}
}
}{
"readOnlyHint": true,
"idempotentHint": false
}quote
What a generation would cost, in credits, without making it. Tell the user before generating.
{
"type": "object",
"required": [
"model"
],
"properties": {
"model": {
"type": "string",
"description": "the model id from list_models"
},
"prompt": {
"type": "string",
"description": "what to make; for speech models the text to read"
},
"parameters": {
"type": "object",
"description": "the model's settings by key (get_model); any left out take the model's default",
"additionalProperties": true
},
"references": {
"type": [
"null",
"object"
],
"properties": {
"audio": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "asset ids of uploaded audio files, in the order of the model's audio slots"
},
"images": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "asset ids of uploaded images (complete_upload), in the order of the model's image slots"
},
"videos": {
"type": [
"null",
"array"
],
"items": {
"type": "string"
},
"description": "asset ids of uploaded videos, in the order of the model's video slots"
}
},
"description": "uploaded files the model works from",
"additionalProperties": false
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"model",
"credits",
"estimated_credits",
"exact",
"usd"
],
"properties": {
"usd": {
"type": "string",
"description": "credits in US dollars at 1 credit = 0.01 USD"
},
"exact": {
"type": "boolean",
"description": "true when the price is fixed; false when the model decides part of it and only up to credits is charged"
},
"model": {
"type": "string"
},
"credits": {
"type": "integer",
"description": "what is reserved; for a fixed price also what is charged"
},
"estimated_credits": {
"type": "integer"
}
},
"additionalProperties": false
}{
"readOnlyHint": true,
"idempotentHint": false
}Prompts
Not advertised
Resources
Not advertised
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 610 ms
- 95th percentile latency
- 610 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 610 ms · metadata changed · 9 tool(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http arumi-mcp https://api.arumi.ai/mcpCodex
codex mcp add arumi-mcp --url https://api.arumi.ai/mcpCursor
{
"mcpServers": {
"arumi-mcp": {
"url": "https://api.arumi.ai/mcp"
}
}
}Cline
{
"mcpServers": {
"arumi-mcp": {
"type": "streamableHttp",
"url": "https://api.arumi.ai/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"arumi-mcp": {
"type": "http",
"url": "https://api.arumi.ai/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http arumi-mcp https://api.arumi.ai/mcpClaude Desktop
https://api.arumi.ai/mcpWindsurf
{
"mcpServers": {
"arumi-mcp": {
"serverUrl": "https://api.arumi.ai/mcp"
}
}
}Let your agent find its tools
Find servers like Arumi MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.