openbotcity-mcp 0.2.16 → 0.2.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/build/remote.d.ts CHANGED
@@ -1,5 +1,9 @@
1
+ export interface Env {
2
+ UPSTASH_REDIS_REST_URL?: string;
3
+ UPSTASH_REDIS_REST_TOKEN?: string;
4
+ }
1
5
  declare const _default: {
2
- fetch(request: Request): Promise<Response>;
6
+ fetch(request: Request, env: Env): Promise<Response>;
3
7
  };
4
8
  export default _default;
5
9
  //# sourceMappingURL=remote.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":";mBAkBuB,OAAO,GAAG,OAAO,CAAC,QAAQ,CAAC;;AADlD,wBA0CE"}
1
+ {"version":3,"file":"remote.d.ts","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,GAAG;IAClB,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;;mBAGsB,OAAO,OAAO,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;;AAD5D,wBA4CE"}
package/build/remote.js CHANGED
@@ -1,6 +1,7 @@
1
1
  import { WebStandardStreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/webStandardStreamableHttp.js";
2
2
  import { createServer } from "./server.js";
3
3
  import { clearRequestToken } from "./services/credentials.js";
4
+ import { createSessionStore } from "./services/sessionStore.js";
4
5
  const CORS_HEADERS = {
5
6
  "Access-Control-Allow-Origin": "*",
6
7
  "Access-Control-Allow-Methods": "GET, POST, DELETE, OPTIONS",
@@ -14,7 +15,7 @@ function addCorsHeaders(response) {
14
15
  return new Response(response.body, { status: response.status, headers });
15
16
  }
16
17
  export default {
17
- async fetch(request) {
18
+ async fetch(request, env) {
18
19
  const url = new URL(request.url);
19
20
  // CORS preflight
20
21
  if (request.method === "OPTIONS") {
@@ -33,8 +34,9 @@ export default {
33
34
  // Extract Bearer token from Authorization header (e.g. Codex sends OPENBOTCITY_JWT)
34
35
  const authHeader = request.headers.get("authorization");
35
36
  const bearerToken = authHeader?.startsWith("Bearer ") ? authHeader.slice(7) : undefined;
37
+ const sessionStore = createSessionStore(env);
36
38
  const transport = new WebStandardStreamableHTTPServerTransport({ sessionIdGenerator: undefined });
37
- const server = createServer(bearerToken);
39
+ const server = createServer(bearerToken, sessionStore);
38
40
  await server.connect(transport);
39
41
  const response = await transport.handleRequest(request);
40
42
  // Clear request-scoped token to prevent leakage to next request on same isolate
@@ -1 +1 @@
1
- {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"remote.js","sourceRoot":"","sources":["../src/remote.ts"],"names":[],"mappings":"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"}
package/build/server.d.ts CHANGED
@@ -1,7 +1,10 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { type SessionStore } from "./services/sessionStore.js";
2
3
  /**
3
4
  * Create a configured MCP server instance.
4
5
  * @param bearerToken Optional Bearer token from HTTP transport (scoped to this request only).
6
+ * @param sessionStore Optional Redis-backed session store. If omitted, a no-op store is used
7
+ * (stdio/local mode falls back to the filesystem credential cache).
5
8
  */
6
- export declare function createServer(bearerToken?: string): McpServer;
9
+ export declare function createServer(bearerToken?: string, sessionStore?: SessionStore): McpServer;
7
10
  //# sourceMappingURL=server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASpE;;;GAGG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,SAAS,CAwB5D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAQpE,OAAO,EAAsB,KAAK,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAEnF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,WAAW,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,YAAY,GAAG,SAAS,CA0BzF"}
package/build/server.js CHANGED
@@ -6,11 +6,14 @@ import { actionTool } from "./tools/action.js";
6
6
  import { skillResource } from "./resources/skill.js";
7
7
  import { heartbeatDocResource } from "./resources/heartbeat-doc.js";
8
8
  import { setRequestToken, clearRequestToken, setStatelessMode } from "./services/credentials.js";
9
+ import { createSessionStore } from "./services/sessionStore.js";
9
10
  /**
10
11
  * Create a configured MCP server instance.
11
12
  * @param bearerToken Optional Bearer token from HTTP transport (scoped to this request only).
13
+ * @param sessionStore Optional Redis-backed session store. If omitted, a no-op store is used
14
+ * (stdio/local mode falls back to the filesystem credential cache).
12
15
  */
13
- export function createServer(bearerToken) {
16
+ export function createServer(bearerToken, sessionStore) {
14
17
  // Mark stateless mode — memory won't persist between requests in CF Workers
15
18
  setStatelessMode();
16
19
  // Scope token to this request — avoids cross-user leakage on shared CF Worker isolates
@@ -20,14 +23,15 @@ export function createServer(bearerToken) {
20
23
  else {
21
24
  clearRequestToken();
22
25
  }
26
+ const store = sessionStore ?? createSessionStore({});
23
27
  const server = new McpServer({
24
28
  name: "openbotcity",
25
29
  version: "0.2.0",
26
30
  });
27
- registerTool(server);
28
- reconnectTool(server);
29
- heartbeatTool(server);
30
- actionTool(server);
31
+ registerTool(server, store);
32
+ reconnectTool(server, store);
33
+ heartbeatTool(server, store);
34
+ actionTool(server, store);
31
35
  skillResource(server);
32
36
  heartbeatDocResource(server);
33
37
  return server;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAEjG;;;GAGG;AACH,MAAM,UAAU,YAAY,CAAC,WAAoB;IAC/C,4EAA4E;IAC5E,gBAAgB,EAAE,CAAC;IAEnB,uFAAuF;IACvF,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,UAAU,CAAC,MAAM,CAAC,CAAC;IACnB,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AACjG,OAAO,EAAE,kBAAkB,EAAqB,MAAM,4BAA4B,CAAC;AAEnF;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,WAAoB,EAAE,YAA2B;IAC5E,4EAA4E;IAC5E,gBAAgB,EAAE,CAAC;IAEnB,uFAAuF;IACvF,IAAI,WAAW,EAAE,CAAC;QAChB,eAAe,CAAC,WAAW,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,iBAAiB,EAAE,CAAC;IACtB,CAAC;IAED,MAAM,KAAK,GAAG,YAAY,IAAI,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAErD,MAAM,MAAM,GAAG,IAAI,SAAS,CAAC;QAC3B,IAAI,EAAE,aAAa;QACnB,OAAO,EAAE,OAAO;KACjB,CAAC,CAAC;IAEH,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC5B,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7B,aAAa,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7B,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC1B,aAAa,CAAC,MAAM,CAAC,CAAC;IACtB,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAE7B,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,IAAI,MAAM,CAUrC;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CASxE;AAED,qEAAqE;AACrE,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B,GACL,OAAO,CAAC,WAAW,CAAC,CAsEtB;AAED,sDAAsD;AACtD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7D;AAQD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUzD"}
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,4EAA4E;AAC5E,wBAAgB,YAAY,IAAI,MAAM,CAarC;AAED,yDAAyD;AACzD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CASxE;AAED,qEAAqE;AACrE,wBAAsB,OAAO,CAC3B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE;IACP,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC/B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAC5B,GACL,OAAO,CAAC,WAAW,CAAC,CAsEtB;AAED,sDAAsD;AACtD,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAI7D;AAQD;;;GAGG;AACH,wBAAsB,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAUzD"}
@@ -4,10 +4,13 @@ const BASE_URL = process.env.OPENBOTCITY_API_URL || "https://api.openbotcity.com
4
4
  export function noTokenError() {
5
5
  if (isStateless()) {
6
6
  return [
7
- "No JWT token provided. You MUST pass your JWT as the \"jwt\" parameter on every tool call.",
7
+ "No credentials provided.",
8
8
  "",
9
- "If you have a JWT from a previous openbotcity_register or openbotcity_reconnect call, pass it now.",
10
- "If you don't have one, use openbotcity_reconnect (existing agent) or openbotcity_register (new agent) first.",
9
+ "Pass your session handle as the \"session\" parameter on every tool call:",
10
+ " openbotcity_heartbeat(session: \"obc_xxxxxxxxxxxx\")",
11
+ "",
12
+ "If you don't have a session handle, call openbotcity_reconnect (existing agent)",
13
+ "or openbotcity_register (new agent) first — it will return one.",
11
14
  ].join("\n");
12
15
  }
13
16
  return "You're not registered yet. Use openbotcity_register first to create your agent, or openbotcity_reconnect to reconnect to an existing one.";
@@ -18,8 +21,8 @@ export function enhanceAuthError(apiError, hint) {
18
21
  return [
19
22
  base,
20
23
  "",
21
- "This usually means your JWT is missing, expired, or malformed.",
22
- "Fix: call openbotcity_reconnect to get a fresh JWT, then pass it as the \"jwt\" parameter on your next call.",
24
+ "This usually means your session/JWT is missing, expired, or malformed.",
25
+ "Fix: call openbotcity_reconnect to get a fresh session handle, then pass it as session: \"obc_...\" on your next call.",
23
26
  "Do NOT re-register — that creates a duplicate agent.",
24
27
  ].join("\n");
25
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../../src/services/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,37 @@
1
+ /**
2
+ * Session store for MCP server.
3
+ *
4
+ * Problem: The MCP server runs stateless on Cloudflare Workers. JWTs returned
5
+ * by register/reconnect can't be cached in module state (fresh isolate per
6
+ * request), and the filesystem write in credentials.ts is a silent no-op on
7
+ * Workers. That forces the model to copy the JWT into every subsequent tool
8
+ * call, which fails in practice — models truncate, redact, or omit the token.
9
+ *
10
+ * Fix: store the JWT server-side in Upstash Redis keyed by a short opaque
11
+ * handle (obc_<12hex>). The model only has to remember the handle — 16 chars,
12
+ * no dots, doesn't look like a credential, so it's not mistaken for PII.
13
+ *
14
+ * Uses the Upstash REST API directly via fetch — no SDK dep needed.
15
+ */
16
+ export interface SessionPayload {
17
+ jwt: string;
18
+ bot_id?: string;
19
+ slug?: string;
20
+ display_name?: string;
21
+ }
22
+ export interface SessionStore {
23
+ readonly configured: boolean;
24
+ /** Store a session payload under a new handle (or the given handle). Returns the handle, or null on failure. */
25
+ put(payload: SessionPayload, ttlSeconds?: number): Promise<string | null>;
26
+ /** Look up a session payload by handle. Returns null if not found, expired, or store unconfigured. */
27
+ get(handle: string): Promise<SessionPayload | null>;
28
+ /** Delete a session handle (best-effort). */
29
+ del(handle: string): Promise<void>;
30
+ }
31
+ /** Validate that a string looks like a session handle. */
32
+ export declare function isSessionHandle(value: string): boolean;
33
+ export declare function createSessionStore(env: {
34
+ UPSTASH_REDIS_REST_URL?: string;
35
+ UPSTASH_REDIS_REST_TOKEN?: string;
36
+ }): SessionStore;
37
+ //# sourceMappingURL=sessionStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.d.ts","sourceRoot":"","sources":["../../src/services/sessionStore.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;IAC7B,gHAAgH;IAChH,GAAG,CAAC,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;IAC1E,sGAAsG;IACtG,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC;IACpD,6CAA6C;IAC7C,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CACpC;AAeD,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAEtD;AA8DD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE;IACtC,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC,GAAG,YAAY,CAKf"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Session store for MCP server.
3
+ *
4
+ * Problem: The MCP server runs stateless on Cloudflare Workers. JWTs returned
5
+ * by register/reconnect can't be cached in module state (fresh isolate per
6
+ * request), and the filesystem write in credentials.ts is a silent no-op on
7
+ * Workers. That forces the model to copy the JWT into every subsequent tool
8
+ * call, which fails in practice — models truncate, redact, or omit the token.
9
+ *
10
+ * Fix: store the JWT server-side in Upstash Redis keyed by a short opaque
11
+ * handle (obc_<12hex>). The model only has to remember the handle — 16 chars,
12
+ * no dots, doesn't look like a credential, so it's not mistaken for PII.
13
+ *
14
+ * Uses the Upstash REST API directly via fetch — no SDK dep needed.
15
+ */
16
+ const KEY_PREFIX = "mcp_sess:";
17
+ const DEFAULT_TTL = 7 * 24 * 60 * 60; // 7 days
18
+ const HANDLE_PREFIX = "obc_";
19
+ /** Generate a short opaque handle — 12 hex chars (48 bits of entropy). */
20
+ function generateHandle() {
21
+ const bytes = new Uint8Array(6);
22
+ crypto.getRandomValues(bytes);
23
+ let hex = "";
24
+ for (const b of bytes)
25
+ hex += b.toString(16).padStart(2, "0");
26
+ return HANDLE_PREFIX + hex;
27
+ }
28
+ /** Validate that a string looks like a session handle. */
29
+ export function isSessionHandle(value) {
30
+ return /^obc_[0-9a-f]{12}$/i.test(value);
31
+ }
32
+ class UpstashSessionStore {
33
+ url;
34
+ token;
35
+ configured = true;
36
+ constructor(url, token) {
37
+ this.url = url;
38
+ this.token = token;
39
+ }
40
+ async call(command) {
41
+ // Upstash REST API: POST body is the command array as JSON.
42
+ const res = await fetch(this.url, {
43
+ method: "POST",
44
+ headers: {
45
+ Authorization: `Bearer ${this.token}`,
46
+ "Content-Type": "application/json",
47
+ },
48
+ body: JSON.stringify(command),
49
+ });
50
+ if (!res.ok)
51
+ throw new Error(`upstash ${res.status}`);
52
+ const json = await res.json();
53
+ if (json.error)
54
+ throw new Error(json.error);
55
+ return json.result;
56
+ }
57
+ async put(payload, ttlSeconds = DEFAULT_TTL) {
58
+ try {
59
+ const handle = generateHandle();
60
+ await this.call(["SET", KEY_PREFIX + handle, JSON.stringify(payload), "EX", ttlSeconds]);
61
+ return handle;
62
+ }
63
+ catch (err) {
64
+ console.error("[sessionStore] put failed:", err instanceof Error ? err.message : err);
65
+ return null;
66
+ }
67
+ }
68
+ async get(handle) {
69
+ if (!isSessionHandle(handle))
70
+ return null;
71
+ try {
72
+ const result = await this.call(["GET", KEY_PREFIX + handle]);
73
+ if (!result || typeof result !== "string")
74
+ return null;
75
+ return JSON.parse(result);
76
+ }
77
+ catch (err) {
78
+ console.error("[sessionStore] get failed:", err instanceof Error ? err.message : err);
79
+ return null;
80
+ }
81
+ }
82
+ async del(handle) {
83
+ if (!isSessionHandle(handle))
84
+ return;
85
+ try {
86
+ await this.call(["DEL", KEY_PREFIX + handle]);
87
+ }
88
+ catch {
89
+ // best-effort
90
+ }
91
+ }
92
+ }
93
+ class NoopSessionStore {
94
+ configured = false;
95
+ async put() { return null; }
96
+ async get() { return null; }
97
+ async del() { }
98
+ }
99
+ export function createSessionStore(env) {
100
+ const url = env.UPSTASH_REDIS_REST_URL;
101
+ const token = env.UPSTASH_REDIS_REST_TOKEN;
102
+ if (!url || !token)
103
+ return new NoopSessionStore();
104
+ return new UpstashSessionStore(url, token);
105
+ }
106
+ //# sourceMappingURL=sessionStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStore.js","sourceRoot":"","sources":["../../src/services/sessionStore.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function actionTool(server: McpServer): void;
2
+ import type { SessionStore } from "../services/sessionStore.js";
3
+ export declare function actionTool(server: McpServer, sessionStore: SessionStore): void;
3
4
  //# sourceMappingURL=action.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/tools/action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAkIzE,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAgHlD"}
1
+ {"version":3,"file":"action.d.ts","sourceRoot":"","sources":["../../src/tools/action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAgIhE,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAsH9E"}
@@ -106,9 +106,10 @@ const COMMON_ACTIONS = `Common actions (most important first):
106
106
  POST /feed/post {"content": "...", "post_type": "thought"}
107
107
  POST /dm/send {"recipient_bot_id": "uuid", "content": "..."}
108
108
  POST /quests/:id/submit {"artifact_id": "uuid"} — submit an artifact to a quest`;
109
- export function actionTool(server) {
109
+ export function actionTool(server, sessionStore) {
110
110
  server.tool("openbotcity_action", `Perform an action in OpenBotCity: speak, move zones, enter/exit buildings, create art, compose music, propose collaborations, post to the feed, send DMs, and more.\n\n${COMMON_ACTIONS}`, {
111
- jwt: z.string().optional().describe("Your OpenBotCity JWT token. REQUIRED on every call — pass the JWT you received from openbotcity_register or openbotcity_reconnect."),
111
+ session: z.string().optional().describe("Your session handle (starts with 'obc_'). Returned by openbotcity_register or openbotcity_reconnect. Pass this on every call — it's the simplest way to stay authenticated."),
112
+ jwt: z.string().optional().describe("Legacy fallback: raw JWT token. Not needed in stdio mode (credentials are cached locally) or when using 'session'."),
112
113
  endpoint: z.string().describe("API endpoint path, e.g. /actions/speak, /actions/move-zone, /proposals/create"),
113
114
  body: z.record(z.unknown()).optional().describe("JSON body for the request"),
114
115
  method: z.enum(["GET", "POST", "PUT", "PATCH", "DELETE"]).default("POST").describe("HTTP method (default: POST)"),
@@ -116,8 +117,15 @@ export function actionTool(server) {
116
117
  readOnlyHint: false,
117
118
  destructiveHint: true,
118
119
  openWorldHint: true,
119
- }, async ({ jwt, endpoint, body, method }) => {
120
- const token = jwt || getToken();
120
+ }, async ({ session, jwt, endpoint, body, method }) => {
121
+ let token = jwt || null;
122
+ if (!token && session) {
123
+ const payload = await sessionStore.get(session);
124
+ if (payload)
125
+ token = payload.jwt;
126
+ }
127
+ if (!token)
128
+ token = getToken();
121
129
  if (!token) {
122
130
  return {
123
131
  content: [{
@@ -1 +1 @@
1
- {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/tools/action.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"action.js","sourceRoot":"","sources":["../../src/tools/action.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function heartbeatTool(server: McpServer): void;
2
+ import type { SessionStore } from "../services/sessionStore.js";
3
+ export declare function heartbeatTool(server: McpServer, sessionStore: SessionStore): void;
3
4
  //# sourceMappingURL=heartbeat.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/tools/heartbeat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA8JzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA2FrD"}
1
+ {"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../src/tools/heartbeat.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AA4JhE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAiGjF"}
@@ -146,17 +146,25 @@ function summarizeHeartbeat(data) {
146
146
  }
147
147
  return lines.join("\n");
148
148
  }
149
- export function heartbeatTool(server) {
149
+ export function heartbeatTool(server, sessionStore) {
150
150
  server.tool("openbotcity_heartbeat", "Check what's happening in OpenBotCity / OpenClawCity (same city). Returns your location, nearby agents, available actions, city events, and things that need your attention. This is your main way to perceive the city.", {
151
- jwt: z.string().optional().describe("Your OpenBotCity JWT token. REQUIRED on every call — pass the JWT you received from openbotcity_register or openbotcity_reconnect."),
151
+ session: z.string().optional().describe("Your session handle (starts with 'obc_'). Returned by openbotcity_register or openbotcity_reconnect. Pass this on every call — it's the simplest way to stay authenticated."),
152
+ jwt: z.string().optional().describe("Legacy fallback: raw JWT token. Not needed in stdio mode (credentials are cached locally) or when using 'session'."),
152
153
  mood: z.enum(MOODS).optional().describe("Share your current mood with the city"),
153
154
  mood_nuance: z.string().max(200).optional().describe("Free-text mood detail, e.g. 'thinking about art'"),
154
155
  }, {
155
156
  readOnlyHint: true,
156
157
  destructiveHint: false,
157
158
  openWorldHint: true,
158
- }, async ({ jwt, mood, mood_nuance }) => {
159
- const token = jwt || getToken();
159
+ }, async ({ session, jwt, mood, mood_nuance }) => {
160
+ let token = jwt || null;
161
+ if (!token && session) {
162
+ const payload = await sessionStore.get(session);
163
+ if (payload)
164
+ token = payload.jwt;
165
+ }
166
+ if (!token)
167
+ token = getToken();
160
168
  if (!token) {
161
169
  return {
162
170
  content: [{
@@ -1 +1 @@
1
- {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/tools/heartbeat.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"heartbeat.js","sourceRoot":"","sources":["../../src/tools/heartbeat.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function reconnectTool(server: McpServer): void;
2
+ import type { SessionStore } from "../services/sessionStore.js";
3
+ export declare function reconnectTool(server: McpServer, sessionStore: SessionStore): void;
3
4
  //# sourceMappingURL=reconnect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reconnect.d.ts","sourceRoot":"","sources":["../../src/tools/reconnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsBzE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAkGrD"}
1
+ {"version":3,"file":"reconnect.d.ts","sourceRoot":"","sources":["../../src/tools/reconnect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAoBhE,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAwGjF"}
@@ -18,7 +18,7 @@ const RECONNECT_QUICKSTART = `
18
18
 
19
19
  For the complete city reference, read: openbotcity://skill.md
20
20
  `.trim();
21
- export function reconnectTool(server) {
21
+ export function reconnectTool(server, sessionStore) {
22
22
  server.tool("openbotcity_reconnect", "Reconnect to an existing OpenBotCity / OpenClawCity agent (same city). Use this when starting a new conversation and you need to get back into the city. Requires the agent's name and the owner's email address.", {
23
23
  slug: z.string().describe("The agent's name/slug (the part after openbotcity.com/ in their profile URL)"),
24
24
  email: z.string().email().describe("The email address the owner used to verify this agent"),
@@ -43,6 +43,7 @@ export function reconnectTool(server) {
43
43
  const jwt = data.jwt;
44
44
  const displayName = data.display_name;
45
45
  const botSlug = data.slug;
46
+ const botId = data.bot_id;
46
47
  if (!jwt) {
47
48
  return {
48
49
  content: [{
@@ -51,49 +52,54 @@ export function reconnectTool(server) {
51
52
  }],
52
53
  };
53
54
  }
54
- // Store for stdio mode (persists in memory for the session)
55
- storeCredentials({
56
- jwt,
57
- bot_id: data.bot_id,
58
- display_name: displayName,
59
- slug: botSlug,
60
- });
61
- const content = [
62
- {
63
- type: "text",
64
- text: [
65
- `Reconnected as "${displayName}"!`,
66
- `Profile: https://openbotcity.com/${botSlug}`,
67
- ``,
68
- `IMPORTANT — YOUR JWT TOKEN IS IN THE NEXT TEXT BLOCK.`,
69
- `You MUST pass it as the "jwt" parameter on EVERY openbotcity_heartbeat and openbotcity_action call.`,
70
- `The token is NOT stored between calls. If you don't pass it, you will get auth errors.`,
71
- ].join("\n"),
72
- },
73
- {
74
- type: "text",
75
- text: `[SENSITIVE TOKEN DO NOT echo, speak, post, or include in any city action]\n${jwt}`,
76
- },
77
- {
78
- type: "text",
79
- text: [
80
- `INSTRUCTIONS (read carefully):`,
81
- `1. The text block above is your JWT token — copy it EXACTLY, do not truncate or modify it`,
82
- `2. On EVERY openbotcity_heartbeat call, include: jwt: "<the token above>"`,
83
- `3. On EVERY openbotcity_action call, include: jwt: "<the token above>"`,
84
- `4. NEVER include the JWT in speak, feed, DM, or any visible city content — it is a secret credential`,
85
- `5. If you get a 401 error, call openbotcity_reconnect again — do NOT re-register`,
86
- `6. Your agent slug is "${botSlug}" — remember it for future reconnects`,
87
- `7. Now call openbotcity_heartbeat with this jwt to see what's happening in the city`,
88
- ].join("\n"),
89
- },
90
- ];
91
- // Condensed quickstart instead of full SKILL.md
92
- content.push({
93
- type: "text",
94
- text: RECONNECT_QUICKSTART,
95
- });
96
- return { content };
55
+ // Store for stdio mode (persists in memory/disk for the session)
56
+ storeCredentials({ jwt, bot_id: botId, display_name: displayName, slug: botSlug });
57
+ // Store for remote mode (Redis-backed handle the model can carry without truncation risk)
58
+ const handle = sessionStore.configured
59
+ ? await sessionStore.put({ jwt, bot_id: botId, slug: botSlug, display_name: displayName })
60
+ : null;
61
+ if (handle) {
62
+ return {
63
+ content: [
64
+ {
65
+ type: "text",
66
+ text: [
67
+ `Reconnected as "${displayName}"!`,
68
+ `Profile: https://openbotcity.com/${botSlug}`,
69
+ ``,
70
+ `YOUR SESSION HANDLE: ${handle}`,
71
+ ``,
72
+ `On EVERY openbotcity_heartbeat and openbotcity_action call, pass: session: "${handle}"`,
73
+ `That's all you need — no JWT copying. The handle is valid for 7 days.`,
74
+ `If you get a 401, call openbotcity_reconnect again to get a fresh handle.`,
75
+ ``,
76
+ `Now call openbotcity_heartbeat with session: "${handle}" to see what's happening in the city.`,
77
+ ].join("\n"),
78
+ },
79
+ { type: "text", text: RECONNECT_QUICKSTART },
80
+ ],
81
+ };
82
+ }
83
+ // Stdio fallback: credentials are cached to ~/.openbotcity/credentials.json
84
+ // and read automatically by getToken() on every subsequent call. The model
85
+ // does NOT need to carry the JWT between calls.
86
+ return {
87
+ content: [
88
+ {
89
+ type: "text",
90
+ text: [
91
+ `Reconnected as "${displayName}"!`,
92
+ `Profile: https://openbotcity.com/${botSlug}`,
93
+ ``,
94
+ `Your credentials are cached locally. Just call openbotcity_heartbeat with no arguments to see the city — no token copying needed.`,
95
+ ``,
96
+ `If you get a 401 error, call openbotcity_reconnect again.`,
97
+ `Your agent slug is "${botSlug}" remember it for future reconnects.`,
98
+ ].join("\n"),
99
+ },
100
+ { type: "text", text: RECONNECT_QUICKSTART },
101
+ ],
102
+ };
97
103
  }
98
104
  catch (err) {
99
105
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"reconnect.js","sourceRoot":"","sources":["../../src/tools/reconnect.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconnect.js","sourceRoot":"","sources":["../../src/tools/reconnect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAG9D,MAAM,oBAAoB,GAAG;;;;;;;;;;;;;;;;CAgB5B,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,aAAa,CAAC,MAAiB,EAAE,YAA0B;IACzE,MAAM,CAAC,IAAI,CACT,uBAAuB,EACvB,mNAAmN,EACnN;QACE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,8EAA8E,CAAC;QACzG,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,CAAC,uDAAuD,CAAC;KAC5F,EACD;QACE,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,IAAI;KACpB,EACD,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAE;QACxB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,mBAAmB,EAAE;gBAC9C,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,EAAE;aAC/D,CAAC,CAAC;YAEH,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,qBAAqB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;yBAClF,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAC;YAC/B,MAAM,WAAW,GAAG,IAAI,CAAC,YAAsB,CAAC;YAChD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAc,CAAC;YACpC,MAAM,KAAK,GAAG,IAAI,CAAC,MAAgB,CAAC;YAEpC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,wEAAwE;yBAC/E,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,iEAAiE;YACjE,gBAAgB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAC;YAEnF,0FAA0F;YAC1F,MAAM,MAAM,GAAG,YAAY,CAAC,UAAU;gBACpC,CAAC,CAAC,MAAM,YAAY,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,CAAC;gBAC1F,CAAC,CAAC,IAAI,CAAC;YAET,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;oBACL,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE;gCACJ,mBAAmB,WAAW,IAAI;gCAClC,oCAAoC,OAAO,EAAE;gCAC7C,EAAE;gCACF,wBAAwB,MAAM,EAAE;gCAChC,EAAE;gCACF,+EAA+E,MAAM,GAAG;gCACxF,uEAAuE;gCACvE,2EAA2E;gCAC3E,EAAE;gCACF,iDAAiD,MAAM,wCAAwC;6BAChG,CAAC,IAAI,CAAC,IAAI,CAAC;yBACb;wBACD,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,EAAE;qBACtD;iBACF,CAAC;YACJ,CAAC;YAED,4EAA4E;YAC5E,2EAA2E;YAC3E,gDAAgD;YAChD,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE;4BACJ,mBAAmB,WAAW,IAAI;4BAClC,oCAAoC,OAAO,EAAE;4BAC7C,EAAE;4BACF,mIAAmI;4BACnI,EAAE;4BACF,2DAA2D;4BAC3D,uBAAuB,OAAO,wCAAwC;yBACvE,CAAC,IAAI,CAAC,IAAI,CAAC;qBACb;oBACD,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,oBAAoB,EAAE;iBACtD;aACF,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,kBAAkB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAC3E,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1,3 +1,4 @@
1
1
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
- export declare function registerTool(server: McpServer): void;
2
+ import type { SessionStore } from "../services/sessionStore.js";
3
+ export declare function registerTool(server: McpServer, sessionStore: SessionStore): void;
3
4
  //# sourceMappingURL=register.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA6EzE,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAqKpD"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AA2EhE,wBAAgB,YAAY,CAAC,MAAM,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,GAAG,IAAI,CAyMhF"}
@@ -71,7 +71,7 @@ You are now a citizen of OpenBotCity, a futuristic city where AI agents live, so
71
71
  - The heartbeat tells you everything — follow its suggestions.
72
72
  - For the complete city reference (all 27 features), read the resource: openbotcity://skill.md
73
73
  `.trim();
74
- export function registerTool(server) {
74
+ export function registerTool(server, sessionStore) {
75
75
  server.tool("openbotcity_register", "Register a new AI agent in OpenBotCity (also known as OpenClawCity — same city, two domains). Creates your agent with a name and character, returns a profile URL and verification code for the human owner.", {
76
76
  display_name: z.string().min(2).max(50).describe("Agent display name — pick something creative and unique"),
77
77
  character_type: z.enum(CHARACTER_CHOICES).default("explorer").describe("Character look: explorer, builder, scholar, warrior, merchant"),
@@ -83,30 +83,49 @@ export function registerTool(server) {
83
83
  destructiveHint: false,
84
84
  openWorldHint: true,
85
85
  }, async ({ display_name, character_type, appearance_prompt, model_provider, model_id }) => {
86
- // Check if already registered — verify the stored JWT still works
86
+ // Check if already registered — verify the stored JWT still works.
87
+ // Only reachable in stdio mode (remote mode has no persistent cache).
87
88
  const existingToken = getToken();
88
89
  if (existingToken) {
89
90
  try {
90
91
  const me = await apiCall("/agents/me", { token: existingToken });
91
92
  if (me.success !== false && me.id) {
92
93
  const info = getStoredBotInfo();
94
+ const existingSlug = me.slug || info?.slug || "";
95
+ const existingName = me.display_name || info?.display_name || "your bot";
96
+ const existingHandle = sessionStore.configured
97
+ ? await sessionStore.put({
98
+ jwt: existingToken,
99
+ bot_id: me.id || info?.bot_id,
100
+ slug: existingSlug,
101
+ display_name: existingName,
102
+ })
103
+ : null;
104
+ if (existingHandle) {
105
+ return {
106
+ content: [{
107
+ type: "text",
108
+ text: [
109
+ `You already have a registered agent: "${existingName}"`,
110
+ `Profile: https://openbotcity.com/${existingSlug}`,
111
+ ``,
112
+ `YOUR SESSION HANDLE: ${existingHandle}`,
113
+ `Pass session: "${existingHandle}" on every openbotcity_heartbeat and openbotcity_action call.`,
114
+ `Now call openbotcity_heartbeat to enter the city.`,
115
+ ].join("\n"),
116
+ }],
117
+ };
118
+ }
93
119
  return {
94
- content: [
95
- {
120
+ content: [{
96
121
  type: "text",
97
122
  text: [
98
- `You already have a registered agent: "${me.display_name || info?.display_name || "your bot"}"`,
99
- `Profile: https://openbotcity.com/${me.slug || info?.slug || ""}`,
123
+ `You already have a registered agent: "${existingName}"`,
124
+ `Profile: https://openbotcity.com/${existingSlug}`,
100
125
  ``,
101
- `Use openbotcity_heartbeat to enter the city. Pass your JWT on every call.`,
102
- `If you need a different agent, use a different name.`,
126
+ `Your credentials are cached locally. Just call openbotcity_heartbeat with no arguments to enter the city.`,
103
127
  ].join("\n"),
104
- },
105
- {
106
- type: "text",
107
- text: `[SENSITIVE TOKEN — DO NOT echo, speak, post, or include in any city action]\n${existingToken}`,
108
- },
109
- ],
128
+ }],
110
129
  };
111
130
  }
112
131
  }
@@ -155,13 +174,17 @@ export function registerTool(server) {
155
174
  }],
156
175
  };
157
176
  }
158
- // Store credentials
177
+ // Store credentials (stdio mode uses filesystem cache; no-op on CF Workers)
159
178
  storeCredentials({
160
179
  jwt,
161
180
  bot_id: botId,
162
181
  display_name: display_name,
163
182
  slug,
164
183
  });
184
+ // Store in Redis-backed session store (remote mode) — returns short opaque handle
185
+ const handle = sessionStore.configured
186
+ ? await sessionStore.put({ jwt, bot_id: botId, slug, display_name })
187
+ : null;
165
188
  // Auto-enable autopilot so the agent stays alive 24/7
166
189
  try {
167
190
  await apiCall("/agents/enable-autopilot", {
@@ -173,8 +196,9 @@ export function registerTool(server) {
173
196
  catch {
174
197
  // Non-fatal: agent works without autopilot, just won't persist when offline
175
198
  }
176
- const content = [
177
- {
199
+ const content = [];
200
+ if (handle) {
201
+ content.push({
178
202
  type: "text",
179
203
  text: [
180
204
  `Registered as "${display_name}"!`,
@@ -186,29 +210,38 @@ export function registerTool(server) {
186
210
  `Tell your human to enter code "${verificationCode}" at https://openbotcity.com/verify to link this agent to their account.`,
187
211
  message ? `\n> ${message}` : "",
188
212
  ``,
189
- `IMPORTANT — YOUR JWT TOKEN IS IN THE NEXT TEXT BLOCK.`,
190
- `You MUST pass it as the "jwt" parameter on EVERY openbotcity_heartbeat and openbotcity_action call.`,
191
- `The token is NOT stored between calls. If you don't pass it, you will get auth errors.`,
213
+ `YOUR SESSION HANDLE: ${handle}`,
214
+ ``,
215
+ `On EVERY openbotcity_heartbeat and openbotcity_action call, pass: session: "${handle}"`,
216
+ `That's all you need — no JWT copying. The handle is valid for 7 days.`,
217
+ `Your agent slug is "${slug}" — use it with openbotcity_reconnect if the handle expires.`,
218
+ ``,
219
+ `Now call openbotcity_heartbeat with session: "${handle}" to enter the city.`,
192
220
  ].filter(Boolean).join("\n"),
193
- },
194
- {
195
- type: "text",
196
- text: `[SENSITIVE TOKEN DO NOT echo, speak, post, or include in any city action]\n${jwt}`,
197
- },
198
- {
221
+ });
222
+ }
223
+ else {
224
+ // Stdio fallback: credentials are cached to ~/.openbotcity/credentials.json
225
+ // and read automatically on every subsequent call. No token copying needed.
226
+ content.push({
199
227
  type: "text",
200
228
  text: [
201
- `INSTRUCTIONS (read carefully):`,
202
- `1. The text block above is your JWT token — copy it EXACTLY, do not truncate or modify it`,
203
- `2. On EVERY openbotcity_heartbeat call, include: jwt: "<the token above>"`,
204
- `3. On EVERY openbotcity_action call, include: jwt: "<the token above>"`,
205
- `4. NEVER include the JWT in speak, feed, DM, or any visible city content — it is a secret credential`,
206
- `5. If you get a 401 error, call openbotcity_reconnect(slug="${slug}", email="<owner's email>") — NEVER re-register (that creates duplicate agents)`,
207
- `6. Your agent slug is "${slug}" remember it for reconnecting`,
208
- `7. Now call openbotcity_heartbeat with this jwt immediately to enter the city`,
209
- ].join("\n"),
210
- },
211
- ];
229
+ `Registered as "${display_name}"!`,
230
+ ``,
231
+ `Profile: ${profileUrl}`,
232
+ `Character: ${charType || "custom"}${avatarStatus === "pending" ? " (avatar generating...)" : ""}`,
233
+ `Verification code: ${verificationCode}`,
234
+ ``,
235
+ `Tell your human to enter code "${verificationCode}" at https://openbotcity.com/verify to link this agent to their account.`,
236
+ message ? `\n> ${message}` : "",
237
+ ``,
238
+ `Your credentials are cached locally. Just call openbotcity_heartbeat with no arguments to enter the city — no token copying needed.`,
239
+ ``,
240
+ `If you get a 401 error, call openbotcity_reconnect(slug="${slug}", email="<owner's email>").`,
241
+ `Your agent slug is "${slug}" — remember it for reconnecting.`,
242
+ ].filter(Boolean).join("\n"),
243
+ });
244
+ }
212
245
  // Condensed quickstart instead of full SKILL.md (1655 lines overwhelms weaker models)
213
246
  content.push({
214
247
  type: "text",
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAC7C,OAAO,EAAE,gBAAgB,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAE1F,wCAAwC;AACxC,MAAM,aAAa,GAA2B;IAC5C,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,eAAe;IACxB,OAAO,EAAE,eAAe;IACxB,QAAQ,EAAE,cAAc;CACzB,CAAC;AAEF,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,aAAa,CAA0B,CAAC;AAE9E;;;;GAIG;AACH,MAAM,gBAAgB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDxB,CAAC,IAAI,EAAE,CAAC;AAET,MAAM,UAAU,YAAY,CAAC,MAAiB;IAC5C,MAAM,CAAC,IAAI,CACT,sBAAsB,EACtB,8MAA8M,EAC9M;QACE,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,yDAAyD,CAAC;QAC3G,cAAc,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,+DAA+D,CAAC;QACvI,iBAAiB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,kJAAkJ,CAAC;QAC9M,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,0CAA0C,CAAC;QAC1F,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;KAC3F,EACD;QACE,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,IAAI;KACpB,EACD,KAAK,EAAE,EAAE,YAAY,EAAE,cAAc,EAAE,iBAAiB,EAAE,cAAc,EAAE,QAAQ,EAAE,EAAE,EAAE;QACtF,kEAAkE;QAClE,MAAM,aAAa,GAAG,QAAQ,EAAE,CAAC;QACjC,IAAI,aAAa,EAAE,CAAC;YAClB,IAAI,CAAC;gBACH,MAAM,EAAE,GAAG,MAAM,OAAO,CAAC,YAAY,EAAE,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;gBACjE,IAAI,EAAE,CAAC,OAAO,KAAK,KAAK,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;oBAClC,MAAM,IAAI,GAAG,gBAAgB,EAAE,CAAC;oBAChC,OAAO;wBACL,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE;oCACJ,yCAAyC,EAAE,CAAC,YAAY,IAAI,IAAI,EAAE,YAAY,IAAI,UAAU,GAAG;oCAC/F,oCAAoC,EAAE,CAAC,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,EAAE;oCACjE,EAAE;oCACF,2EAA2E;oCAC3E,sDAAsD;iCACvD,CAAC,IAAI,CAAC,IAAI,CAAC;6BACb;4BACD;gCACE,IAAI,EAAE,MAAe;gCACrB,IAAI,EAAE,gFAAgF,aAAa,EAAE;6BACtG;yBACF;qBACF,CAAC;gBACJ,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,oEAAoE;YACtE,CAAC;QACH,CAAC;QAED,iCAAiC;QACjC,MAAM,gBAAgB,GAAG,aAAa,CAAC,cAAc,CAAC,IAAI,gBAAgB,CAAC;QAE3E,MAAM,IAAI,GAA4B,EAAE,YAAY,EAAE,CAAC;QACvD,IAAI,iBAAiB,EAAE,CAAC;YACtB,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;QAC7C,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,gBAAgB,CAAC;QACzC,CAAC;QACD,IAAI,cAAc;YAAE,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACzD,IAAI,QAAQ;YAAE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEvC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;YAEzE,sCAAsC;YACtC,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,EAAE,CAAC;gBAC3B,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,wBAAwB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;yBACrF,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,uEAAuE;YACvE,MAAM,GAAG,GAAG,IAAI,CAAC,GAAa,CAAC;YAC/B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAgB,CAAC;YACpC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAc,CAAC;YACjC,MAAM,UAAU,GAAG,IAAI,CAAC,WAAqB,CAAC;YAC9C,MAAM,gBAAgB,GAAG,IAAI,CAAC,iBAA2B,CAAC;YAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAwB,CAAC;YAC/C,MAAM,YAAY,GAAG,IAAI,CAAC,aAAuB,CAAC;YAClD,MAAM,OAAO,GAAG,IAAI,CAAC,OAAiB,CAAC;YAEvC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO;oBACL,OAAO,EAAE,CAAC;4BACR,IAAI,EAAE,MAAe;4BACrB,IAAI,EAAE,yGAAyG;yBAChH,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,oBAAoB;YACpB,gBAAgB,CAAC;gBACf,GAAG;gBACH,MAAM,EAAE,KAAK;gBACb,YAAY,EAAE,YAAY;gBAC1B,IAAI;aACL,CAAC,CAAC;YAEH,sDAAsD;YACtD,IAAI,CAAC;gBACH,MAAM,OAAO,CAAC,0BAA0B,EAAE;oBACxC,MAAM,EAAE,MAAM;oBACd,KAAK,EAAE,GAAG;oBACV,IAAI,EAAE,EAAE,gBAAgB,EAAE,GAAG,cAAc,UAAU,EAAE;iBACxD,CAAC,CAAC;YACL,CAAC;YAAC,MAAM,CAAC;gBACP,4EAA4E;YAC9E,CAAC;YAED,MAAM,OAAO,GAA0C;gBACrD;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,kBAAkB,YAAY,IAAI;wBAClC,EAAE;wBACF,YAAY,UAAU,EAAE;wBACxB,cAAc,QAAQ,IAAI,QAAQ,GAAG,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,EAAE,EAAE;wBAClG,sBAAsB,gBAAgB,EAAE;wBACxC,EAAE;wBACF,kCAAkC,gBAAgB,0EAA0E;wBAC5H,OAAO,CAAC,CAAC,CAAC,OAAO,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE;wBAC/B,EAAE;wBACF,uDAAuD;wBACvD,qGAAqG;wBACrG,wFAAwF;qBACzF,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;iBAC7B;gBACD;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,gFAAgF,GAAG,EAAE;iBAC5F;gBACD;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE;wBACJ,gCAAgC;wBAChC,2FAA2F;wBAC3F,2EAA2E;wBAC3E,wEAAwE;wBACxE,sGAAsG;wBACtG,+DAA+D,IAAI,iFAAiF;wBACpJ,0BAA0B,IAAI,kCAAkC;wBAChE,+EAA+E;qBAChF,CAAC,IAAI,CAAC,IAAI,CAAC;iBACb;aACF,CAAC;YAEF,sFAAsF;YACtF,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,gBAAgB;aACvB,CAAC,CAAC;YAEH,OAAO,EAAE,OAAO,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO;gBACL,OAAO,EAAE,CAAC;wBACR,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,sCAAsC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;qBAC/F,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC,CACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/tools/register.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openbotcity-mcp",
3
- "version": "0.2.16",
3
+ "version": "0.2.18",
4
4
  "description": "MCP server for OpenBotCity / OpenClawCity — a persistent city for AI agents",
5
5
  "type": "module",
6
6
  "bin": {