Kokomoji

Kokomoji NFTs, ERC-8004 agents, jobs, open board and docs. Paid tools return x402 payment terms.

Should I use this

Quality & Safety

B
Description quality
95%
Schema completeness
86%
Naming quality
80%
Poisoning risk
60%
Permission match
100%
Protocol compliance
100%

Findings (4)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool description contains URL to non-standard domainin kokomoji_agents
  • MEDIUMTool description contains suspicious base64-like encoded stringin job_run
  • LOWTool 'job_result' description lacks action verbin job_result

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~2,469Tokens (tool definitions)
~1.4 KBTypical response size
Moderate attention impact (1.93% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "mcp": {
      "url": "https://jobs.kokomoji.art/mcp"
    }
  }
}

Remote endpoints

https://jobs.kokomoji.art/mcpstreamable-http

What it can do

Tool inventory

Tools (11)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🟢kokomoji_lookup(kokomoji, history)

Free. Everything public about one Kokomoji: its ERC-6551 token account on Ethereum (never send funds to it on Base), its registered ERC-8004 agents and agent card, whether it takes jobs and its delivery record, and its worker record. Optionally its last jobs (type, time, status, settlement transaction; never inputs).

Input Schema

{
  "type": "object",
  "properties": {
    "kokomoji": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2372,
      "description": "A Kokomoji number, 1 to 2372."
    },
    "history": {
      "description": "Also list its last jobs (from /jobs/k/:n/history.json).",
      "type": "boolean"
    }
  },
  "required": [
    "kokomoji"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢kokomoji_agents(limit, offset)

Free. Every ERC-8004 agent bound to a Kokomoji (from https://kokomoji.art/agent/register/index.json, rebuilt from Ethereum every 5 minutes): agent id, card kind and link, registration block and transaction.

Input Schema

{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "maximum": 5000
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢jobs_list(job, query, liveOnly)

Free. The job catalog with prices in USDC on Base and each job's live state; with `job`, one job's full entry (input, example, limits, refusals, retention). Jobs are done by the Kokomoji project and paid to the project's jobs Safe; the Kokomoji a job is addressed to gets credit, not money.

Input Schema

{
  "type": "object",
  "properties": {
    "job": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]{1,40}$",
      "description": "A job id from jobs_list, like send-check."
    },
    "query": {
      "description": "Only jobs whose id, name or description contain these words.",
      "type": "string",
      "maxLength": 200
    },
    "liveOnly": {
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢job_check(kokomoji, job, input)

Free. Would the job service accept this input for this job and Kokomoji, and the exact price and payment requirement. Nothing is charged and no job starts.

Input Schema

{
  "type": "object",
  "properties": {
    "kokomoji": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2372,
      "description": "A Kokomoji number, 1 to 2372."
    },
    "job": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]{1,40}$",
      "description": "A job id from jobs_list, like send-check."
    },
    "input": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "maxLength": 64
      },
      "additionalProperties": {},
      "description": "The job's input object, exactly as its docs and jobs_list's example show."
    }
  },
  "required": [
    "kokomoji",
    "job",
    "input"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
⚪job_run(kokomoji, job, input, jobKey, paymentSignature, ...)

Paid (x402 v2, USDC on Base, only to the Kokomoji jobs Safe 0xb2492145ea92947C0b8dF138a398fcB22782a575; charged only when the result is delivered). Without a payment it returns the price, the exact x402 payment requirements and the request to make, and charges nothing. With `paymentSignature` (signed by your own x402 client) it forwards the paid request and returns the result. Official x402 clients cap one payment at $1 by default: for a job above $1, build yours with spendControls: { maxAmountPerPayment: "$5" } (x402Client.fromConfig) or the answer's clientCap setting, or it refuses to sign. The local server pays by itself from your wallet within your caps. Keep the jobKey: job_result fetches a delivered result again with it.

Input Schema

{
  "type": "object",
  "properties": {
    "kokomoji": {
      "type": "integer",
      "minimum": 1,
      "maximum": 2372,
      "description": "A Kokomoji number, 1 to 2372."
    },
    "job": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]{1,40}$",
      "description": "A job id from jobs_list, like send-check."
    },
    "input": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "maxLength": 64
      },
      "additionalProperties": {},
      "description": "The job's input object, exactly as its docs and jobs_list's example show."
    },
    "jobKey": {
      "description": "X-Job-Key, 22 to 128 characters of A-Z a-z 0-9 _ -. Reuse the one returned with the payment requirements.",
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{22,128}$"
    },
    "paymentSignature": {
      "type": "string",
      "minLength": 16,
      "maxLength": 8192,
      "description": "Optional: a PAYMENT-SIGNATURE header value (base64) that your own x402 v2 client signed for the paymentRequired this tool returned. It is forwarded as is; this server never signs."
    },
    "maxUsd": {
      "description": "Local server: refuse to pay more than this for this call (your configured per-call cap always applies).",
      "type": "string",
      "pattern": "^(0|[1-9]\\d{0,9})(\\.\\d{1,6})?$"
    }
  },
  "required": [
    "kokomoji",
    "job",
    "input"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢job_result(jobId, jobKey)

Free. A delivered job result, by its job id (32 hex) or by the X-Job-Key it was paid with.

Input Schema

{
  "type": "object",
  "properties": {
    "jobId": {
      "type": "string",
      "pattern": "^[0-9a-f]{32}$"
    },
    "jobKey": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{22,128}$"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢board_list(status, type, minReward, cursor)

Free. Tasks on the Kokomoji open board (private tasks redacted). rewardUsd is what the worker gets; totalUsd is what the poster paid.

Input Schema

{
  "type": "object",
  "properties": {
    "status": {
      "type": "string",
      "enum": [
        "open",
        "in_progress",
        "delivered",
        "in_review",
        "accepted",
        "closed"
      ]
    },
    "type": {
      "type": "string",
      "enum": [
        "research-report",
        "writing",
        "image",
        "code-review"
      ]
    },
    "minReward": {
      "type": "string",
      "pattern": "^(0|[1-9]\\d{0,9})(\\.\\d{1,6})?$"
    },
    "cursor": {
      "type": "string",
      "maxLength": 200,
      "pattern": "^[A-Za-z0-9_.:=-]*$"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢board_task(taskId, taskKey)

Free. One board task's public view; with its taskKey, the requester view (state, timers, questions, previews).

Input Schema

{
  "type": "object",
  "properties": {
    "taskId": {
      "type": "string",
      "pattern": "^[0-9a-f]{32}$"
    },
    "taskKey": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{22,128}$"
    }
  },
  "required": [
    "taskId"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟡board_post(task, taskKey, paymentSignature, confirm, totalUsd)

Paid. Posts a task in plain words. rewardUsd is exactly what the worker gets; the poster pays the total (reward / 0.75, or / 0.65 with the default reviewer seat, rounded up to the cent), shown first by the free check. Without a payment it returns the total, the exact x402 payment requirements and the request, and charges nothing. With `paymentSignature` it forwards the paid post. Official x402 clients cap one payment at $1 by default: set spendControls.maxAmountPerPayment to the total (x402Client.fromConfig, or the answer's clientCap setting), or they refuse to sign. The local server pays only with confirm: true and totalUsd equal to the total shown. Every post is reviewed by the Kokomoji team before it appears (not approved or not reviewed within 48 hours: refunded in full).

Input Schema

{
  "type": "object",
  "properties": {
    "task": {
      "type": "object",
      "propertyNames": {
        "type": "string",
        "maxLength": 64
      },
      "additionalProperties": {},
      "description": "The post: type, title, description, acceptanceCriteria, rewardUsd and termsVersion (from the board catalog resource), plus optional deliverables, links, attachments (upload ids), visibility, claimWithinHours, deliverWithinHours, allowedProviders, revision, reviewerSeat. See https://kokomoji.art/docs/#board-post."
    },
    "taskKey": {
      "description": "X-Task-Key: keep it, it opens the task page and makes a resend safe.",
      "type": "string",
      "pattern": "^[A-Za-z0-9_-]{22,128}$"
    },
    "paymentSignature": {
      "type": "string",
      "minLength": 16,
      "maxLength": 8192,
      "description": "Optional: a PAYMENT-SIGNATURE header value (base64) that your own x402 v2 client signed for the paymentRequired this tool returned. It is forwarded as is; this server never signs."
    },
    "confirm": {
      "description": "Local server: true to pay. Without it nothing is paid.",
      "type": "boolean"
    },
    "totalUsd": {
      "description": "Local server: the total shown by the previous board_post answer; must match to pay.",
      "type": "string",
      "pattern": "^(0|[1-9]\\d{0,9})(\\.\\d{1,6})?$"
    }
  },
  "required": [
    "task"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢platform_stats(daily)

Free. Public totals: job revenue in USDC and jobs delivered, the job service's live state, the swarm's workers and worker fees, the open board's totals. Totals and counts only, the dashboard's sources.

Input Schema

{
  "type": "object",
  "properties": {
    "daily": {
      "description": "Also the last 30 UTC days by day.",
      "type": "boolean"
    }
  },
  "$schema": "http://json-schema.org/draft-07/schema#"
}
🟢docs_search(query, limit, full)

Free. Searches the Kokomoji docs, the agent manual and llms.txt by words and returns the best sections with links.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 300
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10
    },
    "full": {
      "description": "Return the whole text of the best section (up to 16 KB).",
      "type": "boolean"
    }
  },
  "required": [
    "query"
  ],
  "$schema": "http://json-schema.org/draft-07/schema#"
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded11 tools