Sẹ́fà MCP

Jẹ́ kí olùrànlọ́wọ́ AI rẹ ṣe ìṣàkóso hosting rẹ

Sifà MCP kan fun gbogbo akanti rẹ. So Claude Code, Claude Desktop tabi Cursor pọ lẹẹkan, yoo si jẹ ki oluranlọwọ rẹ le ṣe at তালিকা awọn aaye rẹ, ka awọn akọọlẹ wọn, ṣiṣẹpọ awọn faili wọn pẹlu ibi ipamọ rẹ ati fisa – ṣiṣẹ pẹlu awọn igbanilaaye nikan ti o fun.

Awọn irinṣẹ 65 loni, ti a ṣe akojọ rẹ ni isalẹ gẹgẹ bi sẹẹla ṣe n pese wọn.

So o pọ

Àwọn ìgbésẹ̀ méjì. Tókẹ́n náà ni gbogbo àmì ìdánimọ̀ rẹ̀, nítorí náà máa lò ó gẹ́gẹ́ bí ọ̀rọ̀ aṣínà: wọ́n fi hàn lẹ́ẹ̀kan ṣoṣo, o sì lè fagilé ìsopọ̀ kan láìfọwọ́ kan àwọn ìyókù.

  1. Ṣẹ̀dá ìsopọ̀ rẹ̀

    Nínú daṣibọọdù rẹ, ṣí awọn irinṣẹ AI, sọ orúkọ asopọ naa, yan alabara rẹ ki o si samisi ohun ti o le ṣe. O le funni ni ohun ti o ni anfani lati ṣe fun ara rẹ nikan.

  2. Fi aṣ hẹ iṣeto ti alabara rẹ ka sílẹ

    Pátì kọ̀ǹpútà àbójútó náà fi ẹ̀rọ-ìṣètò hàn fún oníbàárà tí o yàn, pẹ̀lú tóókùn rẹ nínú rẹ̀ tẹ́lẹ̀. Gbogbo oníbàárà ló ń bá àdíìsì sẹ̀fà náà kan náà sọ̀rọ̀:

    https://api.zinndigital.com/v1/mcp

Claude Code

Ṣe aṣẹ kan náà, tàbí kí o fi bálóòkì náà sí .mcp.json ní ìpìlẹ̀ iṣẹ́ rẹ. Ìlà "type": "http" jẹ́ dandan — láìsí i, Claude Code máa òa fo sẹ́wà náà.

claude mcp add --transport http zinn https://api.zinndigital.com/v1/mcp \
  --header "Authorization: Bearer zmcp_live_…"
// .mcp.json
{
  "mcpServers": {
    "zinn": {
      "type": "http",
      "url": "https://api.zinndigital.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer zmcp_live_…"
      }
    }
  }
}

Claude Desktop

Claude Desktop bẹ̀rẹ̀ àwọn sẹ́fà agbègbè, nítorí náà ó ń lo CLI ọ̀fẹ́ wa Zinnector® gẹ́gẹ́ bí afárá sí sẹ́fà tí a gbale khách. Ó nílò Node 24 tàbí tuntun jù lọ. Àmì (token) náà wà nínú env, kì í ṣe nínú àwọn àrbinrin (arguments) láéláé.

// claude_desktop_config.json
{
  "mcpServers": {
    "zinn": {
      "command": "npx",
      "args": [
        "-y",
        "zinnector@0.1.4",
        "mcp"
      ],
      "env": {
        "ZINN_MCP_TOKEN": "zmcp_live_…"
      }
    }
  }
}

Gọọsọ

Fi sèfùbà náà kún ~/.cursor/mcp.json (tàbí .cursor/mcp.json nínú iṣẹ́ kan) pẹ̀lú àdírẹ́sì náà àti ìwé àṣẹ Authorization.

// ~/.cursor/mcp.json
{
  "mcpServers": {
    "zinn": {
      "url": "https://api.zinndigital.com/v1/mcp",
      "headers": {
        "Authorization": "Bearer zmcp_live_…"
      }
    }
  }
}

Eyikeyi alabara MCP miiran

