{"id":1740292,"recorded_at":"2026-11-01T05:21:23.906997Z","observed_at":"2026-11-01T05:21:23.906838Z","subject_kind":"endpoint","subject":"82309451-111f-4157-8455-619786ee509d","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":18,"tools":[{"description":"Go back one screen.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"session":{"description":"Session from open_app","type":"string"}},"required":["session"],"type":"object"},"name":"back"},{"description":"What the app did with the device in this session: permission prompts and answers, location reads, scans, fingerprint checks, payments, notifications, shares.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"session":{"description":"Session from open_app","type":"string"}},"required":["session"],"type":"object"},"name":"device_log"},{"description":"Put the simulated phone back to a known state (permissions undetermined, default location, nothing in front of the camera, log cleared), optionally with a new profile.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"api":{"type":"number"},"platform":{"enum":["android","ios"],"type":"string"},"session":{"description":"Session from open_app","type":"string"}},"required":["session"],"type":"object"},"name":"device_reset"},{"description":"Close the session and get a report: steps taken, and the orders the app sent to its backend during the session.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"session":{"description":"Session from open_app","type":"string"}},"required":["session"],"type":"object"},"name":"end_session"},{"description":"Apps this server can open, with what each one does. Optional query filters by name, description or category (e.g. 'shop', 'douala').","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"query":{"type":"string"}},"type":"object"},"name":"list_apps"},{"description":"Open simulator sessions (phones) on this server: id, app, release and when each started. Use to resume after a reconnect.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","properties":{},"type":"object"},"name":"list_sessions"},{"description":"The notification shade: notifications delivered to the simulated phone in this session (their banners vanish after 5 s, like a heads-up on a real phone).","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"session":{"description":"Session from open_app","type":"string"}},"required":["session"],"type":"object"},"name":"notifications"},{"description":"Open an app in a fresh phone-sized session and return its first screen.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"app":{"description":"App id from list_apps, optionally with a release: 'tide' (local build), 'tide@latest' or 'tide@r13' (the published release phones run)","type":"string"},"dark":{"description":"Dark mode","type":"boolean"},"seed_cart":{"description":"Start with these items already in the cart (test shortcut). Each line: { product_id, quantity }; { id, qty } also works.","items":{"additionalProperties":false,"properties":{"id":{"type":"string"},"product_id":{"type":"string"},"qty":{"exclusiveMinimum":0,"type":"integer"},"quantity":{"exclusiveMinimum":0,"type":"integer"}},"type":"object"},"type":"array"},"session":{"description":"Session name (default: generated). One session is one phone.","type":"string"}},"required":["app"],"type":"object"},"name":"open_app"},{"description":"Tap a notification from the shade (newest if no id is given): the app handles it exactly as if its banner was tapped.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"id":{"type":"string"},"session":{"description":"Session from open_app","type":"string"}},"required":["session"],"type":"object"},"name":"open_notification"},{"description":"Run an owner command against the live app (changes are audited; `publish` makes them live on every phone within seconds).","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"app":{"type":"string"},"args":{"additionalProperties":{},"type":"object"},"command":{"type":"string"}},"required":["app","command"],"type":"object"},"name":"owner_command"},{"description":"List the owner commands of an app (content, prices, offers, orders, publish). Needs PN_OWNER_TOKEN.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"app":{"type":"string"}},"required":["app"],"type":"object"},"name":"owner_describe"},{"description":"Deliver a push notification to the simulated phone; it appears as a banner the agent can tap.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"body":{"type":"string"},"data":{"additionalProperties":{},"type":"object"},"session":{"description":"Session from open_app","type":"string"},"title":{"type":"string"}},"required":["session","title","body"],"type":"object"},"name":"push_notification"},{"description":"The current screen as an accessibility tree with refs.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"session":{"description":"Session from open_app","type":"string"}},"required":["session"],"type":"object"},"name":"screen"},{"description":"A PNG of the phone screen (for checking layout, colours, images). The tree from `screen` is usually enough to act.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"session":{"description":"Session from open_app","type":"string"}},"required":["session"],"type":"object"},"name":"screenshot"},{"description":"Scroll the page (down/up) or a horizontal rail (right/left, give the rail's ref). Returns the new screen.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"direction":{"enum":["down","up","left","right"],"type":"string"},"ref":{"description":"Scroll inside this element (a rail or list); omit for the page","pattern":"^e\\d+$","type":"string"},"session":{"description":"Session from open_app","type":"string"}},"required":["session","direction"],"type":"object"},"name":"scroll"},{"description":"Change what the simulated phone has: location, a barcode in front of the camera, permission states, whether the fingerprint will match, whether a payment will be approved, network on/off. Takes effect for the next action.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"biometrics":{"additionalProperties":false,"properties":{"enrolled":{"type":"boolean"},"nextResult":{"enum":["success","fail","cancel"],"type":"string"}},"type":"object"},"camera":{"additionalProperties":false,"properties":{"barcode":{"anyOf":[{"additionalProperties":false,"properties":{"data":{"type":"string"},"type":{"type":"string"}},"required":["type","data"],"type":"object"},{"type":"null"}]},"delayMs":{"type":"number"}},"type":"object"},"location":{"additionalProperties":false,"properties":{"accuracy":{"type":"number"},"latitude":{"type":"number"},"longitude":{"type":"number"}},"required":["latitude","longitude"],"type":"object"},"online":{"type":"boolean"},"payment":{"additionalProperties":false,"properties":{"nextResult":{"enum":["approve","decline","timeout","insufficient_funds"],"type":"string"},"pin":{"type":"string"}},"type":"object"},"permissions":{"additionalProperties":false,"properties":{"camera":{"enum":["granted","denied","undetermined"],"type":"string"},"location":{"enum":["granted","denied","undetermined"],"type":"string"},"notifications":{"enum":["granted","denied","undetermined"],"type":"string"}},"type":"object"},"session":{"description":"Session from open_app","type":"string"}},"required":["session"],"type":"object"},"name":"set_device"},{"description":"Tap a button, link or choice by ref. Returns the new screen.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"ref":{"description":"Element ref from the screen, e.g. e42","pattern":"^e\\d+$","type":"string"},"session":{"description":"Session from open_app","type":"string"}},"required":["session","ref"],"type":"object"},"name":"tap"},{"description":"Type into a text field by ref (replaces its content). Returns the new screen.","inputSchema":{"$schema":"http://json-schema.org/draft-07/schema#","additionalProperties":false,"properties":{"enter":{"description":"Press Enter afterwards","type":"boolean"},"ref":{"description":"Element ref from the screen, e.g. e42","pattern":"^e\\d+$","type":"string"},"session":{"description":"Session from open_app","type":"string"},"text":{"type":"string"}},"required":["session","ref","text"],"type":"object"},"name":"type"}]},"body_sha256":"da70b4d946893f9ebf247dc4866261669bedb8ce0ebde61e7c85af1985d19dc1","prev_id":null,"leaf":"0x82e3e8cd5b659d79760cef90b4fba2ebdf8440c4e0ca1c414bea9b2132d385c9","leaf_text":"{\"body\":\"da70b4d946893f9ebf247dc4866261669bedb8ce0ebde61e7c85af1985d19dc1\",\"id\":1740292,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793510483906838,\"prev\":null,\"subject\":\"82309451-111f-4157-8455-619786ee509d\",\"subject_kind\":\"endpoint\"}","day":null,"proof":[]}