{"$schema":"https://wellknown.network/schemas/agent-record-v1.json","schemaVersion":"1","id":"ag_ya5tykgpve62","handle":"layero","url":"https://wellknown.network/agents/layero","links":{"self":"https://wellknown.network/agents/layero/record.json","html":"https://wellknown.network/agents/layero","markdown":"https://wellknown.network/agents/layero/record.md","api":"https://wellknown.network/api/v1/agents/layero","status":"https://wellknown.network/api/v1/agents/layero/status","claim":"https://wellknown.network/agents/layero/claim","claimApi":"https://wellknown.network/api/v1/claims","claimDescriptor":"https://wellknown.network/agents/layero/claim.json","badge":"https://wellknown.network/agents/layero/badge.svg","openapi":"https://wellknown.network/openapi.json","history":"https://wellknown.network/api/v1/agents/layero/history","tools":"https://wellknown.network/api/v1/agents/layero/tools"},"ard":{"identifier":"urn:air:mcp.layero.ru:server:layero","type":"application/mcp-server-card+json"},"kind":"mcp_server","declared":{"name":"Layero","summary":"Deploy and operate sites on Layero — hosting with build servers in Russia: domains, env, Data API.","description":"Deploy and operate sites on Layero — hosting with build servers in Russia: domains, env, Data API.","publisher":{"name":"ru.layero","url":null},"homepage":"https://docs.layero.ru/agents/","repository":"https://github.com/LayeroInfra/layero-agents","version":"2.4.0","license":null,"protocols":["mcp"],"tags":[],"pricing":null,"endpoints":[{"url":"https://mcp.layero.ru/mcp","type":"mcp_streamable_http","auth":null,"probeable":true}],"skills":null,"tools":null,"extra":{"updatedAt":"2026-09-19T07:21:40.862754Z","publishedAt":"2026-09-19T07:21:40.862754Z","registryName":"ru.layero/layero"},"attribution":{"kind":"mcp_registry","name":"mcp_registry","repoUrl":"mcp_registry","summary":"mcp_registry","version":"mcp_registry","description":"mcp_registry","homepageUrl":"mcp_registry","publisherName":"mcp_registry"}},"derived":{"capabilities":[{"slug":"dev.version-control","name":"Version Control","confidence":1,"provenance":"derived"},{"slug":"analytics.reporting","name":"Reporting & Dashboards","confidence":1,"provenance":"derived"},{"slug":"data.database","name":"Databases","confidence":0.977,"provenance":"derived"},{"slug":"dev.ci-cd","name":"CI/CD & Deploy","confidence":0.885,"provenance":"derived"},{"slug":"code.refactoring","name":"Refactoring","confidence":0.525,"provenance":"derived"},{"slug":"dev.terminal","name":"Terminal & Shell","confidence":0.525,"provenance":"derived"},{"slug":"infra.browser-automation","name":"Browser Automation","confidence":0.51,"provenance":"derived"}],"categories":["analytics","code","data","dev","infra"],"language":"en"},"observed":{"status":"live","statusReason":"Responded 41m ago.","lastOkAt":"2026-10-10T01:23:51.030Z","lastProbedAt":"2026-10-10T01:23:51.030Z","statusComputedAt":"2026-10-10T01:25:56.116Z","reliability30d":{"probes":110,"successRate":1,"p50Ms":58,"basis":"mixed","measures":{"availability":"availability (some checks stopped at authentication)","latency":"response time (mixed)","tools":"partially observed","summary":"Some successful checks reached the service and some stopped at an authentication response; figures combine both."},"checks":{"total":110,"ok":110,"authBoundaryOk":1,"serviceOk":109,"note":"Counted from the observation rows for the window, checks of the server only (HTTP, A2A card, MCP initialize). ok = authBoundaryOk + serviceOk. `probes` is the sum of daily rollups and includes registry checks, so it can differ from `total`."}},"latestObservations":[{"at":"2026-10-10T01:23:51.030Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":52,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T18:27:00.795Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":55,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T12:29:55.035Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":74,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T06:23:00.530Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":55,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-09T00:24:56.906Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":54,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T17:28:35.475Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":57,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T11:24:34.090Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":85,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-08T05:22:27.146Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":54,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T23:25:52.928Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":54,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}},{"at":"2026-10-07T17:29:50.710Z","kind":"mcp_initialize","ok":true,"httpStatus":200,"latencyMs":53,"error":null,"detail":{"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"toolCount":36,"toolsHash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","serverName":"layero","capabilities":["experimental","prompts","resources","tools"],"serverVersion":"2.5.0","protocolVersion":"2025-06-18"}}],"tools":[{"name":"search_docs","description":"Search docs.layero.ru — no token needed.\n\n    Use it before guessing how the platform works: build settings and\n    `layero.json`, environments and preview URLs"},{"name":"whoami","description":"Who is connected to Layero and how many projects they have.\n\n    Call this first when you are unsure the token is configured: a clear\n    error here is cheaper "},{"name":"my_projects","description":"The user's sites on Layero.\n\n    Thirty most recent by default. The full list is rarely needed, while\n    flooding half your context with it is easy: an active "},{"name":"list_sources","description":"Which git providers Layero supports and which of them the organization\n    has connected (GitHub App installations and provider tokens).\n\n    Call before `impor"},{"name":"import_repo","description":"Create a Layero project from a repository — path (a) without the\n    dashboard. From then on a push to the branch is a preview, a push to the\n    production bra"},{"name":"list_environments","description":"The project's environments — one per branch (or the single `cli` one),\n    each with its address and the state of its latest build.\n\n    Answers \"where is the p"},{"name":"project_create","description":"Create an empty project with no repository — an address reserved for a\n    later `publish_site` or `npx layero@latest deploy`.\n\n    For a project FROM a reposit"},{"name":"site_status","description":"How a site is doing: where it is built from, whether the address is\n    answering, and how the latest build ended.\n\n    One call instead of three (project, depl"},{"name":"check_rules","description":"Check the published site against Layero's anti-phishing rules\n    (https://layero.ru/rules): collecting passwords, card details or wallet\n    recovery phrases o"},{"name":"env_vars","description":"Project environment variables: list names, set them, remove them.\n\n    VALUES ARE NEVER READ BACK — not by you, not by the platform in its\n    response. Only na"},{"name":"project_settings","description":"Build settings of a project: read them, or change them without the\n    dashboard — the way out when detection guessed wrong (wrong folder,\n    wrong type, wrong"},{"name":"connect_analytics","description":"Connect Yandex Metrika to a site.\n\n    IMPORTANT: authorisation happens IN A BROWSER, and neither you nor the\n    platform can do that step for the user. The to"},{"name":"site_analytics","description":"Site traffic: totals, direction and top sources.\n\n    The time series is collapsed into a direction and breakdowns are cut to\n    five: ninety chart points are "},{"name":"check_performance","description":"Measure a site's speed and say whether it got worse after a deploy.\n\n    The verdict comes FROM THE SCORE, not from timings: repeated runs of the\n    same deplo"},{"name":"connect_domain","description":"Connect a custom domain to a site.\n\n    IMPORTANT: between this call and a working domain stands A PERSON. You\n    get DNS records — show them to the user and e"},{"name":"check_domain","description":"Check whether a connected domain has started working.\n\n    Runs the DNS check immediately instead of waiting for the background\n    re-check. If the records hav"},{"name":"list_domains","description":"The project's own domains and their state."},{"name":"read_site","description":"What is really published: headings, copy, forms, meta, links.\n\n    Call it BEFORE changing anything on a live site and AFTER a publish, to\n    make sure the exp"},{"name":"site_screenshot","description":"A screenshot of the latest built version of the site — how it looks.\n\n    Complements `read_site` (what is on the page) and `site_issues` (what is\n    wrong wit"},{"name":"site_issues","description":"Concrete problems of a page — each with its location and what to do.\n\n    This is NOT a score. The score comes from `check_performance`, and a\n    score gives n"},{"name":"refactor_site","description":"One named markup transformation — with a predictable result.\n\n    The tool PUBLISHES NOTHING. It returns the changed HTML; showing it to\n    the person, getting"},{"name":"check_copy","description":"Mechanical errors of Russian typography — with the exact place and a\n    replacement.\n\n    This is CODE, not a model's judgement: the same text gives the same l"},{"name":"list_deploys","description":"The project's latest builds: how each one ended, how long it took and\n    which one is live now.\n\n    Use it to pick a target for `rollback` or `diagnose_deploy"},{"name":"rollback","description":"Put the previous working build back on the live address.\n\n    CHANGES WHAT VISITORS SEE — ask the person before calling unless they\n    asked for a rollback exp"},{"name":"retry_deploy","description":"Run a build again — a failed one as is, or the latest commit afresh.\n\n    Default (`redeploy=false`): queue the SAME build again. Allowed only for\n    builds in"},{"name":"cancel_deploy","description":"Stop a build that is still running.\n\n    The live address does not change — the previous version stays on it.\n    "},{"name":"deploy_logs","description":"Raw log lines — for when the `diagnose_deploy` analysis was not enough.\n\n    Start with `diagnose_deploy`: it has already pulled out the cause and\n    the neigh"},{"name":"diagnose_deploy","description":"Why a deploy failed — with the cause parsed out, not a raw log.\n\n    Without `deploy` the latest build is used; that is what reflects the\n    current state. To "},{"name":"publish_site","description":"Publish a static site to Layero — from here, with no terminal.\n\n    Takes ANY ready static bundle, so it is the answer to \"deploy my site\" when\n    the project "},{"name":"publish_landing","description":"DEPRECATED — use `publish_site`. Same behaviour, same arguments.\n\n    Kept for one release (removed in the next) so that configs and prompts\n    written before "},{"name":"data_api_status","description":"Whether the database has the Data API enabled, its address, keys and\n    the sites allowed to call it.\n\n    Keys are shown as prefixes only: the platform never "},{"name":"data_api_methods","description":"The database's REST and RPC methods with an access level per HTTP method.\n\n    The level says who may call the method: closed, visitor (any site\n    visitor), u"},{"name":"data_api_grant","description":"Who may call a method of a table or a function: shows the SQL and\n    applies it after consent.\n\n    OPENS DATA TO THE INTERNET. Call it without `apply` first: "},{"name":"data_api_keys","description":"The database's Data API keys: list, issue, revoke.\n\n    The list never contains key values. Issuing and revoking need the\n    person's consent: a client with fo"},{"name":"data_api_origins","description":"Sites allowed to call the database from a browser: list, add, remove.\n\n    Addresses of the connected projects and their branches are allowed\n    automatically "},{"name":"data_api_probe","description":"A real request to a method through the gateway — as a visitor, a user\n    or the server.\n\n    The platform supplies the key and the token. Writes (POST, PATCH, "}],"package":null,"toolSurface":{"id":"ts_xq5b9j62bkdj","endpointId":"ep_sq3j2qrpf7hx","hash":"8d90d213ac678118ef379551f5fb4c5652ab99f6347ba5a05c8b298fb63edd58","toolCount":36,"serverName":"layero","serverVersion":"2.5.0","protocolVersion":"2025-06-18","firstSeenAt":"2026-09-30T00:29:01.263Z","lastSeenAt":"2026-10-10T01:23:51.038Z","observations":38,"toolNames":["search_docs","whoami","my_projects","list_sources","import_repo","list_environments","project_create","site_status","check_rules","env_vars","project_settings","connect_analytics","site_analytics","check_performance","connect_domain","check_domain","list_domains","read_site","site_screenshot","site_issues","refactor_site","check_copy","list_deploys","rollback","retry_deploy","cancel_deploy","deploy_logs","diagnose_deploy","publish_site","publish_landing","data_api_status","data_api_methods","data_api_grant","data_api_keys","data_api_origins","data_api_probe"],"distinctSurfaces":6},"endpointFacts":[{"id":"ep_sq3j2qrpf7hx","url":"https://mcp.layero.ru/mcp","type":"mcp_streamable_http","factsCheckedAt":"2026-10-10T01:23:51.046Z","auth":{"observedAt":"2026-10-10T01:23:51.357Z","authRequired":false,"scheme":null,"resourceMetadata":{"url":"https://mcp.layero.ru/.well-known/oauth-protected-resource/mcp","resource":"https://mcp.layero.ru/mcp","authorizationServers":["https://api.layero.ru"],"scopesSupported":["read","deploy","admin"]},"authorizationServer":{"url":"https://api.layero.ru/.well-known/oauth-authorization-server","issuer":"https://api.layero.ru","grantTypesSupported":["authorization_code"],"codeChallengeMethodsSupported":["S256"],"tokenEndpointAuthMethodsSupported":["none"],"dynamicClientRegistration":true,"dpopSigningAlgValuesSupported":[],"clientIdMetadataDocumentSupported":null},"conformance":{"dpop":false,"rfc8414":true,"rfc9728":true,"pkceS256":true,"clientIdMetadataDocument":false,"dynamicClientRegistration":true}},"tls":{"observedAt":"2026-10-10T01:23:51.448Z","protocol":"TLSv1.3","chainValid":true,"chainError":null,"hostMatches":true,"subject":"*.layero.ru","issuer":{"commonName":"YR1","organization":"Let's Encrypt"},"validFrom":"2026-08-28T11:32:16.000Z","validTo":"2026-11-26T11:32:15.000Z","daysToExpiry":47,"sanCount":2,"fingerprint256":"ED:FD:55:06:A8:BF:C8:8C:FB:1D:56:8F:9B:52:54:91:4A:60:8B:27:8B:89:E8:96:0E:77:A5:6B:E6:89:66:95"}}]},"verification":{"claimed":false,"claimedAt":null,"proofs":[]},"provenance":{"sources":[{"source":"mcp_registry","key":"ru.layero/layero","url":"https://registry.modelcontextprotocol.io/v0/servers/ru.layero%2Flayero","firstSeenAt":"2026-09-07T08:21:16.262Z","fetchedAt":"2026-10-08T19:19:59.781Z","normalizedAt":"2026-10-08T19:19:59.781Z"}]},"firstSeenAt":"2026-09-07T08:21:16.262Z","updatedAt":"2026-10-10T01:26:35.005Z"}