Onibara eyikeyi ti o ni atilẹyin awọn sẹfa Streamable HTTP ti o jinna pẹlu akọsori aṣa kan ṣiṣẹ: tọka si ni adirẹsi ti o wa loke ti o si fi Authorization: Bearer ranṣẹ pẹlu ami rẹ. Onibara kan ti o bẹrẹ awọn sẹfa agbegbe nikan le lo afara Claude Desktop.

ChatGPT nso pọ si awọn olupin MCP nipa wíwọlé pẹlu OAuth nikan, nitorinaa ko le lo ami-aṣẹ kan sibẹsibẹ. Lo asopọ kanna pẹlu Claude Code, Claude Desktop tabi Cursor.

Ṣàyẹ̀wọ̀ pé ó ń ṣiṣẹ́ — àwọn ìbéèrè mẹ́rin

Beere awọn wọnyi ni ede ti o rọrun. Labẹ ọkọọkan ni irinṣẹ ti oluranlọwọ rẹ yẹ ki o pe ati bi idahun ti o dara ṣe ri.

  1. > List my sites.
      ↳ sites_list

    Awọn oju opo wẹẹrẹ rẹ pẹlu ipo ati eto wọn. Akojọ ti o ṣofo lori akanti ti o ni awọn oju opo wẹẹrẹ tumọ si pe asopọ naa ko ni igbanilaaye lati wo awọn oju opo wẹẹrẹ naa.

  2. > Show me the error log for example.com.
      ↳ site_logs

    Àkọsílẹ aṣìṣe àti àkọsílẹ wọlé tó ṣẹ̀ṣẹ̀ wáyé. Bí wọn kò bá lè ka ọ̀kan nínú wọn, ìdáhùn náà yóò sọ bẹ́ẹ̀ — iyẹn yato sí àkọsílẹ tó ṣófo.

  3. > Sync example.com to its repository.
      ↳ site_repo_sync_run

    Ìgbésẹ̀ kan nínú pẹ̀tẹ́lẹ̀ ìpamọ́ rẹ pẹ̀lú ohunkohun tí ó yípadà lórí ojú-wẹ́bù abẹ̀mí, tàbí àkọsílẹ̀ pé pẹ̀tẹ́lẹ̀ ìpamọ́ náà ti báradọ̀ hẹ̀ tẹ́lẹ̀. Bí pẹ̀tẹ́lẹ̀ ìpamọ́ náà bá ti lọ sí ibòmíràn, wọ́n máa ń mú ìṣọ̀kan náà dúró tí wọn kò sì ní kọ ẹnìkan lé lórí.

  4. > I pushed a commit — deploy example.com and tell me when it is live.
      ↳ site_deploy → site_deploy_status

    Wọ́n ti fi ìgbéjáde sí ìlà ìdúró, lẹ́yìn náà ni ó di mímọ̀ fún gbogbo ènìyàn pẹ̀lú ìjọ̀kan tí a fi sílẹ̀. Àwọn irinṣẹ́ ìkọ̀wé máa ń béèrè fún ìyọ̀ǹda rẹ nínú ohun èlò oníbàárà kí wọ́n tó bẹ̀rẹ̀ sí í ṣiṣẹ́.

Ìṣẹpọ̀ méjèèjì, ní ìtọ́sọ́nà méjèèjì

Ojula kan ti o ni ibi ipamọ ti o sopọ duro ni ipele pẹlu rẹ ni awọn ọna mejeeji, ati oluranlọwọ rẹ le wakọ ni eyikeyi itọnisọna.

Aaye → ibi ipamọ

Ó ṣe àfikún ohun tí ó yí padà nínú àwọn fáìlì abẹ̀mí — àtúnṣe nínú olùṣàkóso fáìlì, ìgbàsílẹ̀ àfikún rẹ̀, ìgbékalẹ̀ — ó sì gbe e lọ sí ẹ̀ka rẹ, nítorí náà git pull rẹ tí ó kàn yóò ní í.

site_repo_sync_run   ·   zinnector sync run

Ibi ipamọ data → aaye

