SesApp Access Sheets
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Housing access sheets behind revocable guest links. x402 on Base.
| Author | fr.sesapp |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2693 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"SesApp Access Sheets": {
"url": "https://sesapp.fr/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (15)
subscribeSubscribe 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.
Parameters:
plan— string — SKU to purchase. Default agent.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
statusCurrent agent plan, expiry, fichesCount, maxFiches, overageUsdc. Requires Authorization: Bearer.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
geocodeResolve a postal address to formattedAddress + lat/lon for create_fiche (cover map and 150 m WiFi geofence). Optional country ISO2. Requires Bearer.
Parameters:
query(required) — string — Address search, min 3 characterscountry— string — Optional ISO 3166-1 alpha-2, e.g. fr
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_fichesList access sheets owned by the authenticated agent. Requires Authorization: Bearer.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
create_ficheCreate an access sheet. Write the guest flip-book in `instructions` (Markdown; guest language, usually French). Cover (map/name/address/accessCode) is auto. Pages: --- . Photos: . 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).
Parameters:
name(required) — stringformattedAddress(required) — stringlat— number — Cover map + WiFi geofence (150 m).lon— number — Cover map + WiFi geofence (150 m).locale— string — Guest chrome language. Markdown stays as written. Omit to follow Accept-Language / ?lang=.wifiName— string — SSID for sesapp:wifi. Hidden until 150 m if wifiPassword is set.accessCode— string — Shown on the generated cover.phoneNumber— string — Required for sesapp:contact. E.164 preferred.instructions— string — Markdown flip-book shown to the guest (this field). Cover (map, name, formattedAddress, accessCode) is generated — do not repeat it here. Split pages with a line containing only --- . Supported: # ## ### headings, paragraphs, **bold**, *italic*, - / 1. lists, [label](https://...), . Photos: https URLs (GCS via the host app, or your own CDN). Agents send URLs, no file upload. Never put wifiPassword in Markdown; it is unlocked only within 150 m via GPS. Intent hrefs: sesapp:wifi (needs wifiName + wifiPassword) and sesapp:contact (needs phoneNumber). Guest-facing labels: [Ajouter le WiFi] / [Ajouter le contact]. If you omit those links but set the fields, SesApp appends WiFi/contact pages. Example: # Bienvenue Parking au fond à gauche.  --- ## Arrivée Sonnette à gauche. [Itinéraire](https://maps.google.com/?q=48.8566,2.3522) --- [Ajouter le WiFi](sesapp:wifi) --- [Ajouter le contact](sesapp:contact)wifiPassword— string — Do not put in instructions. Unlocked within 150 m.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
get_ficheGet one owned access sheet by id (same fields as list_fiches). Requires Bearer.
Parameters:
id(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
update_ficheUpdate an owned access sheet. Same fields as create_fiche. Typical: update instructions with photos/links. Requires Bearer.
Parameters:
id(required) — stringlat— number — Cover map + WiFi geofence (150 m).lon— number — Cover map + WiFi geofence (150 m).name— stringlocale— string — Guest chrome language. Markdown stays as written. Omit to follow Accept-Language / ?lang=.wifiName— string — SSID for sesapp:wifi. Hidden until 150 m if wifiPassword is set.accessCode— string — Shown on the generated cover.phoneNumber— string — Required for sesapp:contact. E.164 preferred.instructions— string — Markdown flip-book shown to the guest (this field). Cover (map, name, formattedAddress, accessCode) is generated — do not repeat it here. Split pages with a line containing only --- . Supported: # ## ### headings, paragraphs, **bold**, *italic*, - / 1. lists, [label](https://...), . Photos: https URLs (GCS via the host app, or your own CDN). Agents send URLs, no file upload. Never put wifiPassword in Markdown; it is unlocked only within 150 m via GPS. Intent hrefs: sesapp:wifi (needs wifiName + wifiPassword) and sesapp:contact (needs phoneNumber). Guest-facing labels: [Ajouter le WiFi] / [Ajouter le contact]. If you omit those links but set the fields, SesApp appends WiFi/contact pages. Example: # Bienvenue Parking au fond à gauche.  --- ## Arrivée Sonnette à gauche. [Itinéraire](https://maps.google.com/?q=48.8566,2.3522) --- [Ajouter le WiFi](sesapp:wifi) --- [Ajouter le contact](sesapp:contact)wifiPassword— string — Do not put in instructions. Unlocked within 150 m.formattedAddress— string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
delete_ficheDelete an owned access sheet and its share links. Requires Bearer.
Parameters:
id(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
share_ficheCreate a revocable guest link. Optional expiresAt (ISO). WiFi password is never in Markdown: guests unlock it within 150 m of lat/lon. Requires Bearer.
Parameters:
id(required) — stringexpiresAt— string — ISO datetime, optional. Omit for no expiry.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_sharesList guest links for a fiche (token, url, expiresAt, viewCount, createdAt). Requires Bearer.
Parameters:
id(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
revoke_shareRevoke a guest share token. Optional delayDays (1–365) keeps the link until then (soft revoke). Requires Bearer.
Parameters:
token(required) — stringdelayDays— number — If set, the link expires after N days instead of being deleted now.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
register_webhookFleet/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.
Parameters:
url(required) — string — HTTPS URL (http://127.0.0.1 allowed in DEV)events— array — Subset of events. Default: all.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
list_webhooksList webhook endpoints (secret is never returned). Fleet/Platform. Requires Bearer.
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
update_webhookUpdate url, events, or active. Fleet/Platform. Requires Bearer.
Parameters:
id(required) — stringurl— stringactive— booleanevents— array
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
delete_webhookDelete a webhook endpoint. Fleet/Platform. Requires Bearer.
Parameters:
id(required) — string
Hints: read-only not declared · destructive not declared · idempotent not declared · open-world not declared
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.