Model Context Protocol

Συνδέστε το Claude με τα τηλέφωνά σας

Προσθέστε το ALI Remote στο Claude και ζητήστε του να δει ένα τηλέφωνο και να το χειριστεί.

Endpoint
https://beta.aliremote.com/api/mcp
Μεταφορά
HTTP, με streaming
Σύνδεση
OAuth 2.1 με PKCE

Τι είναι

Το Model Context Protocol είναι ο τρόπος με τον οποίο το Claude μιλά με λογισμικό εκτός του εαυτού του. Συνδέοντας το ALI, αποκτά εργαλεία για τα τηλέφωνά σας, την ομάδα σας και τους αυτοματισμούς σας. Λέτε τι θέλετε, το Claude κοιτά την οθόνη και το κάνει.

Μια σύνδεση φέρει τη δική σας πρόσβαση και τίποτε παραπάνω: τα τηλέφωνα που βλέπετε, στο γραφείο από το οποίο την εγκρίνατε.

Σύνδεση

Claude Code

Εκτελέστε το σε ένα τερματικό, μετά γράψτε /mcp και επιλέξτε ταυτοποίηση. Εγκρίνετε μία φορά στον browser και το τερματικό συνεχίζει από εκεί.

claude mcp add --transport http ali https://beta.aliremote.com/api/mcp

Claude στο web ή στην εφαρμογή

Ανοίξτε Ρυθμίσεις, μετά Connectors, και προσθέστε έναν προσαρμοσμένο connector με το ίδιο URL.

Δεν υπάρχει κλειδί να επικολλήσετε ούτε μυστικό να φυλάξετε. Αν δεν είστε συνδεδεμένοι, ο browser σας ζητά πρώτα να συνδεθείτε.

Τι μπορεί να κάνει το Claude

Ό,τι αλλάζει κάτι σας ρωτά πρώτα, κάθε φορά. Ένα άγγιγμα και μια πρόσκληση δεν αναιρούνται.