Ìgbésẹ̀ ìfìpalẹ̀ kan fi ẹ̀ka rẹ sára ojú-wọ̀ṣọ́ rẹ. Tì ìgbékalẹ̀ rẹ síwájú, lẹ́yìn náà fi sípò; lórí àwọn sẹ́fà wa èyí nílò ìṣọ̀kan ọ̀nà-méjì tí a tan, èyí tí kò ní owó kankan.

site_deploy   ·   zinnector push

Nigbati awọn ẹgbẹ mejeeji yipada

Kò sí ohun tí a ń dapọ̀ mọ́ra tàbí kọ sórí òmíràn ní ìkọ̀kọ̀. Ìṣọ̀kan náà dúró, ó sọ orúkọ ìpinnu náà, ó sì ń dúró de ọ láti tọjú ojú-wẹ́bù náà tàbí láti tọjú ibùpamọ́ náà. Bí a bá tọjú ibùpamọ́ náà, ó máa sùn àwọn àtúnṣe tí kò tíì ní ìṣọ̀kan ti ojú-wẹ́bù náà nù, nítorí náà ó nílò ìfọwọ́sọ́pọ̀.

site_repo_sync_resolve keep=site|repository confirm=true

Ohun tó ń pa á mọ́ salaf

Ohun tí o fọwọ́sọ́pọ̀ fún nìkan

Gbogbo irinṣẹ ni igbanilaaye rẹ, ati pe asopọ kan n mu awọn ti o ti samisi nikan mu. Awọn aaye alabara miiran ko si niwọn bi asopọ rẹ ti le sọ.

Ìdánilójú fún ohunkohun tó lè parun

Titún ṣe àtúnṣe, múpadà bọ̀ sípò, yíyanjú àlejò imúlẹ̀ mọ́ra àti rírọ́ gbogbo rẹ̀ nílò ìfẹ́sẹ̀mulẹ̀ kedere, àti ohunkóhun tí ó náwó fi àpapọ̀ gangan hàn ọ́ ní àkọ́kọ́.

Gbogbo ìṣe tó wà nínú àkọsílẹ̀ àyẹ̀wò rẹ

A ti gba Ìpè kọọkan sílẹ̀ lòdì sí àsopọ̀ tó ṣe é. Sọ àsopọ̀ kan di òfo lójú-ewé àwọn irinṣẹ́ AI, yóò sì dáwọ́ iṣẹ́ dúró lẹ́sẹ̀kẹsẹ̀.

Gbogbo irinṣẹ́

Gbogbo 65 irinṣẹ, ti a ṣe lati inu ijẹrisi sẹ́fà nṣe — ti o ba wa ni atunyẹwo nibi, oluranlọwọ rẹ le pe e.

Àwọn ojúlé àti àwọn ìgbékalẹ̀

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
sites_listList the organization's sites, with each site's primary domain, status, product line, stack and the plan it is on. Optionally filter by status, product line or a search over domain and name.sites.viewkika nikan
site_getGet one site's full record — domain, status, product line, stack, runtime, PHP version, region, plan and whether it is scheduled for deletion.sites.viewkika nikan
site_createCreate a site and start provisioning it. Give a primary domain and a product line; optionally a blueprint to build it from, a stack type, a PHP version or a region. Returns the new site, which begins in 'provisioning' — poll site_get for status.sites.createyí àwọn nǹkan padà
site_deployDeploy a site — build and publish its current source to our servers. Returns the deploy state immediately; the build runs as a durable workflow. Poll site_deploy_status to follow it.hosting.deploy.manageyí àwọn nǹkan padà
site_deploy_statusThe site's current deploy state — status, target, the live URL, the deployed commit and when it last went live.sites.viewkika nikan
site_deployments_listList a site's recent deployments — id, status, commit, branch and timings. Use this to choose the deployment_id to roll back to.sites.viewkika nikan
site_rollbackRoll a site back to an earlier deployment by re-deploying its commit. Destructive: pass confirm=true. Use site_deployments_list to choose which one.hosting.deploy.manageyí àwọn nǹkan padà · béèrè fún ìfẹ́ǹjìsí

