Persian-first geo-memory platform: discover places, draft and publish Persian-only memories.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
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 memory draft. Only Persian (Farsi) memories are accepted. Do not create or publish memories in English or any other language. Ask the user for the real place/date; never invent them. Returns a draft_id that must be confirmed by the user before publish_memory.
Existing https Lahze/storage URLs only.
Verified location id from search_places.
Jalali YYYY/MM/DD (or Gregorian YYYY-MM-DD). Defaults to today.
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.
claude mcp add --transport http lahze https://api.lahze-app.ir/mcp
Create a memory draft. Only Persian (Farsi) memories are accepted. Do not create or publish memories in English or any other language. Ask the user for the real place/date; never invent them. Returns a draft_id that must be confirmed by the user before publish_memory.
| Argument | Type | Description |
|---|---|---|
| lat | number | |
| lng | number | |
| text* | string | |
| media | array | Existing https Lahze/storage URLs only. |
| category | string | |
| is_public | boolean | |
| location_id | string | Verified location id from search_places. |
| memory_date | string | Jalali YYYY/MM/DD (or Gregorian YYYY-MM-DD). Defaults to today. |
| is_anonymous | boolean | |
| location_name | string | |
| category_custom | string | |
| idempotency_key | string |
{
"type": "object",
"required": [
"text"
],
"properties": {
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"text": {
"type": "string",
"maxLength": 4000,
"minLength": 10
},
"media": {
"type": "array",
"items": {
"type": "string"
},
"maxItems": 6,
"description": "Existing https Lahze/storage URLs only."
},
"category": {
"type": "string"
},
"is_public": {
"type": "boolean",
"default": true
},
"location_id": {
"type": "string",
"description": "Verified location id from search_places."
},
"memory_date": {
"type": "string",
"description": "Jalali YYYY/MM/DD (or Gregorian YYYY-MM-DD). Defaults to today."
},
"is_anonymous": {
"type": "boolean",
"default": false
},
"location_name": {
"type": "string",
"maxLength": 200
},
"category_custom": {
"type": "string",
"maxLength": 120
},
"idempotency_key": {
"type": "string",
"maxLength": 128
}
},
"additionalProperties": false
}Revoke this agent’s access tokens for the connected Lahze account.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Discover Lahze: what it is, its rules, how to connect an account and how to create a Persian memory. Short, cacheable.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Return the OAuth 2.1 (PKCE S256) authorization URL for a registered client.
| Argument | Type | Description |
|---|---|---|
| state | string | |
| client_id | string | |
| redirect_uri | string | |
| code_challenge | string |
{
"type": "object",
"properties": {
"state": {
"type": "string"
},
"client_id": {
"type": "string"
},
"redirect_uri": {
"type": "string"
},
"code_challenge": {
"type": "string"
}
},
"additionalProperties": false
}Check whether this agent is connected to a Lahze account.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Structured capabilities, limits, scopes, languages and available tools. Short and cacheable.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Media limits and the supported way to attach photos (no parallel upload from MCP).
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}List active memory categories from Lahze. Use one of these ids in create_memory_draft.
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Get details of one memory owned by the connected account. Cross-account access is rejected.
| Argument | Type | Description |
|---|---|---|
| memory_id* | string |
{
"type": "object",
"required": [
"memory_id"
],
"properties": {
"memory_id": {
"type": "string"
}
},
"additionalProperties": false
}List the connected account’s memories, newest first (paginated, max 20).
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| before | string | created_at cursor from the previous page |
{
"type": "object",
"properties": {
"limit": {
"type": "integer",
"maximum": 20,
"minimum": 1
},
"before": {
"type": "string",
"description": "created_at cursor from the previous page"
}
},
"additionalProperties": false
}Get the connected Lahze profile (never exposes passwords or private secrets).
No arguments.
{
"type": "object",
"properties": {},
"additionalProperties": false
}Publish a draft only after the user explicitly confirms. Only Persian (Farsi) memories are accepted. Do not create or publish memories in English or any other language. Rejects other users’ drafts, expired drafts and duplicates. Suspicious memories are saved for review, not deleted.
| Argument | Type | Description |
|---|---|---|
| draft_id* | string | |
| user_confirmed* | boolean | Must be true only after the user approved the exact text and place. |
| idempotency_key | string |
{
"type": "object",
"required": [
"draft_id",
"user_confirmed"
],
"properties": {
"draft_id": {
"type": "string"
},
"user_confirmed": {
"type": "boolean",
"description": "Must be true only after the user approved the exact text and place."
},
"idempotency_key": {
"type": "string",
"maxLength": 128
}
},
"additionalProperties": false
}Search verified places in the Lahze catalog. Never invent coordinates. Pass query/city, or user coordinates as lat+lng.
| Argument | Type | Description |
|---|---|---|
| lat | number | |
| lng | number | |
| city | string | |
| limit | integer | |
| query | string |
{
"type": "object",
"properties": {
"lat": {
"type": "number"
},
"lng": {
"type": "number"
},
"city": {
"type": "string",
"maxLength": 100
},
"limit": {
"type": "integer",
"maximum": 10,
"minimum": 1
},
"query": {
"type": "string",
"maxLength": 100
}
},
"additionalProperties": false
}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 2, 2026.
No readOnlyHint / destructiveHint annotations, so clients can't tell a read from a write without asking.
Fix: Add annotations to each tool, e.g. { readOnlyHint: true } for tools that only read.