{"name":"io.github.emazaheri/ios-agent","slug":"emazaheri-ios-agent","title":"ios-agent","description":"Drive a real iPhone or an iOS Simulator with an AI agent, through XCUIAutomation.","url":"https://mcp.market/server/emazaheri-ios-agent","rating":null,"grade":"A","score":92,"certified":false,"status":"active","category":"productivity","tags":["productivity","ai"],"presence":{"score":26,"stars":0,"forks":0,"downloads_week":37,"last_push_at":"2026-09-01T20:40:32.000Z","license":"MIT"},"uptime":null,"claimed":false,"transport":"pypi","callable_via_gateway":false,"default_price_micros":0,"repository":"https://github.com/emazaheri/ios-agent","website":"https://github.com/emazaheri/ios-agent#readme","version":"0.1.1","remotes":[],"packages":[{"registryType":"pypi","registryBaseUrl":"https://pypi.org","identifier":"ios-mcp","version":"0.1.1","runtimeHint":"uvx","transport":{"type":"stdio"},"environmentVariables":[{"description":"Ask before an action that sends, deletes, or pays. Leave it on for a device carrying real accounts.","default":"true","name":"IOS_MCP_POLICY__CONFIRM_DESTRUCTIVE"},{"description":"The policy gate as a whole: approval, app blocklist, redaction, audit.","default":"true","name":"IOS_MCP_POLICY__ENABLED"},{"description":"Bundle id of the WebDriverAgent runner. Free Apple IDs cannot sign com.facebook.*, so device builds need their own.","default":"com.facebook.WebDriverAgentRunner.xctrunner","name":"IOS_MCP_WDA__BUNDLE_ID"},{"description":"Bring Simulator.app to the front when booting, so a person can watch the agent drive. Set false in CI.","default":"true","name":"IOS_MCP_SIMULATOR__SHOW_WINDOW"}]}],"tools":[{"name":"ios_clipboard","description":"Read or write the device clipboard.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_close_session","description":"Release the device and shut down its WebDriverAgent runner.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_doctor","description":"Check that this machine can drive an iOS device, and say how to fix what it can't.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_drag","description":"Drag one element onto another, for reordering lists and moving items.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_export_trace","description":"Return the ordered record of everything this session has done.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_get_logs","description":"Read recent device logs. Useful when an app misbehaves and the UI does not say why.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_halt","description":"Stop this session from taking further action.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_handle_alert","description":"Answer a system alert.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_install_app","description":"Install an app from a local .app or .ipa.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_launch_app","description":"Bring an app to the foreground and return its screen.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_list_apps","description":"List apps installed on the device, with their bundle identifiers.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_list_devices","description":"List iOS Simulators and attached physical iPhones available for automation.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_observe","description":"Read the screen as a compact list of elements with short refs.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_open_session","description":"Attach to a device and start driving it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_open_url","description":"Open a URL or deep link.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_press_button","description":"Press a hardware button or a keyboard key.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_read_text","description":"Read the text of the screen, or of one element and everything inside it.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_resume","description":"Clear a halt after a human has decided it is safe to continue.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_screenshot","description":"Capture the screen as an image.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_scroll","description":"Scroll, optionally until some text comes into view.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_session_status","description":"Report the current session: device, foreground app, and safety state.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_set_device_state","description":"Change device-level state. Appearance, location, and status bar are Simulator only.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_set_permission","description":"Set a privacy permission without going through the alert.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_set_value","description":"Set a switch, slider, stepper, or picker to a value.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_swipe","description":"Swipe once, for carousels, page views, and swipe-to-reveal rows.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_tap","description":"Tap an element and return the resulting screen.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_terminate_app","description":"Force-quit an app.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_type","description":"Type into a field, focusing it first when a ref or target is given.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_type_secret","description":"Type a stored secret without ever seeing its value.","write_action":false,"price_micros":0,"input_schema":null},{"name":"ios_wait_for","description":"Wait for something to appear or disappear.","write_action":false,"price_micros":0,"input_schema":null}],"scan":{"score":92,"grade":"A","scanned_at":"2026-09-20T20:10:41.572Z","report":{"scannerVersion":"0.1.9","scannedAt":"2026-09-20T20:10:41.510Z","components":{"code":{"score":25,"max":25,"notes":["51 source files scanned"]},"reliability":{"score":-1,"max":20,"notes":["no gateway calls yet and no remote to probe"]},"poisoning":{"score":-1,"max":15,"notes":["tools not inspected (local package is not executed); not counted"]},"auth":{"score":12,"max":15,"notes":["local package, no credentials required"]},"maintenance":{"score":15,"max":15,"notes":["last push 19 days ago"]},"identity":{"score":8,"max":10,"notes":["registry namespace matches repository owner","GitHub account older than a year"]}},"findings":[],"inputs":{"packages":[{"registryType":"pypi","identifier":"ios-mcp","version":"0.1.1","found":true,"weeklyDownloads":37,"license":"MIT","dependencyCount":6,"publishedAt":"2026-09-01T19:18:43.128017Z","repositoryUrl":"https://github.com/emazaheri/ios-agent"}],"repo":{"found":true,"owner":"emazaheri","repo":"ios-agent","archived":false,"pushedAt":"2026-09-01T20:40:32Z","stars":0,"forks":0,"openIssues":2,"ownerType":"User","ownerAvatarUrl":"https://avatars.githubusercontent.com/u/16246620?v=4","ownerCreatedAt":"2015-12-10T21:04:12Z","license":"MIT"},"icon":{"url":"https://avatars.githubusercontent.com/u/16246620?v=4&s=128","source":"github"},"presence":{"stars":0,"forks":0,"downloadsWeek":37,"license":"MIT","lastPushAt":"2026-09-01T20:40:32.000Z","score":26}}}},"grade_history":[],"reviews":[]}