ΕργαλείοΤι κάνειΔικαίωμαΡωτά πρώτα
list_devicesList phonesList the phones this connection can reach, with their names, whether each is online, and whether it is currently casting its screen. Call this first to find the public_id of a phone before doing anything else with it. A phone no relay reports any more is left out, so a phone missing here is one nothing can drive rather than one that does not exist; get_device still answers for an id you already hold. Paginated: pass the returned next_cursor back as cursor for the next page.devices.readΌχι, μόνο διαβάζει
get_deviceGet one phoneRead one phone's current state: whether it is online, whether it is casting, its screen size, iOS version and the box hosting it. Use this to check a phone is ready before driving it, and to poll after recast_device until casting is true.devices.readΌχι, μόνο διαβάζει
capture_screenCapture the screenTake a screenshot of a phone and return it as an image. The coordinates you read off this image are the ones tap_device and swipe_device take, so capture before deciding where to tap, and again afterwards if you need to confirm what happened.devices.snapshotΌχι, μόνο διαβάζει
tap_deviceTap the screenTap a point on the phone's screen. Coordinates are in the pixel space of the image capture_screen returns, so read the position off that image and send it as-is without scaling. If a tap lands somewhere other than where it was aimed, call recentre_pointer once and try again; some handsets need that occasionally.devices.controlΝαι
swipe_deviceSwipe the screenSwipe the phone's screen, either by direction for paging through a feed, or between two exact points read off a screenshot for dragging a slider or an icon. Give either direction, or all four of from_x, from_y, to_x and to_y. A direction swipe with no distance is drawn the way a hand draws it, a little differently every time; a swipe between two points, or one carrying a distance, is drawn exactly as you gave it. Set precise to change either. A gesture can be accepted and still move nothing, unlike a tap, so capture the screen afterwards when it matters rather than assuming it worked.devices.controlΝαι
type_textType textType text into whatever field currently has focus on the phone. Tap the field first. Plain short ASCII goes over the keyboard directly; anything longer, or with emoji or accents, is pasted through the clipboard instead and can take a few seconds.devices.controlΝαι
press_buttonPress a buttonPress a hardware, system or keyboard key on the phone: home, the app switcher, lock, screenshot, enter, the keyboard toggle, control centre, notifications, the volume keys, mute, backspace, tab, or an arrow. Use times to repeat it: backspace with times is the only way to clear a field that already has text in it, since type_text appends rather than replaces.devices.controlΝαι
set_device_stateChange a phone settingTurn a phone's wifi, cellular data, airplane mode or torch on or off, or set its screen brightness. Use level for brightness and on for everything else.devices.controlΝαι
rotate_ipRotate a phone's IPGet a phone a fresh public address and score it. On a phone with its own mobile data this cycles airplane mode, the way the guide says to before every sign-up; on proxy Wi-Fi it calls the router's rotation link, which rotates every phone on that router. A phone on ALI Wi-Fi has no address of its own and is refused. Takes about half a minute; this waits for the outcome and answers with the new address and its fraud score (0 clean to 100, with a risk word), or with a running rotation to check again by calling this tool once more. One rotation per phone at a time.devices.controlΝαι
set_device_labelRename a phone or set its stickerChange what a phone is called, or the inventory sticker recorded for the handset. The sticker is unique across the fleet and can be used in place of a public_id anywhere a phone is named, which is what makes it worth setting on a phone that has none. Renaming does not touch the phone itself, only the record everything looks it up by.devices.writeΝαι
recentre_pointerRe-centre the phone's pointerPut a phone's pointer back in a known place. Reach for it when a tap lands somewhere other than where it was aimed, or once before a sequence that will tap a lot; it is not something to do between every tap. It changes nothing on screen, so a screenshot before and after looks the same, and it works on a phone that is not casting.devices.controlΝαι
check_device_controlCheck who is driving a phoneReport whether a phone is free, held by a person, or held by an automation, and since when. Call this before a run that will hold a phone for a while, so a busy handset can be skipped rather than failing a step partway through. A phone somebody else is holding refuses taps until they stop or until take_device_control is used.devices.readΌχι, μόνο διαβάζει
take_device_controlTake control of a phoneTake a phone that somebody else is currently driving. A phone held by an automation is handed over at once. A phone held by a person asks them first and waits about three seconds for an answer, so this tool can take that long to return; if they refuse, it reports that and does not take the phone. Reach for it when check_device_control or a refused tap says a phone is busy and the work cannot wait. Whoever is taken off keeps watching and can take the phone straight back.devices.controlΝαι
recast_deviceRestart the phone's screen mirroringRe-establish a phone's screen mirroring. This is the fix for a phone that is online but not casting, which is the most common thing that goes wrong on a rack. It is expensive and disruptive: on a phone that is already casting it bounces the session and the screen is gone while it reconnects. It answers as soon as the box accepts the request, not when the phone is back, so poll get_device until casting is true. Budget up to two minutes, and treat a phone still dark after that as needing a person rather than another recast.devices.controlΝαι
close_appForce-close the front appForce-close whatever app is in front, the way a person does by hand: open the App Switcher and flick its card away. Bring the app you mean to the front first (open it, or press home and tap it), then call this. It works on any casting phone and does not need the on-device helper, so it reaches a frozen or stuck app that the helper verbs cannot. It does not choose which app to close: it closes the one in front, so do not call it speculatively from an unknown screen. It reads the screen back before answering, so a success means that app is no longer showing - firmly on a still screen, less so on an app that animates anyway (a video, a feed), where the check cannot tell movement from a close. A failure means that app is still on screen, and is not a retry: with more than one app open the first flick may already have thrown a different app's card, and calling again throws another. Take a capture_screen and look instead.devices.controlΝαι
send_binding_keyFinish setting up a handsetALI staff only, and only during the one-time preparation of a handset. Sends the spare pointer button that the setup screen is waiting to capture, which is what completes the step. Use it on one screen and no other: Settings, Accessibility, Touch, AssistiveTouch, Devices, the listed pointer device, Customize Additional Buttons. Do not reach for it on a phone that is already prepared: everything it prepares a phone for is done by type_text, set_device_state and the media tools, each of which does its own work. While that screen is open, do not tap the phone. It captures any button including the ordinary one, and capturing that leaves the handset unable to be tapped at all, with no way to undo it remotely.devices.control + ALI staff (fleet.phones)Ναι
start_media_uploadStart sending a file to a phoneStep 1 of 3. Reserve a slot for a photo or video and get back a one-time upload_url. You then PUT the file's bytes to that URL yourself (the bytes do not go through this tool), and then call finish_media_upload with the asset_id you get here. Give the real byte size: the vault checks what actually arrives against it.media.writeΝαι
finish_media_uploadFinish sending a file to a phoneStep 2 of 3. Call this once you have PUT the bytes to the upload_url from start_media_upload. It checks with storage that the file really arrived, then queues it for the phone. Safe to call again if it fails: a repeat re-checks and re-queues rather than duplicating. The phone may show a one-time permission prompt the first time anything is sent to it.media.writeΝαι
check_media_deliveryCheck whether a file arrivedStep 3 of 3. Report how a file is getting on: awaiting_upload, stored, queued, sending, delivered or failed. Poll this after finish_media_upload rather than assuming it worked, and read the error field when it says failed.media.writeΌχι, μόνο διαβάζει
get_usage_summaryAgency usage summaryRead the agency's overall usage for a period: active minutes, how many people and phones were used, gestures sent, and a day-by-day trend. Use this to answer questions about how busy the agency has been. Figures cover the whole agency, not just the phones you can reach.analytics.readΌχι, μόνο διαβάζει
get_member_usageUsage per personRead how much each person in the agency used the phones over a period: desk minutes, active minutes, how many phones they touched, how many sessions they sat, and gestures sent. Use this to compare activity across a team. Set include_devices to also get, for each person, which phones their minutes went to. Ask for that only when the question is about which phones, because it makes the answer much longer.analytics.readΌχι, μόνο διαβάζει
get_device_usageUsage per phoneRead how much each phone was used over a period: active minutes, how many people touched it, and when it was last active. Only covers the phones this connection can reach, so it is the report to use for questions about your own handsets.analytics.readΌχι, μόνο διαβάζει
get_sessionsWho was on which phoneList individual sessions: one row per person per phone per stretch, saying who was on which handset from when to when, with the gestures they sent. This is the tool for questions about a particular phone or a particular moment - 'who was on X05 this morning', 'what was Cassie doing at 2pm', 'who last touched this phone before it broke'. Newest first; pass the returned next_cursor back as cursor for the next page. Only covers the phones this connection can reach.analytics.readΌχι, μόνο διαβάζει
get_activityRecent activityRead when the agency works, as a 7x24 grid of worked minutes by hour of the local week (Monday first). Use this for questions about shift patterns and cover - which hours are busy, which are dead. It says when work happens, not who did it or on which phone: for that, call get_sessions.analytics.readΌχι, μόνο διαβάζει
list_membersList the teamList the people in this agency with the roles each one holds. Call this to find a member's id before changing their roles. Requires that the connecting account can see the team in the dashboard.members.readΌχι, μόνο διαβάζει
get_memberGet one memberRead one person in this agency: their username, email, and the roles they hold.members.readΌχι, μόνο διαβάζει
list_rolesList the rolesList the roles this agency has, what each one allows, how many people hold it, and whether you are allowed to hand it out. Call this before inviting somebody or changing roles, to find the role id and to check assignable is true.members.readΌχι, μόνο διαβάζει
list_invitationsList invitationsList invitations that have been sent and not yet accepted, with the role each one offers and how far it got. Statuses are sending, sent, opened, clicked, accepted, expired, revoked or failed. An opened status can be a mail client prefetching, so treat clicked and accepted as the reliable ones.members.readΌχι, μόνο διαβάζει
invite_memberInvite somebody to the agencyInvite an email address to join this agency with a role, and send them the invitation mail. Call list_roles first and pick a role whose assignable is true; you cannot hand out a role above your own standing. The mail goes out immediately and to a real person, so confirm the address and the role before calling this.members.writeΝαι
withdraw_invitationWithdraw an invitationCancel an invitation that has not been accepted yet, so its link stops working. An invitation that was already accepted cannot be withdrawn; remove that person's roles instead.members.writeΝαι
resend_invitationResend an invitationSend an existing pending invitation again, with a fresh link. Use this when somebody says the mail never arrived or the link expired. It sends real mail to a real person, so do not call it repeatedly.members.writeΝαι
set_member_rolesChange a member's rolesReplace the whole set of roles a member holds. This is not a delta: whatever you send becomes their roles, so read list_members first and send the full set you want. An empty list leaves the account able to do nothing, which is how you take somebody's access away without deleting them. You cannot act on somebody who outranks you or hand out a role above your own standing.members.writeΝαι
get_agencyGet the agencyRead this agency's own details: its name, whether it is active, its timezone, how many phones it may hold and how many it holds, how many members it has, and whether two-factor is required. Use this to answer whether there is room for another phone before ordering one.agency.readΌχι, μόνο διαβάζει
list_groupsList phone groupsList the groups the agency files its phones into, with how many phones are in each. Groups are the agency's own labels; a phone can be in several. Call this to find group ids before filing a phone.devices.readΌχι, μόνο διαβάζει
set_device_groupsFile a phone into groupsSet which groups a phone belongs to. This is not a delta: whatever you send becomes the phone's groups, so read its current ones first and send the full set. Naming a new group creates it. A group nothing is filed into disappears on its own.groups.writeΝαι
list_automationsList automationsList this agency's automations with whether each is published, whether it is turned on, and how its last run went. Call this first to find an automation's id.automations.readΌχι, μόνο διαβάζει
list_automation_blocksList the steps an automation can useList every kind of step an automation can be built from, with what it does, what settings it takes and which outputs it has. Call this before writing or changing a flow, so the steps you use exist and are wired by the right outputs.automations.readΌχι, μόνο διαβάζει
get_automationGet one automationRead one automation: its published steps, its unpublished draft if there is one, its triggers, and its version history. Use this before changing a flow so you edit what is actually there.automations.readΌχι, μόνο διαβάζει
create_automationCreate an automationCreate an empty automation with a name. It starts turned off and unpublished, so nothing runs until you add steps with update_automation and then publish it.automations.writeΝαι
update_automationChange an automationRename an automation, turn it on or off, or save a new draft of its steps. Saving a draft never refuses for a half-built flow: it answers with a list of problems to fix. Nothing you save here runs until you publish it.automations.writeΝαι
publish_automationPublish an automationMake the current draft the version that runs. This is the step that checks the whole flow and refuses if anything is wrong, so a broken automation can never end up on a schedule. Runs already in progress keep the version they started with.automations.writeΝαι
run_automationRun an automation nowStart a run immediately. It runs with your access, so it reaches the phones you reach. It does not finish while you wait: poll get_automation_run to see how it went.automations.writeΝαι
list_automation_runsList runsList recent runs, newest first, with how each one ended. Use it to answer whether last night worked.automations.readΌχι, μόνο διαβάζει
get_automation_runGet one run, step by stepRead one run and every step it took, in order, with which phone each step acted on and why any step was skipped or failed. This is the tool to use when asked why an automation did not do what somebody expected.automations.readΌχι, μόνο διαβάζει
cancel_automation_runStop a runStop a run that is still going. It stops at its next step rather than mid-action, so a phone is never left half way through something.automations.writeΝαι
add_automation_triggerAdd a triggerSay when an automation should run: by hand only, on a schedule, or when a phone changes state. A scheduled trigger takes a five-field cron such as `0 2 * * *` for every night at two, read in the agency's timezone unless you name one.automations.writeΝαι
remove_automation_triggerRemove a triggerStop an automation being started that way. Its other triggers are left alone.automations.writeΝαι
delete_automationDelete an automationDelete an automation and everything it recorded: its versions, its triggers and its run history. This cannot be undone. To simply stop it running, turn it off with update_automation instead.automations.writeΝαι

