SesApp Access Sheets

Housing access sheets behind revocable guest links. x402 on Base.

我該用這個嗎

品質與安全性

A
說明品質
99%
結構描述完整度
77%
命名品質
93%
汙染風險
100%
權限相符程度
100%
協定合規性
100%

根據工具定義與協定合規性的自動化分析。

上下文成本

~2,160Token(工具定義)
~1.0 KB典型回應大小
中等的注意力影響(128k 上下文的 1.69%)

這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。

安裝

一鍵安裝

將以下內容加入你的 `claude_desktop_config.json` 檔案:

{
  "mcpServers": {
    "fiches": {
      "url": "https://sesapp.fr/mcp"
    }
  }
}

遠端端點

https://sesapp.fr/mcpstreamable-http

它能做什麼

工具清單

工具(15)

🟢 唯讀🟡 寫入🔴 刪除⚪ 未知
🟡subscribe(plan)

Subscribe or renew. plan=agent (15 USDC, 20 sheets), fleet (79 USDC, 200), platform (250 USDC, fair-use). Send PAYMENT-SIGNATURE (x402 v2). Returns a Bearer JWT.

輸入結構描述

{
  "type": "object",
  "properties": {
    "plan": {
      "type": "string",
      "enum": [
        "agent",
        "fleet",
        "platform"
      ],
      "description": "SKU to purchase. Default agent."
    }
  }
}
⚪status

Current agent plan, expiry, fichesCount, maxFiches, overageUsdc. Requires Authorization: Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {}
}
🟡geocode(query, country)

Resolve a postal address to formattedAddress + lat/lon for create_fiche (cover map and 150 m WiFi geofence). Optional country ISO2. Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "description": "Address search, min 3 characters"
    },
    "country": {
      "type": "string",
      "description": "Optional ISO 3166-1 alpha-2, e.g. fr"
    }
  },
  "required": [
    "query"
  ]
}
🟢list_fiches

List access sheets owned by the authenticated agent. Requires Authorization: Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {}
}
🟡create_fiche(name, formattedAddress, instructions, lat, lon, ...)

Create an access sheet. Write the guest flip-book in `instructions` (Markdown; guest language, usually French). Cover (map/name/address/accessCode) is auto. Pages: --- . Photos: ![alt](https://...). Intents: [Add WiFi](sesapp:wifi) or [Ajouter le WiFi](sesapp:wifi) + wifiName/wifiPassword; [Add contact](sesapp:contact) or [Ajouter le contact](sesapp:contact) + phoneNumber. Never put wifiPassword in Markdown (150 m GPS). Optional `locale` fr|en for guest chrome. Playbook: GET /llms.txt. Requires Bearer. Beyond quota, retry with PAYMENT-SIGNATURE (0.50 USDC on Agent, 0.25 on Fleet).

輸入結構描述

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string"
    },
    "formattedAddress": {
      "type": "string"
    },
    "instructions": {
      "type": "string",
      "description": "Markdown flip-book shown to the guest (this field).\nCover (map, name, formattedAddress, accessCode) is generated — do not repeat it here.\nSplit pages with a line containing only --- .\nSupported: # ## ### headings, paragraphs, **bold**, *italic*, - / 1. lists, [label](https://...), ![alt](https://...).\nPhotos: https URLs (GCS via the host app, or your own CDN). Agents send URLs, no file upload.\nNever put wifiPassword in Markdown; it is unlocked only within 150 m via GPS.\nIntent hrefs: sesapp:wifi (needs wifiName + wifiPassword) and sesapp:contact (needs phoneNumber). Guest-facing labels: [Ajouter le WiFi] / [Ajouter le contact].\nIf you omit those links but set the fields, SesApp appends WiFi/contact pages.\nExample:\n# Bienvenue\nParking au fond à gauche.\n\n![Façade](https://example.com/facade.jpg)\n\n---\n\n## Arrivée\nSonnette à gauche.\n\n[Itinéraire](https://maps.google.com/?q=48.8566,2.3522)\n\n---\n\n[Ajouter le WiFi](sesapp:wifi)\n\n---\n\n[Ajouter le contact](sesapp:contact)"
    },
    "lat": {
      "type": "number",
      "description": "Cover map + WiFi geofence (150 m)."
    },
    "lon": {
      "type": "number",
      "description": "Cover map + WiFi geofence (150 m)."
    },
    "wifiName": {
      "type": "string",
      "description": "SSID for sesapp:wifi. Hidden until 150 m if wifiPassword is set."
    },
    "wifiPassword": {
      "type": "string",
      "description": "Do not put in instructions. Unlocked within 150 m."
    },
    "accessCode": {
      "type": "string",
      "description": "Shown on the generated cover."
    },
    "phoneNumber": {
      "type": "string",
      "description": "Required for sesapp:contact. E.164 preferred."
    },
    "locale": {
      "type": "string",
      "enum": [
        "fr",
        "en"
      ],
      "description": "Guest chrome language. Markdown stays as written. Omit to follow Accept-Language / ?lang=."
    }
  },
  "required": [
    "name",
    "formattedAddress"
  ]
}
🟢get_fiche(id)