Ìṣẹ́ṣepọ̀ lọ́pọ̀ ọ̀nà

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
site_repo_sync_getShow a site's two-way sync with its repository: whether it is available and on, the repository and branch, the current state (idle, synced, conflict, adopt, error) and the last runs with the commits they made.sites.viewkika nikan
site_repo_sync_setTurn two-way sync on or off for a site, optionally limited to a subdirectory of the site. Needs the customer's own GitHub account connected. Turning it on pushes nothing by itself — call site_repo_sync_run for that.hosting.deploy.manageyí àwọn nǹkan padà
site_repo_sync_runSync a site to its repository now: commit whatever changed in the site's live files and push it to the connected branch, so a local git pull receives it. If the repository moved since the last sync the run is HELD and nothing is overwritten — the result says so. The other direction (repository to site) is site_deploy.hosting.deploy.manageyí àwọn nǹkan padà
site_repo_sync_resolveResolve a HELD two-way sync. keep=site commits the site's files on top of the repository (their commits stay in history); keep=repository applies the repository to the site and DISCARDS the site's unsynced changes. Destructive: pass confirm=true.hosting.deploy.manageyí àwọn nǹkan padà · béèrè fún ìfẹ́ǹjìsí

Àwọn àkọsílẹ̀ àti àwọn ìwọ̀n

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
site_metricsCurrent metrics for one site — visits, bandwidth, error rate, disk and resource use. Each section reports whether it is available, so 'no data' is distinguishable from 'zero'.sites.viewkika nikan
site_usageOne site's metered visit usage for the current billing period, with the plan's allowance and what any overage costs.sites.viewkika nikan
site_logsRead the recent tail of one site's web-server access log and error log. Each log reports whether it could be read, so an unreadable log is never mistaken for an empty one. Use this before proposing a fix for errors or slowness.sites.panel_accesskika nikan
site_build_logRead the build log of one deployment — the latest when deployment_id is omitted. Pass after=<total from the previous call> to fetch only new lines while complete is false.sites.viewkika nikan

Iṣeto ati WordPress

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
site_php_version_getThe site's current PHP version and every version it is allowed to switch to on its product line.sites.viewkika nikan
site_php_version_setSwitch a site to a different PHP version. The version must be one that site_php_version_get lists as available. Reports whether the change reached the machine or was only recorded for provisioning to apply.hosting.php.manageyí àwọn nǹkan padà
wordpress_stateA WordPress site's core version, whether an update is available, and which management operations its hosting permits.sites.viewkika nikan
wordpress_plugins_listList a WordPress site's plugins — name, version, whether active and whether an update is available.sites.viewkika nikan
wp_plugin_updateUpdate one WordPress plugin to its latest version. Returns the plugin list as it reads after the update.sites.panel_accessyí àwọn nǹkan padà
wordpress_update_coreUpdate WordPress core to the latest version on a site. This cannot be undone by another call — take a backup first with backup_create if you may need to go back. Requires confirmation.sites.panel_accessyí àwọn nǹkan padà · béèrè fún ìfẹ́ǹjìsí
wordpress_set_pluginActivate or deactivate one plugin on a WordPress site. Takes effect on the live site immediately. Requires confirmation.sites.panel_accessyí àwọn nǹkan padà · béèrè fún ìfẹ́ǹjìsí

Àwọn Ìpamọ́ Sẹ́yìn

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
backups_listA site's backups — each one's id, when it was taken, its size and status — plus whether a backup is currently running and how many on-demand backups remain in the rolling 24-hour allowance.sites.viewkika nikan
backup_createTake an on-demand backup of a site and return the updated backup state. Bounded to 3 per rolling 24 hours per site; the backup runs in the background.hosting.backup.manageyí àwọn nǹkan padà
backup_restoreRestore a site from one of its backups. This OVERWRITES the site's live database and files, and everything changed since that backup was taken is lost. Requires confirmation, and the confirmation names how old the backup is.hosting.backup.manageyí àwọn nǹkan padà · béèrè fún ìfẹ́ǹjìsí

