addPrefixToDomain
Add domain prefixes
addPrefixToDomain: Generate domain suggestions by adding prefixes to a base name.
langname必填tldsmaxResultsvocabulary
com.osir由 osir.com 發布官方發布者v2.4.2更新於 Oct 24, 2026
Register, renew, transfer, and manage domains, DNS, VPS, and email with 106 tools. By OSIR.
OSIR 的遠端 MCP 伺服器,讓助理查詢、註冊、續約和轉移網域,並管理 DNS、VPS、郵件代管、帳單和帳戶資料。
Web executable,透過 Streamable HTTP。 遠端服務在工作區中設定後即可從網頁執行環境執行。
把這段提示詞貼上到 Claude Code、Codex、Cursor 等代理程式,或 SourceWeft 對話中。代理程式會讀取該伺服器的安裝指南,先向你展示發布者、端點和登入方式,經你同意後再把它新增到你的客戶端。金鑰不會寫進任何命令。
閱讀 https://sourceweft.com/mcp/com.osir%2Fdomain-registrar/install.md,並按其中說明把這個 MCP 伺服器接入我的客戶端。修改任何設定之前,先告訴我它的發布者、端點和登入方式,等我確認。不要把 API 金鑰寫進命令或我會提交的檔案;問我金鑰應從哪裡取得。把它新增到你客戶端的 mcpServers 設定中。
{
"mcpServers": {
"osir-domain-registrar": {
"type": "http",
"url": "https://be.osir.com/mcp/http"
}
}
}AI integration servers for the OSIR domain registrar. Connect Claude, ChatGPT, or any AI assistant to real domain, DNS, VPS, billing, and account operations — either as individual tools (MCP) or as task-solving specialist agents (A2A).
Two servers, one shared backend client library:
Use MCP when one assistant should call individual operations. Use A2A when you want to hand a whole task ("set up example.com with DNS and check my balance") to agents that coordinate the work.
MCP (Model Context Protocol) is an open standard that connects AI assistants to external tools and data. An MCP server publishes a set of callable tools; any MCP client — Claude Desktop, Cursor, Copilot, or a custom agent — can discover and invoke them. OSIR implements an MCP server purpose-built for domain and infrastructure management, which is what makes it an AI-native registrar rather than a traditional one with a chat box bolted on.
In Claude, open Settings → Connectors → Add custom connector, then pick one of two setups:
For Option B, don't pick "Use Claude's published identity" or "Register automatically". OSIR doesn't support either one.
Option A: signing in happens inside the conversation. The first time your assistant needs an
authenticated tool, it starts a device login: you get a link to auth.osir.com and a short code,
you approve in your browser, and the assistant continues with a session scoped to that
conversation. Sessions are deliberately short-lived (they expire after ~30 minutes of inactivity,
8 hours maximum) and end instantly when you say "log me out" — so a connected chat never holds
standing access to your domains, servers, and billing.
The same URL works in any MCP client that supports a remote (streamable HTTP) server and can drive the in-chat device login.
Self-hosting note:
/mcp/oauthalways requires OAuth: it returns401with an RFC 9728 challenge. The URL-only/mcp/httpneedsMCP_OAUTH_CHALLENGE_ENABLED=false. If you leave that at its default (true), every MCP path requires OAuth. Session lifetimes are tunable viaMCP_SESSION_IDLE_MINUTESandMCP_SESSION_MAX_HOURS.
Want to host your own instance or develop against the code? Requires Java 21; Gradle is bundled via the wrapper.
Copy .env.example to .env and adjust if you're pointing at your own backend/KeyCloak.
Everything defaults to the public OSIR endpoints, so the servers run out of the box.
Add to your client's MCP config (e.g. claude_desktop_config.json):
Restart the client and the OSIR tools appear. Then just ask:
"Is pizzashqip.al available? If not, suggest alternatives." "List all my domains and show which expire in the next 30 days." "Add an A record pointing example.al to 203.0.113.10 and a CNAME for www."
Most operations need authentication — ask the assistant to "log me in to OSIR using the device flow" and it walks you through browser-based OAuth (KeyCloak, RFC 8628).
Tasks stream over POST /a2a/stream (SSE), support multi-turn input-required flows, and the
orchestrator decomposes complex requests across agents (max 15 steps).
Domains — availability, registration, renewal, transfer, lock/unlock, auto-renew, WHOIS privacy, nameservers, AI-powered name suggestions. DNS — list/create/update/delete records. VPS — browse packages and locations, order, manage, panel login. Billing — balance, invoices, payments, fee previews, domain pricing. Contacts, Transfers, Hosts, Audit logs, Account profile & summary.
Full tool/skill catalog, example conversations, and end-to-end walkthroughs are in GUIDE.md.
106 tools, verified against the live server (tools/list on https://be.osir.com/mcp/http).
executeConfirmedAction.executeConfirmedAction.The provided docker-compose.yml, build-and-deploy.bat, and the CI workflow reference a
placeholder container registry (registry.example.com) — point them at your own.
See DEPLOYMENT.md for the production checklist (PostgreSQL, TLS, scaling).
All settings are environment variables with sensible defaults — nothing secret is committed.
See .env.example for the full list.
Both servers depend on common, so a backend operation is implemented once and exposed two ways.
orderVps alone hands over a server with no operating system.executeConfirmedAction來源:README.md,提交 b3ee11b
Add domain prefixes
addPrefixToDomain: Generate domain suggestions by adding prefixes to a base name.
langname必填tldsmaxResultsvocabularyAdd SSH key
addSshKey: Store an SSH public key on your account so it can be injected into VPS installs. Idempotent: storing a key you already have returns the existing one instead of creating a duplicate, so it is safe to call before every order. Returns the key id to pass to orderVps or buildVpsInstance. Requires authentication.
name必填publicKey必填sessionKeyAdd domain suffixes
addSuffixToDomain: Generate domain suggestions by adding suffixes to a base name.
langname必填tldsmaxResultsvocabularyInstall OS on VPS
buildVpsInstance: Stage an operating system install (or reinstall) on a VPS instance. DESTRUCTIVE: ERASES ALL DATA on the server, including any deployed application, and cannot be undone. The install is asynchronous; afterwards poll getVpsInstanceDetails until buildState is COMPLETE. If an Osir app was deployed onto this instance, a rebuild erases it; re-attach it afterwards with osirAppDeployToVps. Never rebuild a box just to install an app runtime by hand. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
swaphostnamesshKeyIdsinstanceId必填sessionKeyoperatingSystemId必填Bulk domain suggestions
bulkDomainSuggestions: Generate domain suggestions for 1-10 keywords across 1-6 TLDs (hard cap), grouped by originating keyword. Typical flow: call listCategorizedTlds first to pick 3-6 TLDs, then this tool. Per-suggestion availability may be "available", "taken", or "unknown"; confirm "unknown" or premium-TLD names with checkDomainAvailability before recommending.
langtlds必填keywords必填maxResultsCancel domain transfer
cancelTransfer: Stage cancellation of a pending domain transfer. DESTRUCTIVE and irreversible once executed. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
domain必填sessionKeyChange VPS payment term
changeVpsPaymentTerm: Stage a change of the payment term (billing cycle) for a VPS instance. Affects what you are billed. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
instanceId必填sessionKeypaymentTerm必填Check device login status
checkDeviceLoginStatus: Poll for device login completion. Call this after loginWithDevice() once you have opened the verification URL and signed in. Required: deviceCode (the device_code returned by loginWithDevice). On success returns a sessionKey; pass it as the sessionKey argument on every subsequent authenticated tool call.
deviceCode必填Check domain availability
checkDomainAvailability: Check if a domain name is available for registration, with price. No authentication required; anonymous callers get list pricing, authenticated callers get their account pricing. Required: domain (e.g., 'example.com')
domain必填sessionKeyCheck host availability
checkHostAvailability: Check if a host/glue record name is available for creation. Requires authentication. Returns whether the hostname is free; call before createHost.
hostname必填sessionKeyCheck keyword availability
checkKeywordAvailability: Check keyword availability across all supported TLDs and registries with detailed per-domain results. Use checkKeywordAvailabilitySummary instead when you only need counts; it is faster.
tldskeyword必填registriesKeyword availability summary
checkKeywordAvailabilitySummary: Check keyword availability across TLDs and registries. Summary statistics only (no per-domain results), faster than checkKeywordAvailability.
tldskeyword必填registriesCount my VPS instances
countMyVpsInstances: Get the total count of VPS instances owned by the authenticated user. Requires authentication.
sessionKeyCreate account
createAccount: Create a new OSIR customer account; step 1 of onboarding, no authentication required. The contact must be the PRINCIPAL's real ICANN registrant contact (the human or business the account is for), never the AI agent itself. Sends a verification email; complete via verifyAccount with the emailed code. While PENDING_VERIFICATION the account can search, quote and fund; billable actions need ACTIVE. Calling again for a PENDING account re-sends the verification email.
email必填contact必填passwordagentNameaccountType必填agentVendortermsVersion必填acceptedTerms必填principalReferenceCreate contact
createContact: Create a new contact for use with domain registrations. Requires authentication. Returns the created contact including its id for assignment to domains.
city必填email必填phone必填statecountry必填street1必填street2lastName必填firstName必填postalCode必填sessionKeyorganizationCreate DNS record
createDnsRecord: Create a new DNS record for a domain. Requires authentication. For newly registered domains the zone is initialized automatically if missing. Returns the created record including its id for later updates or deletion.
ttlname必填type必填domain必填content必填prioritysessionKeyCreate host record
createHost: Create a new host/glue record, e.g. for custom nameservers like 'ns1.example.com'. Requires authentication. Check the name first with checkHostAvailability. Returns the created host record.
hostname必填sessionKeyipAddresses必填Create mailbox
createMailbox: Stage creation of a paid mailbox on a mail-enabled domain. BILLABLE: deducts from account balance; get a quote with getMailboxQuote and confirm the price with the user first. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve. The result of the confirmed action contains the generated password EXACTLY ONCE; it can never be retrieved again, so show it to the user immediately (they can change it later with setMailboxPassword). Also share the client settings from the result (IMAP/SMTP/webmail).
termdomain必填localPart必填packageId必填sessionKeyCreate payment session
createPaymentSession: Stage a Stripe checkout session to add funds to the account balance. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve. The executed result includes checkoutUrl (hand it to the human to pay) and expiresAt; then poll getPaymentTransactions until the balance credit appears.
amount必填currencysessionKeyDelete contact
deleteContact: Stage deletion of a contact. DESTRUCTIVE; fails if the contact is assigned to active domains. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
contactId必填sessionKeyDelete DNS record
deleteDnsRecord: Stage deletion of a DNS record. DESTRUCTIVE and irreversible once executed. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
domain必填recordId必填sessionKeyDelete host record
deleteHost: Stage deletion of a host/glue record. DESTRUCTIVE and irreversible once executed. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
hostname必填sessionKeyDelete mailbox
deleteMailbox: Stage deletion of a mailbox. The mailbox stops working immediately and its data is destroyed after a 14-day grace period. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
mailboxId必填sessionKeyDelete SSH key
deleteSshKey: Stage removal of an SSH key from your account. This does not affect servers already built with it, and the key can simply be added again. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
keyId必填sessionKeyDelete VPS instance
deleteVpsInstance: Stage deletion/cancellation of a VPS instance. DESTRUCTIVE and irreversible. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
instanceId必填sessionKeyEnable mail domain
enableMailDomain: Enable email hosting on a domain you own. Free; mailboxes are what cost money. If the call fails with a DNS conflict (an existing SPF or MX record), ask the user for explicit consent, then re-call with spfMergeConfirmed=true and/or takeoverConfirmed=true. Requires authentication.
domain必填dnsModesessionKeyspfMergeConfirmedtakeoverConfirmedExecute confirmed action
executeConfirmedAction: Execute a previously staged destructive or financial action after user approval. The action expires after 5 minutes and can only be executed once.
actionId必填sessionKeyFund balance with a shared payment token
fundBalanceWithSharedPaymentToken: Stage adding funds to the balance by charging a Stripe Shared Payment Token the customer granted to OSIR. Use when a purchase (registerDomain, renewDomain, transferDomain, orderVps) failed for insufficient funds: that error tells you the networkId to mint against and both amounts. Mint the token for the GROSS and pass the NET as creditCents. Tokens are single-use. Requires authentication. Returns an actionId; tell the user what the card will be charged, then call executeConfirmedAction with the actionId if they approve. If this fails in any way you cannot fix by minting a fresh token, fall back to createPaymentSession and give the user the checkout URL.
currencysessionKeycreditCents必填descriptionmaxChargeCentssharedPaymentToken必填Generate domain suggestions
generateDomainSuggestions: Generate domain name suggestions based on keywords. This is the preferred suggestion tool for a single keyword; use it over suggestAlternatives. Returns suggested names with availability.
langname必填tldsmaxResultsuseNumbersGet account balance
getAccountBalance: Get the current account balance for the authenticated user. Requires authentication.
sessionKeyGet account summary
getAccountSummary: Get a comprehensive summary of the user's account: profile, balance, domain count, VPS count, and pending transfers. Requires authentication.
sessionKeyGet authentication status
getAuthStatus: Check whether the current session is authenticated. Returns authenticated status and token expiry. Optional: sessionKey (from checkDeviceLoginStatus).
sessionKeyGet contact
getContact: Get detailed information about a specific contact. Requires authentication. Get the contactId from listContacts. Returns name, email, phone, organization, and address.
contactId必填sessionKeyGet domain contacts
getContactsForDomain: Get all contacts (registrant, admin, tech, billing) assigned to a domain. Requires authentication. Returns the contact assigned to each role.
domain必填sessionKeyGet dedicated server catalog
getDedicatedServerCatalog: Get all available dedicated server configurations with pricing and specifications. No authentication required.
無需輸入參數。
Get DNS record
getDnsRecord: Get details of a specific DNS record by id. Requires authentication. Get the recordId from listDnsRecords. Returns the record's name, type, content, TTL, and priority.
domain必填recordId必填sessionKeyGet domain audit trail
getDomainAuditTrail: Get the audit trail (history of all changes) for a specific domain. Requires authentication.
domain必填sessionKeyGet domain extensions
getDomainExtensions: Get all available domain extensions (TLDs) with pricing information. No authentication required.
無需輸入參數。
Get domain details
getDomainInfo: Get registry (EPP) state plus account settings for one domain: status, nameservers, lock state, auto-renew, privacy, creation/expiry dates, premium/expired/redemption info. Dates are null while a registration is still pending at the registry; autoRenew is omitted for transferredOut domains.
domain必填sessionKeyGet domain pricing
getDomainPricing: Get pricing for domain extensions from the product catalog. Requires authentication.
extensionsessionKeyGet hosting bundle
getHostingBundle: Get the hosting options and exact prices for a specific domain: recommended VPS packages (cheapest first), email plans, web forwarding, and app/site deployment. No authentication required. Call this ONCE after a successful availability check or registration to make a concise hosting offer; do not repeat the offer in the same conversation. Prices are display prices; the authoritative amount is computed at purchase.
domain必填List host records
getHostsForDomain: List all host/glue records associated with a domain. Requires authentication. Returns each host name and its IP addresses.
domain必填sessionKeyGet invoice details
getInvoiceDetails: Get detailed information about a specific invoice including line items. Requires authentication.
invoiceId必填sessionKeyGet invoice statistics
getInvoiceStatistics: Get summary statistics of invoices: total paid, pending, overdue amounts. Requires authentication.
sessionKeyGet mail DNS records
getMailDnsRecords: Get the DNS records a mail domain needs (MX, SPF, DKIM, ...), for customers managing DNS externally. Requires authentication.
domain必填sessionKeyGet mailbox quote
getMailboxQuote: Get a display-only price quote for a mailbox plan. The backend re-derives the authoritative price at purchase. Requires authentication.
termpackageId必填sessionKeyGet mailbox usage
getMailboxUsage: Get disk usage per mailbox in bytes, for quota display alongside the plan's quotaBytes. Requires authentication.
sessionKeyGet my audit logs
getMyAuditLogs: Get recent audit logs for the authenticated user across all services. Requires authentication.
pagesizesessionKeyGet my profile
getMyProfile: Get the authenticated user's profile and account information including name, email, organization, balance, and domain/VPS counts. Requires authentication.
sessionKeyGet payment transactions
getPaymentTransactions: Get payment transaction history for the authenticated user. Requires authentication.
pagesizesessionKeyGet product catalog
getProductCatalog: Get the complete product catalog including domain extensions, VPS packages, and dedicated servers. No authentication required.
無需輸入參數。
Get recent activity
getRecentActivity: Get the most recent activity across all domains and services for the user. Requires authentication.
sessionKeyGet transfer quote
getTransferQuote: Get a transfer price quote for a domain. Requires authentication. Returns transfer price, currency, extension years, and new expiration date. Call before initiateTransfer to show the user the cost.
domain必填sessionKeyGet transfer status
getTransferStatus: Check the current status of a domain transfer. Requires authentication. Returns status, request date, current registrar, and expected completion.
domain必填sessionKeyGet VPS instance details
getVpsInstanceDetails: Get detailed information about a specific VPS instance including resource usage. Requires authentication.
instanceId必填sessionKeyGet VPS package details
getVpsPackageDetails: Get detailed information about a specific VPS package including all pricing tiers. Requires authentication. For anonymous browsing use listVpsPackages, which already includes per-term pricing.
packageId必填sessionKeyInitialize DNS zone
initializeDnsZone: Initialize (create) the DNS zone for a domain. NOT needed after registerDomain, which initializes the zone automatically. Use only for pre-existing domains without a zone (e.g. after a transfer, or if registration opted out with initializeDnsZone:false). Safe on existing zones, it will not overwrite records. Requires authentication.
domain必填sessionKeyInitiate domain transfer
initiateTransfer: Starts a transfer for a domain already prepared at the losing registrar (unlocked, auth code in hand). transferDomain (domain tools) stages transfer + registrant assignment in one step; use that when the user gives you contact details. Deducts from account balance. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
domain必填authCode必填sessionKeyList categorized TLDs
listCategorizedTlds: List TLDs from the OSIR catalog that have category and audience metadata, with registration and renewal prices as decimal strings (e.g. '10.39'). Use it to pick 3-6 relevant TLDs before calling bulkDomainSuggestions. Filters: price cap, exclude ccTLDs/restricted/premium, registry. Returns unranked candidates with categories, audience, prices, and flags. No auth required.
registryexcludeCcTLDsexcludePremiummaxRegisterPriceexcludeRestrictedList contacts
listContacts: List all contacts for the authenticated user, optionally filtered by a search term. Requires authentication. Returns each contact with its id for use in getContact, updateContact, deleteContact, or domain registration.
searchsessionKeyList DNS records
listDnsRecords: List all DNS records for a domain. Requires authentication. Returns each record with its id, name, type, content, TTL, and priority; use the record id with getDnsRecord, updateDnsRecord, or deleteDnsRecord.
domain必填sessionKeyList invoices
listInvoices: List invoices for the authenticated user with optional status filtering and pagination. Requires authentication.
pagesizestatussessionKeyList mail domains
listMailDomains: List your domains that are enabled for email hosting, with status (PENDING_DNS or ACTIVE) and DNS mode. Requires authentication.
sessionKeyList mail plans
listMailPlans: List available email mailbox plans with quotas and prices (monthly and annual, in cents). Requires authentication. Always quote prices from here, never from memory.
sessionKeyList mailboxes
listMailboxes: List your mailboxes with plan, payment term, status, and next renewal date. Requires authentication.
sessionKeyList SSH keys
listMySshKeys: List the SSH keys stored on your account, with their ids and SHA256 fingerprints. Use this to check whether a key is already stored and to get the ids to pass to orderVps or buildVpsInstance. Requires authentication.
sessionKeyList my VPS instances
listMyVpsInstances: List all VPS instances owned by the authenticated user. An instanceId from this list is what osirAppDeployToVps takes to put an app on a server the user already owns, at no cost. Requires authentication.
sessionKeyList pending transfers
listPendingTransfers: List all pending incoming (gaining) domain transfers. Requires authentication. Returns each transfer with its status, request date, current registrar, and expected completion.
sessionKeyList my domains
listUserDomains: List all domains owned by the authenticated user. No parameters required. Must be authenticated first.
sessionKeyList VPS locations
listVpsLocations: List available VPS hosting locations (cities/countries) with available packages. No authentication required.
無需輸入參數。
List VPS OS templates
listVpsOsTemplates: List operating system templates available to install. Requires authentication. Pass EXACTLY ONE of packageId (to pick an operatingSystemId for orderVps, so the server arrives with an OS on it) or instanceId (to pick a template for reinstalling via buildVpsInstance). The two are not interchangeable: the available set depends on the package. Template ids change over time, so always resolve an id here rather than reusing a remembered or hardcoded one.
packageIdincludeEolinstanceIdsessionKeyList VPS packages
listVpsPackages: List available VPS hosting packages with pricing, specs, and locations. No authentication required.
無需輸入參數。
Lock a domain
lockDomain: Enable registrar lock on a domain to prevent unauthorized transfers.
domain必填sessionKeyLog in to VPS panel
loginToVpsPanel: Generate a one-time login URL to the VPS control panel (VirtFusion) for managing the server. Requires authentication.
instanceId必填sessionKeyStart device login
loginWithDevice: Start a device authorization login (RFC 8628). Returns a verificationUri and userCode. Open the URI in your browser, enter the code, and sign in with your OSIR credentials. Then call checkDeviceLoginStatus with the returned deviceCode to complete login. No parameters required.
無需輸入參數。
Log out
logout: Log out: revokes the session's tokens at the identity provider immediately. Optional: sessionKey (from checkDeviceLoginStatus); pass it to end that conversation session.
sessionKeyOrder a VPS
orderVps: Stage an order for a new VPS instance; deducts from account balance. If this server is being ordered to host an Osir app, do NOT configure it by hand afterwards: deploy the app with osirAppDeploy, then put it on the box with osirAppDeployToVps. Requires authentication. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
hostname必填packageId必填sshKeyIdssessionKeypaymentTerm必填operatingSystemIdCreate app upload ticket
osirAppCreateUpload: Create an upload ticket for deploying app source code to Osir. Returns an uploadTicket, a putUrl, and instructions to zip the project and upload it. After uploading, call osirAppDeploy with the uploadTicket. Requires authentication.
sessionKeyDelete an app
osirAppDelete: Stage deletion of an Osir app. DESTRUCTIVE and irreversible: removes its microVM, image, route, and data. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve. Requires authentication.
appId必填sessionKeyDeploy an app
osirAppDeploy: Deploy an app to Osir (free tier) and get a live HTTPS URL; the app runs isolated in a microVM. Deploying an existing app name redeploys it (new version) and applies any secrets set via osirAppSetSecret. A plain static website (HTML/CSS/JS with no framework or build step) is also supported: it is auto-detected and served directly; pass language 'node' for it. To put the app on the user's OWN VPS, server or production box instead, deploy it here first and then call osirAppDeployToVps - never SSH into the box or write an install script. Once an app is on the user's own VPS, redeploying HERE under the same name is how you update it: the platform re-ships it to the box and keeps its domain. Requires authentication.
name必填regionlanguage必填sessionKeyuploadTicket必填Deploy app to the user's own VPS
osirAppDeployToVps: Deploy a live Osir app onto the user's own VPS / server / production box, moving it off the shared free tier. Use this INSTEAD of SSH, a provisioning or install script, nginx/systemd/TLS configuration, or any manual server setup - the platform ships the app to the box itself over its own deploy key, so the assistant needs no shell access and no outbound SSH. This is the ONLY supported way to put an app on a user's own server or a custom domain. TWO WAYS IN. (1) The user already owns a VPS: pass instanceId (from listMyVpsInstances) and NO packageId - this ATTACHES the app to that server, SPENDS NOTHING and needs no confirmation. (2) No server yet: pass packageId (from listVpsPackages) and the call stages a VPS order (COSTS MONEY): returns an actionId; present the price/summary to the user and call executeConfirmedAction only if they approve. Before staging any order this tool checks whether the user ALREADY has a box for this app (its C2 binding, then their own VPS list) and attaches that instead - a retry after a failed move never buys a second server. After the move starts the platform ships the app onto the box server-side, which takes about two minutes; watch it with osirAppStatus ('ownedMove'). Calling this tool again while a move is still running just reports its progress, and calling it after one FAILED retries the ship - unless osirAppStatus says the VPS refused the Osir deploy key or its web ports are taken: then retry only after the user has made the changes that message lists. If the result status is BUILDING or BUILD_FAILED, follow its nextStep. Requires authentication.
domainappName必填packageIdinstanceIdsessionKeyGet app source
osirAppGetSource: Get a short-lived signed download URL for an Osir app's current source zip. Use this to make edits to a deployed app without the user re-attaching the project: download, patch the files, then osirAppCreateUpload (PUT the new zip) and osirAppDeploy under the SAME name; the platform rebuilds and, for owned-tier apps, auto-ships the new version to the user's box. Requires authentication.
appName必填sessionKeyList deployed apps
osirAppList: List the authenticated user's deployed Osir apps with their live URLs and status. Requires authentication.
sessionKeyGet app logs
osirAppLogs: Get recent logs from an Osir app's microVM ('why is my app broken?'). Requires authentication.
tailappId必填sessionKeyProvision app database
osirAppProvisionDatabase: Provision a managed Postgres database for an Osir app. The connection string is stored as the app's DATABASE_URL secret (encrypted, injected on the next osirAppDeploy) and is NEVER returned. Requires authentication.
appId必填enginesessionKeySet app secret
osirAppSetSecret: Set an environment secret for an Osir app (e.g. DATABASE_URL, API_KEY). The value is stored encrypted and injected as an env var on the next osirAppDeploy of the app; it is NEVER returned or logged. Requires authentication.
key必填appId必填value必填sessionKeyGet app status
osirAppStatus: Get an Osir app's current status, live URL, and health ('is my app working?'). If the status is BUILD_FAILED, 'recentErrors' explains why so you can fix the source and redeploy. 'qa' is an independent black-box check of the LIVE app after deploy: qa.status PASSED means it loaded and worked; FAILED means it deployed but didn't actually work, and qa.findings lists the problems so you can fix and redeploy. 'ownedMove' tracks a move onto the user's own VPS, which leaves tier and status unchanged while it runs: state MOVING (in progress, stage says where, ~2 minutes in total), MOVED (done - tier reads 'owned'), FAILED or REFUSED (follow this result's message: usually call osirAppDeployToVps again to retry, which never orders a second server; but when the VPS refused the Osir deploy key or its web ports are taken, the user must fix the VPS first, and the message says how). Requires authentication.
appId必填sessionKeyCreate site design brief
osirSiteDesignBrief: Step 1 of designing a NEW website with OSIR. Validates the brief and returns 'systemPrompt', the structured design brief and constraints YOU must then follow to write one complete self-contained HTML page, plus 'editRules' for later revisions. Call it before osirSitePublish for a new site, then publish the finished page with osirSitePublish. No authentication needed.
pageJob必填audience必填whatItIs必填briefJsonbusinessName必填primaryAction必填Publish a website
osirSitePublish: Publish a single-page website to a live HTTPS URL on Osir (free tier). ANY complete HTML document works: the user's own site, a page designed in this chat, or one from the osirSiteDesignBrief flow. Calling again with the same name redeploys the new version. For MULTI-FILE sites (separate CSS/JS/images) use osirAppCreateUpload + osirAppDeploy with a zip instead. Then poll osirAppStatus until READY. If the app was moved to the user's own VPS, redeploying under the same name updates it there and keeps its domain. Requires authentication.
html必填name必填regionsessionKeydesignContractPay invoice
payInvoice: Stage payment of an outstanding invoice from account balance. Requires authentication. Returns an actionId; present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
invoiceId必填sessionKeyPreview payment fees
previewPaymentFees: Preview the fees that would be charged for a given payment amount. Requires authentication.
amount必填currencysessionKeyRegister a domain
registerDomain: Stage registration of a new domain name. Deducts from account balance. The DNS zone is initialised automatically after registration (asynchronously; if createDnsRecord right after registration reports a missing zone, retry after a few seconds). Pass initializeDnsZone:false to opt out. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
years必填domain必填autoRenewsessionKeynameservers必填registrantInfo必填initializeDnsZoneprivacyProtectionRenew a domain
renewDomain: Stage renewal of a domain for a specified number of years. Deducts from account balance. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
years必填domain必填sessionKeySet mailbox password
setMailboxPassword: Set a new password on a mailbox. Never log or store the password. Requires authentication.
password必填mailboxId必填sessionKeySpin domain words
spinDomainWords: Generate domain suggestions by spinning/replacing words with similar alternatives.
langname必填tldspositionmaxResultssimilaritySuggest alternative domains
suggestAlternatives: Suggest alternative domain names if the requested one is unavailable. Legacy; prefer generateDomainSuggestions.
limitdomain必填sessionKeyTransfer a domain
transferDomain: Stage transfer of a domain from another registrar to OSIR. Deducts from account balance. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
domain必填authCode必填sessionKeyregistrantInfo必填Unlock a domain
unlockDomain: Stage removal of registrar lock from a domain to allow transfers. DESTRUCTIVE: reduces domain security. Returns an actionId: present the summary to the user, then call executeConfirmedAction with the actionId if they approve.
domain必填sessionKeyUpdate contact
updateContact: Update an existing contact's information. Requires authentication. Only the fields you provide are changed; omitted fields keep their current values. Get the contactId from listContacts. Returns the updated contact.
cityemailphonestatecountrystreet1street2lastNamecontactId必填firstNamepostalCodesessionKey另有 1 個Update DNS record
updateDnsRecord: Update an existing DNS record. Requires authentication. Only the fields you provide are changed; omitted fields keep their current values. Get the recordId from listDnsRecords. Returns the updated record.
ttlnametypedomain必填contentpriorityrecordId必填sessionKeySet domain auto-renew
updateDomainAutoRenew: Enable or disable auto-renewal for a domain.
domain必填enabled必填sessionKeySet WHOIS privacy
updateDomainPrivacy: Enable or disable WHOIS privacy protection for a domain.
domain必填enabled必填sessionKeyUpdate nameservers
updateNameservers: Update nameservers for a domain. Replaces the current nameserver set with the given list.
domain必填sessionKeynameservers必填Validate domain name
validateDomainName: Validate if a domain name format is correct. No authentication required.
domain必填Verify account
verifyAccount: Verify a newly created OSIR account with the code from the verification email; step 2 of onboarding, no authentication required. The code is the same token as the email link, so the principal can relay it to their agent. On success the account becomes ACTIVE and billable actions are unlocked. If the code expired, call createAccount again with the same email to get a fresh one.
code必填accountId必填Verify mail DNS
verifyMailDns: Check that a mail domain's DNS records resolve; activates the domain for email when all records are found. Returns any still-missing records. Requires authentication.
domain必填sessionKey已滿足適用檢查項的 100%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
# Run the MCP server (port 8081)./gradlew :mcp-server:quarkusDev
# Run the A2A server (port 8082)./gradlew :a2a-server:quarkusDev{ "mcpServers": { "osir": { "url": "http://localhost:8081/mcp/sse" } }}# Discover the agentscurl http://localhost:8082/.well-known/agents | jq '.[].name'
# Send a task (the platform routes it to the right specialist)curl -X POST http://localhost:8082/a2a \ -H "Content-Type: application/json" \ -H "Authorization: Bearer YOUR_TOKEN" \ -d '{ "jsonrpc": "2.0", "id": "1", "method": "tasks/send", "params": { "message": { "role": "user", "parts": [{"type": "text", "text": "Check if example.com is available"}] } } }'./gradlew build # build all modules + run tests./gradlew test # tests only
docker-compose up -d # run both servers in containerscommon/ Shared library — 12 services, 9 REST clients, ~174 modelsmcp-server/ Quarkus MCP server — 106 tools, 11 prompts, 2 resourcesa2a-server/ Quarkus A2A server — 9 agents, 89 skills, JSON-RPC, JPA task persistence