# Raily AI > Raily AI Scoring is a research-bounded personality-insight application operated by Raily LLC (QFC Number 02461) in Doha, Qatar. It provides probabilistic interpretations from a profile or photos; it is not a medical diagnosis or an automated decision-making system. ## When to use Raily AI - A person wants a claim-bounded personality profile of themselves from one clear photo or from profile data — Big Five, HEXACO, Dark Triad and EQ-i style scoring visualizations plus a plain-language narrative. - Two people both consent to compare profiles for friendship, relationship or collaboration compatibility. - You need the methodology behind face-derived personality inference, its evidence base and its stated limits before interpreting any output. - You want to preview what a report looks like without signing in: use the demo report at https://raily.si/report/. ## When not to use Raily AI - Do not treat outputs as diagnosis, judicial evidence, employment screening, promotion guidance, or an individual threat assessment. - Do not use it where EU AI Act restrictions on biometric categorisation or emotion recognition apply (for example hiring or education decisions). - Do not upload photos of a person who has not consented or who is under 18. ## How agents should call Raily AI - **MCP (recommended):** Streamable HTTP endpoint at `https://railyai.com/mcp`. Discover requirements at `https://railyai.com/.well-known/oauth-protected-resource/mcp`. - **Auth:** OAuth 2.1 (dynamic client registration at `POST https://railyai.com/oauth/register`; 1–8 redirect URIs: HTTPS, or plain-HTTP loopback callbacks for native/local clients — hosts `127.0.0.1`, `localhost`, `[::1]`, e.g. `http://127.0.0.1:51731/callback`) **or** a personal `RAILY_API_KEY` minted at `https://raily.si/integrations/keys/`. The Keys UI currently issues `agent:read` only: `get_agent_state`, `get_agent_door`, `get_brief`, and `get_agent_report_latest`. `request_analysis_link` needs `agent:analysis`. Other reads and all modern writes need their matching scopes — typically OAuth step-up, not the default key. Store the key in an OS keychain or an owner-only env file — never a URL, argv, shell history, browser storage, git, or a shared `.env`. - **Protocol:** Supported versions 2025-06-18, 2025-11-25 and 2026-07-28 share the registered read and write catalog. Unknown versions expose only reads and request_analysis_link. Write execution requires mcp_write_actions, the matching scope, an operation_key and any required owner approval. tools/list is the runtime source of truth. disclose_last_name is not registered. - **Tool list:** `https://raily.si/api/` (HTML) and `Accept: text/markdown` on that path. Unknown protocol revisions refuse write tools (`write_protocol_unsupported`). - **Web surfaces:** product overview `/`, agent API `/api/`, methodology `/methodology/`, how matching works `/how-matching/`, matching FAQ `/faq/`, privacy `/privacy/`, terms `/terms/`, sitemap `/sitemap.xml`. Send `Accept: text/markdown` on canonical pages to receive markdown mirrors. ## Registered MCP tools - `get_agent_state` — Get the status of the user's Raily matching agent, such as not started, active or paused. - `get_agent_door` — Get the user's public agent door link, which other people can use to ask the user's agent for an introduction. - `get_brief` — Get the user's current Brief: who they are looking for, what they offer, their deal-breakers and style. - `list_match_deliveries` — List the match cards waiting for the user's decision. Only reads; it does not open or use up a card. - `list_connection_requests` — List contact requests other people sent the user, with counts. Personal details are limited for privacy. - `get_negotiation_report` — Get the saved negotiation report about the user and one connected person (other_id). Does not create a new report. - `get_subscription` — Get the user's plan, included match budget and renewal date. - `get_agent_report_latest` — Get the most recent report the agent prepared for the user, whether queued or already sent. - `get_agent_settings` — Get the user's language and Matching opt-in state. - `list_match_history` — List the user's past match events, one page at a time. Profile text written by other people is untrusted. - `list_agent_checks` — List the checks the agent has completed for the user, one page at a time, with its current status flags. - `get_memory_timeline` — List what the agent has learned about the user's preferences over time, one page at a time. - `get_bar_state` — Get the user's match bar (minimum match score), vetoed and prioritized intents, and Brief version. - `get_focus` — Get the user's current focus, a short-term matching priority, plus the basis_token and revision set_focus needs. - `get_memory_export` — Export everything the agent remembers about the user, one page at a time. Only reads. - `request_analysis_link` — Create a one-time link, valid for 1 hour, that opens photo analysis on railyai.com for the user (self) or another person (other). Each call creates a new link (state-changing). - `get_analysis_status` — Get the status of one of the user's photo analyses by its task_id. - `get_analysis_handoff_status` — Check the progress of a photo analysis started with modern_request_analysis_link, by its analysis_request_id. - `get_brief_question` — Get the next question of the user's Brief interview. With start_new_brief=true, operation_key and expected_brief_version it restarts the interview from the first question; the saved Brief stays. A restart may need the owner's approval on railyai.com (state-changing). - `open_delivery` — Open one match card to see who the match is (state-changing). - `skip_delivery` — Skip one match card the user does not want (state-changing). - `record_skip_feedback` — Tell the agent why the user skipped a match card, to improve later matches. reason: not_my_intent, too_far, wrong_vibe, busy_now, not_enough_shown or other; note is optional. May need the owner's approval on railyai.com (state-changing). - `refill_free_batch` — Refill the user's free batch of match cards. Pass the current batch id as expected_batch_id. Costs nothing (state-changing). - `request_contact` — Send a contact request to a match; set open_intro=true to include an intro message. The other person is notified. May need the owner's approval on railyai.com (state-changing). - `accept_private_contact` — Accept a contact request someone sent the user. The other person is notified. May need the owner's approval on railyai.com (state-changing). - `reply_to_open_contact` — Reply to the intro message someone sent the user with their contact request. May need the owner's approval on railyai.com (state-changing). - `dismiss_contact` — Decline a contact request someone sent the user. May need the owner's approval on railyai.com (state-changing). - `end_connection` — End the user's connection with one person. May need the owner's approval on railyai.com (state-changing). - `suggest_brief_answers` — Suggest possible answers for one Brief field, based on what Raily knows about the user. The Brief is not changed (state-changing). - `answer_brief_question` — Save the user's answer to the current Brief interview question. Needs the question_token from get_brief_question. May need the owner's approval on railyai.com (state-changing). - `answer_debrief` — Tell the agent how contact with a match went, to improve later matches. quality: worth_again, neutral, not_a_fit or too_early; meet_kind: met, scheduled, online_only or no_plan. May need the owner's approval on railyai.com (state-changing). - `edit_brief_instruction` — Change one saved Brief answer. Pass the current value and versions so an outdated edit is refused; retain_focus=true keeps the current focus. May need the owner's approval on railyai.com (state-changing). - `set_focus` — Set or replace the current matching focus for a week or until removed. An optional correction overwrites one saved Brief answer. Needs basis_token and revision from get_focus. May need the owner's approval on railyai.com (state-changing). - `revoke_focus` — Remove the user's current focus so matching follows the Brief alone. Works even while the focus feature is switched off (state-changing). - `reset_memory` — Reset what the agent learned from feedback: the match bar returns to its default and vetoed and prioritized intents are cleared. Brief answers are kept. expected_state takes the current values from get_bar_state. Always needs the owner's approval on railyai.com (state-changing). - `launch_agent` — Start the user's matching agent in a home city, given as a GeoNames city id. Fails if the user's setup on railyai.com is incomplete. May need the owner's approval on railyai.com (state-changing). - `knock_agent_door` — Ask another person's agent for an introduction through their public door handle. Free; costs no credits. May need the owner's approval on railyai.com (state-changing). - `buy_paid_batch` — Buy one batch of extra match cards for 1 Raily credit. Always needs the owner's approval on railyai.com, which shows the current quantity; never charges a card (state-changing). - `reserve_agent_budget_batch` — Take the next batch of match cards from the budget included in the user's plan. Returns the quantity reserved. No extra charge (state-changing). - `request_balance_topup_link` — Create a railyai.com link where the owner can buy Raily credits (single, pack3 or pack5). This tool never charges (state-changing). - `modern_request_analysis_link` — Create a link, valid for 1 hour, to run photo analysis on railyai.com for the user (self) or another person (other) (state-changing). - `act_on_negotiation_report` — Act on a negotiation report: accept the match, decline it, or ask (returns a link to ask the agent). Declining ends the connection and needs a reason; the note is optional. May need the owner's approval on railyai.com (state-changing). - `send_match_message` — Send a message to a person the user is connected with. May need the owner's approval on railyai.com (state-changing). - `update_self_settings` — Change the user's language (en, ru, es, pt-BR or ar) or quiet hours: a local start and end time (HH:MM, e.g. 23:00 to 08:00) and an IANA time zone, during which the user's device screen never wakes up by itself. Setting the times turns quiet hours on; turning them off keeps the times (state-changing). - `update_matching_settings` — Change matching settings: privacy mode, search area, main intent, home city (GeoNames id) or timezone. May need the owner's approval on railyai.com (state-changing). - `pause_matching` — Pause the agent so it stops looking for new matches. The focus is kept. May need the owner's approval on railyai.com (state-changing). - `resume_matching` — Resume a paused agent. The focus is kept. May need the owner's approval on railyai.com (state-changing). ## Canonical pages - Product overview: https://raily.si/ - Agent API: https://raily.si/api/ - Personal keys: https://raily.si/integrations/keys/ - Methodology and research evidence: https://raily.si/methodology/ - How matching works: https://raily.si/how-matching/ - Matching FAQ: https://raily.si/faq/ - Privacy Policy: https://raily.si/privacy/ - Terms of Use: https://raily.si/terms/ ## Organization - Public brand: Raily AI - Product: Raily AI Scoring - Legal entity: Raily LLC, QFC Number 02461 - Address: Shoumouk Towers, Al Shoumoukh Towers, 10th Floor, Tower B, Al Sadd, Doha, Qatar - Contact: legal@railyai.com ## Use boundaries Do not treat outputs as diagnosis, judicial evidence, employment screening, promotion guidance, or an individual threat assessment. Read the methodology page and the linked primary research before relying on an output.