Àwọn agbègbè ati DNS

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
dns_records_listList a page of DNS records for a domain whose DNS we host, in name/type/value order. Returns a next_cursor for the following page.sites.viewkika nikan
dns_record_createCreate a DNS record for a domain whose DNS we host.domains.dns.manageyí àwọn nǹkan padà
dns_record_updateUpdate an existing DNS record for a domain whose DNS we host.domains.dns.manageyí àwọn nǹkan padà
dns_record_deleteDelete a DNS record for a domain whose DNS we host.domains.dns.manageyí àwọn nǹkan padà · béèrè fún ìfẹ́ǹjìsí
domains_listList the organization's domains — id, hostname, status, product line and whether we registered it or the customer pointed it at us. The ids returned here are what the DNS, cache-purge and index-check tools take.sites.viewkika nikan

Ibi ipamọ igba diẹ ati awọn aṣawakiri wẹẹbù

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
cache_purgePurge the CDN cache for a domain. Omit 'urls' to purge everything, or pass a bounded list of absolute URLs to purge only those.sites.cache.purgekika nikan
crawler_policy_getGet a site's SEO-crawler-blocking (PBN footprint) policy: which crawlers are blocked, the available crawlers, and the rendered robots.txt/server rules.sites.viewkika nikan
crawler_policy_setSet a site's SEO-crawler-blocking policy. 'blocked' is a list of crawler keys (from crawler_policy_get's available_crawlers). Search engines can never be blocked. Publishes the change so the server rules are re-written.sites.crawler.manageyí àwọn nǹkan padà

Imeli

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
mail_services_listList the organization's email services — every domain it has mailboxes on, with the plan's mailbox allowance, how many are used, and whether the mail DNS is published.mail.viewkika nikan
mailboxes_listList the mailboxes on one email service, with each mailbox's size, how full it is, and whether it can send and receive.mail.viewkika nikan
mailbox_createCreate a mailbox on an email service. Returns the new mailbox's password, which is shown once and cannot be retrieved later.mail.manageyí àwọn nǹkan padà
mail_forwarders_listList the mail forwarders on one email service — which address goes where.mail.viewkika nikan
mail_forwarder_createCreate a mail forwarder on an email service, sending everything for one address on to one or more destinations.mail.manageyí àwọn nǹkan padà

SEO

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
site_seo_metricsThe cached SEO authority metrics for a hosted site — domain rank, backlinks, referring domains and organic keywords. Read-only and free; the figures are refreshed by the platform's own sweep, so they may be up to a month old.sites.viewkika nikan
domain_index_checkThe cached search-index status for a domain — whether it is indexed, how many pages, and when the reading was taken. Read-only and free.sites.viewkika nikan

Àwọn àwòrán AI

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
image_models_listThe image models this account can generate with — provider, model, and the price per image in USD. Read-only and free. A model that is not listed cannot be used, either because it is retired or because nobody has priced it.sites.viewkika nikan
image_generateGenerate an image from a prompt and put it in this account's image library. Costs money — the price per image is what image_models_list reports for the model used. Returns the image ids; the customer sees them in their library immediately.links.edityí àwọn nǹkan padà · le san owo

Àwọn Pákò

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
board_listList this organisation's project boards, newest first.agency.board.viewkika nikan
board_getRead one board in full: its columns and every card on them.agency.board.viewkika nikan
board_createCreate a project board, optionally for one of your client organisations.agency.board.manageyí àwọn nǹkan padà
board_card_createAdd a card to a column. Cards are agency-only unless you pass visibility 'client'.agency.board.manageyí àwọn nǹkan padà
board_card_moveMove a card to another column, or to another position in its column.agency.board.manageyí àwọn nǹkan padà
board_card_commentComment on a card. Agency-only unless you pass visibility 'client', in which case the client sees it attributed to your agency.agency.board.commentyí àwọn nǹkan padà

