General-purpose shared key-value scratchpad for AI agents: store, share, count and watch any data.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Optional existing key password or capability; configure privately in the client.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Create a random PUBLIC key, absolute TTL (default one hour). No credentials returned; anyone knowing the ID can modify it.
This tool isn't marked read-only, so it may change something on the server or in an account you connected.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http setget https://setget.net/mcp
Headers
X-SetGet-Token (optional, not in the config above): Optional existing key password or capability; configure privately in the client.Create a random PUBLIC key, absolute TTL (default one hour). No credentials returned; anyone knowing the ID can modify it.
| Argument | Type | Description |
|---|---|---|
| value* | string | |
| ttl_seconds | integer | |
| content_type | string |
{
"type": "object",
"title": "create_keyArguments",
"required": [
"value"
],
"properties": {
"value": {
"type": "string",
"title": "Value"
},
"ttl_seconds": {
"type": "integer",
"title": "Ttl Seconds",
"default": 3600,
"maximum": 31536000,
"minimum": 1
},
"content_type": {
"enum": [
"text/plain",
"application/json"
],
"type": "string",
"title": "Content Type",
"default": "text/plain"
}
}
}Atomically decrement a signed 64-bit counter; optional clamps and bounded history. Never retry blindly.
| Argument | Type | Description |
|---|---|---|
| by | integer | |
| key* | string | |
| history | any | |
| maximum | any | |
| minimum | any |
{
"type": "object",
"title": "decrement_counterArguments",
"required": [
"key"
],
"properties": {
"by": {
"type": "integer",
"title": "By",
"default": 1,
"maximum": 9223372036854776000,
"minimum": -9223372036854776000
},
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
},
"history": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "History",
"default": null
},
"maximum": {
"anyOf": [
{
"type": "integer",
"maximum": 9223372036854776000,
"minimum": -9223372036854776000
},
{
"type": "null"
}
],
"title": "Maximum",
"default": null
},
"minimum": {
"anyOf": [
{
"type": "integer",
"maximum": 9223372036854776000,
"minimum": -9223372036854776000
},
{
"type": "null"
}
],
"title": "Minimum",
"default": null
}
}
}Permanently delete a key with write access and optional ETag. Missing keys return 404.
| Argument | Type | Description |
|---|---|---|
| key* | string | |
| if_match | any |
{
"type": "object",
"title": "delete_keyArguments",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
},
"if_match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "If Match",
"default": null
}
}
}Read opted-in UTC history: 168 hourly, 90 daily or 24 monthly buckets; ISO start inclusive/end exclusive.
| Argument | Type | Description |
|---|---|---|
| end | any | |
| key* | string | |
| start | any | |
| resolution | string |
{
"type": "object",
"title": "get_counter_historyArguments",
"required": [
"key"
],
"properties": {
"end": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End",
"default": null
},
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
},
"start": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start",
"default": null
},
"resolution": {
"enum": [
"hour",
"day",
"month"
],
"type": "string",
"title": "Resolution",
"default": "hour"
}
}
}Read exact string value, metadata and ETag. May renew sliding TTL with write access; refuses burn values.
| Argument | Type | Description |
|---|---|---|
| key* | string |
{
"type": "object",
"title": "get_keyArguments",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
}
}
}Inspect metadata and ETag without reading values, renewing expiry or consuming burn keys.
| Argument | Type | Description |
|---|---|---|
| key* | string |
{
"type": "object",
"title": "get_metadataArguments",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
}
}
}Atomically increment a signed 64-bit counter; optional clamps and bounded history. Never retry blindly.
| Argument | Type | Description |
|---|---|---|
| by | integer | |
| key* | string | |
| history | any | |
| maximum | any | |
| minimum | any |
{
"type": "object",
"title": "increment_counterArguments",
"required": [
"key"
],
"properties": {
"by": {
"type": "integer",
"title": "By",
"default": 1,
"maximum": 9223372036854776000,
"minimum": -9223372036854776000
},
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
},
"history": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"title": "History",
"default": null
},
"maximum": {
"anyOf": [
{
"type": "integer",
"maximum": 9223372036854776000,
"minimum": -9223372036854776000
},
{
"type": "null"
}
],
"title": "Maximum",
"default": null
},
"minimum": {
"anyOf": [
{
"type": "integer",
"maximum": 9223372036854776000,
"minimum": -9223372036854776000
},
{
"type": "null"
}
],
"title": "Minimum",
"default": null
}
}
}Apply JSON Merge Patch text with an exact quoted ETag. Null members delete; arrays/scalars replace. No blind retries.
| Argument | Type | Description |
|---|---|---|
| key* | string | |
| patch* | string | |
| if_match* | string |
{
"type": "object",
"title": "patch_keyArguments",
"required": [
"key",
"patch",
"if_match"
],
"properties": {
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
},
"patch": {
"type": "string",
"title": "Patch"
},
"if_match": {
"type": "string",
"title": "If Match",
"pattern": "^\"[^\",\\r\\n]+\"$"
}
}
}Create or replace UTF-8 text. Existing protection remains; absolute deadlines cannot extend. Preconditions prevent lost updates.
| Argument | Type | Description |
|---|---|---|
| key* | string | |
| value* | string | |
| if_match | any | |
| ttl_mode | any | |
| ttl_seconds | any | |
| content_type | string | |
| if_none_match | any |
{
"type": "object",
"title": "put_keyArguments",
"required": [
"key",
"value"
],
"properties": {
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
},
"value": {
"type": "string",
"title": "Value"
},
"if_match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "If Match",
"default": null
},
"ttl_mode": {
"anyOf": [
{
"enum": [
"sliding",
"absolute"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Ttl Mode",
"default": null
},
"ttl_seconds": {
"anyOf": [
{
"type": "integer",
"maximum": 31536000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Ttl Seconds",
"default": null
},
"content_type": {
"enum": [
"text/plain",
"application/json"
],
"type": "string",
"title": "Content Type",
"default": "text/plain"
},
"if_none_match": {
"anyOf": [
{
"type": "string",
"const": "*"
},
{
"type": "null"
}
],
"title": "If None Match",
"default": null
}
}
}Renew TTL with write access, within the existing absolute deadline. Never revive expired keys.
| Argument | Type | Description |
|---|---|---|
| key* | string | |
| if_match | any | |
| ttl_mode | any | |
| ttl_seconds | any |
{
"type": "object",
"title": "touch_keyArguments",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
},
"if_match": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "If Match",
"default": null
},
"ttl_mode": {
"anyOf": [
{
"enum": [
"sliding",
"absolute"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Ttl Mode",
"default": null
},
"ttl_seconds": {
"anyOf": [
{
"type": "integer",
"maximum": 31536000,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Ttl Seconds",
"default": null
}
}
}Wait up to 30 seconds for a visible change. Timeout is normal; no replay or burn values. Maximum two concurrent waits/IP.
| Argument | Type | Description |
|---|---|---|
| key* | string | |
| last | any | |
| timeout | integer |
{
"type": "object",
"title": "wait_for_changeArguments",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"title": "Key",
"pattern": "^[A-Za-z0-9_-]{1,200}$"
},
"last": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Last",
"default": null
},
"timeout": {
"type": "integer",
"title": "Timeout",
"default": 30,
"maximum": 30,
"minimum": 1
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.