Docs/Skills/CUID Generator Skill

CUID Generator Skill

Generate collision-resistant unique identifiers

OperationalCredits 1 per callp50 176msData Generation

Overview

Each ID follows the original CUID layout, built from five parts concatenated in order: the letter `c`; the current time in milliseconds written in base 36; a four-character base-36 counter; a four-character fingerprint; and two four-character random blocks.

The counter increments for every ID the serving instance creates and wraps back to zero after 36^4 values, so IDs made in the same millisecond on the same instance still differ. The fingerprint is derived from the server process ID and the length of its hostname, which separates IDs made by different instances at the same moment. The random blocks come from the JavaScript runtime's standard random number generator, which is not a cryptographic source: treat CUIDs as unique identifiers, not as secrets or unguessable tokens. Use a password or token generator for those.

Because the timestamp comes first and is the same length for any current date, IDs sort roughly by creation time. Ordering within the same millisecond is reliable only for IDs from the same instance, since separate instances keep separate counters.

`count` sets how many IDs are returned, from 1 to 100, defaulting to 1, and `cuids` holds them in generation order. `format`, `collision_resistant` and `sortable` are fixed descriptive values that are the same on every response; they are null on the Free plan.

Live Test CUID Generator Skill Skill →

The tool

Once your client is connected to the VerveKit server, this appears in its tool list as CUIDGeneratorSkill. It is read-only and open-world — it fetches and never mutates anything on your side — so most clients call it without asking you to confirm.

Tool call
{
  "name": "CUIDGeneratorSkill",
  "arguments": {}
}

Connecting

One server URL covers every skill in the catalog, including this one. Authorization is OAuth: the client opens a browser once, and there is no key to paste into a config file.

{
  "mcpServers": {
    "vervekit": {
      "url": "https://api.vervekit.com/v1/mcp"
    }
  }
}

Per-client setup — Claude, Cursor, VS Code, ChatGPT — is on the MCP setup page.

Arguments

These are the properties on the tool's inputSchema, so a well-behaved client validates them before the call is made. Premium arguments are accepted on every plan but only take effect on plans that include them.

ArgumentTypeDescription
countOptionalintegerNumber of Cuids to generate
default 1 · range 1–100

What the model gets back

The result carries a structuredContent object matching the tool's declared outputSchema, so a client reads fields without parsing prose. status is "ok" and error is null on success; a null field means the value was not available for that input, not that the call failed.

Result
{
  "status": "ok",
  "error": null,
  "data": {
    "cuids": [
      "cmj95ed27000000145v116use",
      "cmj95ed2700010014uuounuyc",
      "cmj95ed27000200147pwbz35y",
      "cmj95ed27000300142h9ivqrz",
      "cmj95ed27000400149ingh73n",
      "cmj95ed2700050014mg9alsah",
      "cmj95ed27000600149utx0fy3",
      "cmj95ed270007001467kspfhp",
      "cmj95ed2700080014n7ykgwxf",
      "cmj95ed2700090014rrnfehcn"
    ],
    "count": 10,
    "format": "c + timestamp + counter + fingerprint + random",
    "collision_resistant": true,
    "sortable": true
  }
}

Response fields

Paths are relative to data. Premium fields are absent rather than zeroed on plans that do not include them, so check for presence instead of comparing to 0.

FieldTypeExampleDescription
cuidsarray["cmj95ed27000000145v116use","cmj95ed2700010014uuounuyc","cmj95ed27000200147pwbz35y"]Array of generated collision-resistant unique identifier strings
countnumber10Total count of CUIDs generated in this request
formatPremiumstringc + timestamp + counter + fingerprint + randomDescription of CUID component composition and structure format
collision_resistantPremiumbooleantrueIndicates whether generated CUIDs provide collision resistance guarantee
sortablePremiumbooleantrueIndicates whether CUIDs are naturally sortable by timestamp component

Failure modes

Errors come back as tool errors carrying a sentence the model can act on, not a bare status code. Error handling covers the full list.

StatusWhat it means
400 / 422The arguments did not validate. The message names the offending one.
401The OAuth session is invalid or expired — reconnect the server.
403Blocked by a key restriction or an IP allow-list. Never a bad identity.
404This skill is not part of VerveKit. Check the catalog.
429Out of credits, or a brief rate limit. The message tells them apart.

A call costs 1 credit each time the tool actually runs; a model that reasons about the tool without calling it costs nothing.

Use cases

Distributed Databases
Generate safe unique keys across distributed database systems and shards
Horizontal Scaling
Create identifiers that work reliably across horizontally scaled applications
Event Sourcing
Generate sortable event identifiers for event sourcing and CQRS patterns
Multi-tenant Systems
Create unique identifiers across multiple tenants and isolated environments

Other ways to use CUID Generator Skill

Set up CUID Generator Skill on VerveKit, or reach the same source a different way. Your VerveKit account and credits work on all of them — one key, one balance.

Call it as a REST APIOne HTTPS endpoint and an x-api-key header, with SDKs for Node, Python and .NET.APIVerve →Reference →
Google Sheets or ExcelA =VERVE() formula fills a column — no script, no export, recalculates in place.VerveSheets →Reference →

More in Data Generation:

Was this page helpful?