Ìdílé àti àwọn ìgbékalẹ̀ sókè

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
subscriptions_listList the organization's subscriptions — the plan each one is on, its status, renewal date and whether it auto-renews.billing.viewkika nikan
invoices_listList the organization's invoices and credit notes — number, status, total, currency and issue date. Optionally filter by status.billing.viewkika nikan
upgrade_optionsWhat can be bought to lift a limit you have hit — bigger plans, priced with tax, in your own currency. Pass the entitlement from a refusal (e.g. 'max_sites'), or a site_id to see what that site's own plan could move to. Read-only: nothing is bought, and calling this costs nothing.billing.viewkika nikan
purchase_quotePrice a plan exactly, with tax, in the customer's own currency — and nothing is bought or charged. Returns a quote_id to pass to purchase_authorize together with the total, which is what stops an agent committing someone to a figure they never saw. Quotes expire: re-quote rather than reusing an old id.billing.payment.manageyí àwọn nǹkan padà
purchase_authorizeComplete a purchase from a quote: places the order and charges the payment method on file. You must pass the exact total and currency purchase_quote returned — if the price has moved since, this refuses rather than charging a different amount. Retrying with the same quote_id returns the same order and never charges twice.billing.payment.manageyí àwọn nǹkan padà · béèrè fún ìfẹ́ǹjìsí · le san owo

Ìtìlẹ́yìn

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
tickets_listList the organization's support tickets — subject, status, priority and when they were last updated. Optionally filter by status or site.tickets.viewkika nikan
ticket_createOpen a support ticket. Include what you already checked — an agent that has read the KB and run diagnostics should say so in the body, so a human does not repeat it.tickets.replyyí àwọn nǹkan padà

Olùtàjà Alábàárọ̀

Ọ̀rọ̀Ohun tí ó ń ṣeÀṣẹÀwọn àkọsílẹ̀
reseller_overviewThe reseller programme in one read: status, whether you can sell, billing day, default markup, your panel hostname and nameservers, mail sending domain, support routing, commerce readiness and the languages your clients' panel offers.reseller.viewkika nikan · fún àwọn olùtà lẹ́ẹ̀kan ṣoṣo nìkan
reseller_services_listList the sites you have provisioned for your clients — one row per service, with the client organisation, status, any hold you placed, what it costs you wholesale and what you sell it for. Your own sites are not here; use sites_list for those.reseller.viewkika nikan · fún àwọn olùtà lẹ́ẹ̀kan ṣoṣo nìkan
reseller_service_getOne client service in full — status, plan, any hold, wholesale cost, your sell price, and its disk and bandwidth usage.reseller.viewkika nikan · fún àwọn olùtà lẹ́ẹ̀kan ṣoṣo nìkan
reseller_service_suspendPut one of your client's services on a non-payment hold. The site stops serving until you release it. Requires confirm: true.reseller.provisionyí àwọn nǹkan padà · béèrè fún ìfẹ́ǹjìsí · fún àwọn olùtà lẹ́ẹ̀kan ṣoṣo nìkan
reseller_service_unsuspendRelease a non-payment hold you placed on a client's service. The site starts serving again.reseller.provisionyí àwọn nǹkan padà · fún àwọn olùtà lẹ́ẹ̀kan ṣoṣo nìkan
reseller_prices_listYour price list: every plan you can sell, with the Zinn® list price, your wholesale cost, and the retail price you have set (if any).reseller.viewkika nikan · fún àwọn olùtà lẹ́ẹ̀kan ṣoṣo nìkan
reseller_client_wallets_listEvery client wallet you hold a float in, with the balance per client and the total held per currency. This is money you have taken and not yet delivered service for.reseller.viewkika nikan · fún àwọn olùtà lẹ́ẹ̀kan ṣoṣo nìkan

Tẹ́síwàá láti kàá

Ṣe o fẹ terminal kan?

Ìtọ́kasí CLI Zinnector®

Ti a kọ sori API gbangba

Ìtọ́kasí API

Ohun ti oluranlọwọ AI le ṣe fun ọ

Awọn irinṣẹ AI ati MCP

Sopọ olùrànlọ́wọ́ rẹ ní ìṣẹ́jú méjì

Ṣí awọn irinṣẹ AI ninu daṣibọọdù rẹ, ṣẹda asopọ kan, ki o si lẹ mọ agbekalẹ ti alabara rẹ n ka.