Get one owned access sheet by id (same fields as list_fiches). Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟡update_fiche(id, name, formattedAddress, instructions, lat, ...)

Update an owned access sheet. Same fields as create_fiche. Typical: update instructions with photos/links. Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "name": {
      "type": "string"
    },
    "formattedAddress": {
      "type": "string"
    },
    "instructions": {
      "type": "string",
      "description": "Markdown flip-book shown to the guest (this field).\nCover (map, name, formattedAddress, accessCode) is generated — do not repeat it here.\nSplit pages with a line containing only --- .\nSupported: # ## ### headings, paragraphs, **bold**, *italic*, - / 1. lists, [label](https://...), ![alt](https://...).\nPhotos: https URLs (GCS via the host app, or your own CDN). Agents send URLs, no file upload.\nNever put wifiPassword in Markdown; it is unlocked only within 150 m via GPS.\nIntent hrefs: sesapp:wifi (needs wifiName + wifiPassword) and sesapp:contact (needs phoneNumber). Guest-facing labels: [Ajouter le WiFi] / [Ajouter le contact].\nIf you omit those links but set the fields, SesApp appends WiFi/contact pages.\nExample:\n# Bienvenue\nParking au fond à gauche.\n\n![Façade](https://example.com/facade.jpg)\n\n---\n\n## Arrivée\nSonnette à gauche.\n\n[Itinéraire](https://maps.google.com/?q=48.8566,2.3522)\n\n---\n\n[Ajouter le WiFi](sesapp:wifi)\n\n---\n\n[Ajouter le contact](sesapp:contact)"
    },
    "lat": {
      "type": "number",
      "description": "Cover map + WiFi geofence (150 m)."
    },
    "lon": {
      "type": "number",
      "description": "Cover map + WiFi geofence (150 m)."
    },
    "wifiName": {
      "type": "string",
      "description": "SSID for sesapp:wifi. Hidden until 150 m if wifiPassword is set."
    },
    "wifiPassword": {
      "type": "string",
      "description": "Do not put in instructions. Unlocked within 150 m."
    },
    "accessCode": {
      "type": "string",
      "description": "Shown on the generated cover."
    },
    "phoneNumber": {
      "type": "string",
      "description": "Required for sesapp:contact. E.164 preferred."
    },
    "locale": {
      "type": "string",
      "enum": [
        "fr",
        "en"
      ],
      "description": "Guest chrome language. Markdown stays as written. Omit to follow Accept-Language / ?lang=."
    }
  },
  "required": [
    "id"
  ]
}
🔴delete_fiche(id)

Delete an owned access sheet and its share links. Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
🟡share_fiche(id, expiresAt)

Create a revocable guest link. Optional expiresAt (ISO). WiFi password is never in Markdown: guests unlock it within 150 m of lat/lon. Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "expiresAt": {
      "type": "string",
      "description": "ISO datetime, optional. Omit for no expiry."
    }
  },
  "required": [
    "id"
  ]
}
🟢list_shares(id)

List guest links for a fiche (token, url, expiresAt, viewCount, createdAt). Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}
⚪revoke_share(token, delayDays)

Revoke a guest share token. Optional delayDays (1–365) keeps the link until then (soft revoke). Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "token": {
      "type": "string"
    },
    "delayDays": {
      "type": "number",
      "description": "If set, the link expires after N days instead of being deleted now."
    }
  },
  "required": [
    "token"
  ]
}
⚪register_webhook(url, events)

Fleet/Platform only. Register an HTTPS endpoint. Events: fiche.viewed, share.created, share.revoked, wifi.unlocked, quota.warning. HMAC SHA-256 in X-SesApp-Signature (t=unix,v1=hex of timestamp.body). Secret returned once. Max 5 endpoints. Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "url": {
      "type": "string",
      "description": "HTTPS URL (http://127.0.0.1 allowed in DEV)"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "Subset of events. Default: all."
    }
  },
  "required": [
    "url"
  ]
}
🟢list_webhooks

List webhook endpoints (secret is never returned). Fleet/Platform. Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {}
}
🟡update_webhook(id, url, events, active)

Update url, events, or active. Fleet/Platform. Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    },
    "url": {
      "type": "string"
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "active": {
      "type": "boolean"
    }
  },
  "required": [
    "id"
  ]
}
🔴delete_webhook(id)

Delete a webhook endpoint. Fleet/Platform. Requires Bearer.

輸入結構描述

{
  "type": "object",
  "properties": {
    "id": {
      "type": "string"
    }
  },
  "required": [
    "id"
  ]
}

社群

為此伺服器評分

證據

近期觀測

已驗證未記錄版本15 個工具
已驗證未記錄版本15 個工具
已驗證未記錄版本15 個工具