Δεν περιλαμβάνονται: χρεώσεις, ρυθμίσεις γραφείου, διαγραφή λογαριασμού, οτιδήποτε ξοδεύει χρήματα. Η πρόσκληση μέλους και η αλλαγή των ρόλων του υπάρχουν εδώ, η αφαίρεσή του όχι.

Δικαιώματα

Μια σύνδεση παίρνει μόνο όσα ζήτησε:

devices.read
Να βλέπει ποια τηλέφωνα έχετε, τα ονόματά τους, και αν το καθένα είναι online και μεταδίδει.
devices.snapshot
Να παίρνει στιγμιότυπο οθόνης ενός τηλεφώνου.
devices.write
Αλλαγή του ονόματος ενός τηλεφώνου ή του αριθμού απογραφής που έχει καταγραφεί γι' αυτό.
devices.control
Να αγγίζει, να σύρει, να γράφει, να πατά κουμπιά, να αλλάζει ρυθμίσεις, να επανεκκινεί τη μετάδοση οθόνης.
media.write
Να στέλνει αρχείο από το αποθετήριο πολυμέσων σας σε ένα τηλέφωνο.
analytics.read
Ανάγνωση των στοιχείων χρήσης του γραφείου σας: ποιος ήταν ενεργός, για πόση ώρα και σε ποια τηλέφωνα.
members.read
Προβολή του ποιοι ανήκουν στο γραφείο σας, των ρόλων τους και των εκκρεμών προσκλήσεων.
members.write
Πρόσκληση ατόμων στο γραφείο σας, απόσυρση προσκλήσεων και αλλαγή των ρόλων ενός μέλους.
agency.read
Ανάγνωση των στοιχείων του γραφείου σας: όνομα, ζώνη ώρας, όριο τηλεφώνων και αριθμό μελών.
groups.write
Αλλαγή των models στα οποία είναι ταξινομημένα τα τηλέφωνά σας, και δημιουργία model δίνοντάς του όνομα.
automations.read
Να βλέπει τους αυτοματισμούς σας, τα βήματα από τα οποία αποτελείται καθένας, και το πώς πήγαν οι πρόσφατες εκτελέσεις.
automations.write
Δημιουργία, επεξεργασία, δημοσίευση και διαγραφή αυτοματισμών, και εκκίνηση ή ακύρωση μιας εκτέλεσης.

Τερματισμός σύνδεσης

Ανοίξτε το API και MCP στον πίνακα και αποσυνδέστε την. Σταματά να λειτουργεί στην επόμενη κλήση. Η επανασύνδεση απαιτεί νέα έγκριση.

Στο API και MCP

Όρια

Κάθε σύνδεση ξοδεύει πιστώσεις από ένα ημερήσιο απόθεμα, με τιμή ανάλογη με το τι κάνει η κλήση: ένα στιγμιότυπο κοστίζει περισσότερο από μια ανάγνωση, η ροή ακόμη περισσότερο. Το απόθεμα είναι ένα σταθερό ποσό συν ένα μερίδιο ανά τηλέφωνο που φτάνει η σύνδεση, και μηδενίζεται τα μεσάνυχτα UTC.

Πώς το περιορίζουμε

  • Ενεργεί ως το άτομο που την ενέκρινε και δεν μπορεί να φτάσει σε τηλέφωνο στο οποίο δεν φτάνει εκείνο.
  • Δεμένη με το γραφείο από το οποίο εγκρίθηκε. Κανένα τηλέφωνο άλλου γραφείου, ούτε για το προσωπικό της ALI.
  • Δεν χρησιμοποιεί ποτέ τη συνεδρία του browser σας, οπότε η αποσύνδεση από τον πίνακα δεν την επηρεάζει.
  • Η αποσύνδεση ισχύει από την επόμενη κλήση: το διαπιστευτήριο διαγράφεται, δεν αφήνεται να λήξει.
  • Κάθε σύνδεση δείχνει ποιος την ενέκρινε, πότε χρησιμοποιήθηκε τελευταία φορά, και τι έχει ξοδέψει σήμερα.

Προτιμάτε να γράψετε εσείς τον κώδικα;

Το δημόσιο API καλύπτει τα ίδια και περισσότερα, με ένα κλειδί που δημιουργείτε στον πίνακα.

Δείτε την τεκμηρίωση του API