mDiv.pl ma API dla agentów AI.
26 narzędzi MCP. OAuth 2.1 + PKCE.
Jeśli jesteś agentem AI (Claude Desktop / Code, Cursor, ChatGPT z MCP, Gemini, własny agent na LangChain / OpenAI Agents SDK / Anthropic Agent SDK) albo deweloperem konfigurującym integrację — mDiv.pl udostępnia własny serwer w standardzie Model Context Protocol. Pozwala wyceniać i kupować usługi mDiv oraz zarządzać infrastrukturą hostingową klienta (domeny, DNS, bazy, SSL, instalacja WordPress) — w pełni programatycznie, z granularną autoryzacją.
https://mcp.mdiv.pl/api/mcphttps://moje.mdiv.pl/.well-known/oauth-authorization-serverStatus: beta zamknięta
Zgłoszenie udziału: formularz kontaktowy. Bezpłatnie. Po launchu publicznym (Q3 2026): sandbox bezpłatny dla wszystkich, beta/full w cenie pakietów mBiznes/mPro.
Quick start
Przykład: użytkownik w Claude Desktop pisze „Zainstaluj WordPress na website X". Agent wykonuje sekwencję wywołań MCP w ~60–90 sekund.
- 1
list_my_websites()— znajdź website_id - 2
install_wordpress({ website_id })→ { job_id, status: queued, poll_url } (<200 ms) - 3
get_job_status({ job_id })— polling 3s → 5s → 10s, ~30–90 s do succeeded - ✓result.wp_admin_url — gotowy panel WordPress, zwracany użytkownikowi
Konfiguracja klienta MCP:
{
"mcpServers": {
"mdiv": {
"type": "streamable-http",
"url": "https://mcp.mdiv.pl/api/mcp"
}
}
}Bezpieczeństwo
OAuth 2.1 + PKCE (S256)
Brak credentials w środowisku agenta. Plain code_challenge_method odrzucone zgodnie z RFC. Dynamic Client Registration (RFC 7591).
Granularne scope'y (33)
websites/domains/databases/email/dns/ssl/apps/jobs/files/backups/commerce read/write/delete. Zasada: :write implies :read, :delete jest osobny.
Two-step delete
Każde delete_* wymaga dwóch wywołań: preview_* zwraca impact + preview_token (TTL 10 min, single-use, bound do user/resource), drugie wywołanie wymaga confirm=true.
Anomaly detection
Każdy mutating call jest auditowany. Niewzorowe wzorce (np. seria delete) podnoszą flagę i potencjalnie pauzują token do potwierdzenia administratora.
Weekly summary email
Klient dostaje cotygodniowe podsumowanie: jakie operacje wykonał agent, jakie tokeny aktywne, co zostało zmienione.
Rate limit + idempotency
60 req/min default, 5 req/min dla install ops. Idempotency-Key w 24h oknie zapobiega podwójnemu wykonaniu mutacji.
Pełna polityka: https://mdiv.pl/docs/ai-deploy/security-policy (12 sekcji).
Tier-y AI Deploy
Każde konto mDiv.pl ma jeden z czterech tier-ów. Klient zaczyna od sandbox, awansuje po 1–2 tygodniach testów (decyzja administratora mDiv).
| Tier | Zakres | Detale |
|---|---|---|
none | AI Deploy wyłączone (default) | Wszystkie wywołania write zwracają 403 AI_DEPLOY_NOT_ENABLED. Klient musi poprosić o dostęp. |
sandbox | Read-only | Tylko narzędzia *_read i list_*. install_*, delete_*, set_dns_records → 403 AI_DEPLOY_TIER_TOO_LOW. |
beta | Pełne ops, limit 500/dzień | Wszystkie operacje na pakietach ai_deploy_eligible. Dzienny limit 500 mutujących wywołań na konto. |
full | Bez ograniczeń ponad limity pakietu | Pełen dostęp. Tylko fizyczne limity pakietu (liczba domen, baz, ruch). |
Narzędzia MCP (26)
13 commerce (zakup usług) + 13 operacyjnych (zarządzanie infrastrukturą). Poniżej najczęściej wywoływane — pełna lista i schematy parametrów w autorytatywnym manifeście: https://mcp.mdiv.pl/api/mcp
list_productscommerce:readKatalog usług (hosting/opieka/programowanie)
prepare_checkoutcommerce:writeTworzy checkout intent (pre-confirm)
list_my_websiteswebsites:readStrony WWW na koncie klienta
install_wordpressapps:installAsync (job_id w <200ms, ~30–90s wykonanie)
request_sslssl:writeAsync Let's Encrypt (15–60s)
set_dns_recordsdns:writeBulk DNS (A/AAAA/CNAME/MX/TXT/NS/SRV/PTR)
add_domaindomains:writePrzypina domenę do website
create_databasedatabases:writeDB + user, hasło zwracane jeden raz
Pozostałe 18 narzędzi (m.in. list_my_subscriptions, list_my_invoices, list_my_databases, get_job_status, preview_delete_domain, delete_domain) — w manifeście oraz pod /docs/ai-deploy/user-guide.
FAQ
Pod jakim adresem działa serwer MCP mDiv.pl?expand_more
Endpoint: https://mcp.mdiv.pl/api/mcp. Transport: Streamable HTTP, JSON-RPC 2.0. Discovery OAuth: https://moje.mdiv.pl/.well-known/oauth-authorization-server.
Jak agent AI uwierzytelnia się do mojego konta?expand_more
Dwie opcje. (1) OAuth 2.1 + PKCE z S256 (plain rejected per RFC) — agent przekierowuje użytkownika na /oauth/authorize, dostaje token z wybranymi scope'ami. (2) Personal API Token w formacie mpt_<64hex>, wystawiany przez klienta na /account/api-tokens, przekazywany w nagłówku Authorization: Bearer.
Ile narzędzi MCP jest dostępnych?expand_more
26: 13 commerce (zakup usług) + 13 operacyjnych (zarządzanie infrastrukturą). Pełna lista jest na tej stronie oraz w autorytatywnym manifeście pod https://mcp.mdiv.pl/api/mcp.
Czy agent może usunąć moje dane przez pomyłkę?expand_more
Nie bez wyraźnej zgody. Wszystkie destrukcyjne operacje (delete_*) wymagają two-step pattern: krok 1 zwraca preview_token + impact (co zniknie), krok 2 wymaga preview_token + confirm=true. Token jest single-use, TTL 10 min, bound do (user_id, resource_type, resource_id).
Co zwraca install_wordpress?expand_more
Odpowiedź <200 ms z { job_id, status: 'queued', poll_url }. Faktyczna instalacja trwa ~30–90 s. Polling przez get_job_status z interwałem 3s → 5s → 10s. Terminal status: succeeded | failed | cancelled. result.wp_admin_url po sukcesie.
Co to jest tier?expand_more
Każde konto ma flagę ai_deploy: none / sandbox / beta / full. Sandbox to read-only. Beta umożliwia full ops z limitem 500/dzień. Full bez limitów ponad to, co fizycznie ogranicza pakiet. Tier ustawia admin mDiv po prośbie klienta.
Jakie są limity?expand_more
Sliding window per token: 60 req/min default, 5 req/min dla install ops (apps:install, ssl:write). Po wyczerpaniu 429 RATE_LIMITED z X-RateLimit-Limit, X-RateLimit-Remaining i Retry-After.
Jak zapobiec podwójnemu wykonaniu operacji?expand_more
Wszystkie mutating endpointy honorują Idempotency-Key w nagłówku (UUID dostarczany przez klienta). Replay z tym samym body w 24h → cached response z Idempotent-Replay: true. Inne body → 409 IDEMPOTENCY_KEY_REUSED. Endpointy z one-time secret (np. create_database) NIE cachują body — replay re-executes handler.
Machine-readable reference
Sekcja dla agentów / skryptów scrapujących stronę. Wszystkie dane poniżej są też dostępne w formie JSON-a pod /.well-known/mcp.json i /.well-known/agent.json.
Endpointy
- OAuth Authorization Server
- https://moje.mdiv.pl/.well-known/oauth-authorization-server
- OAuth Protected Resource
- https://mcp.mdiv.pl/.well-known/oauth-protected-resource
- Authorization endpoint
- https://moje.mdiv.pl/oauth/authorize
- Token endpoint
- https://moje.mdiv.pl/api/oauth/token
- Dynamic Client Registration
- https://moje.mdiv.pl/api/oauth/register
- Personal API Tokens
- https://moje.mdiv.pl/account/api-tokens
- llms.txt
- https://mdiv.pl/llms.txt
- llms-full.txt
- https://mdiv.pl/llms-full.txt
- Sitemap
- https://mdiv.pl/sitemap.xml
Scope'y (30)
Klasy zasobów: websites, domains, databases, email, dns, ssl, apps, jobs, files, backups, commerce — każda z trzema uprawnieniami (:read / :write / :delete) plus profile i offline_access. Zasada: :write implies :read; :delete wymaga osobnego scope. Pełen spis (i mapowanie na narzędzia) — w manifeście /.well-known/mcp.json.
Kody błędów (22)
Wszystkie błędy mają kształt { statusCode, error, message, code, details? }. Najczęściej spotykane poniżej; pełna referencja: docs/ai-deploy/error-codes.
| code | when |
|---|---|
AI_DEPLOY_NOT_ENABLED | Tier konta = none |
AI_DEPLOY_TIER_TOO_LOW | Tier=sandbox próbuje write/delete |
IDEMPOTENCY_KEY_REUSED | Ten sam klucz, inne body w 24h |
PREVIEW_TOKEN_MISSING | Brak tokenu w destructive call |
RATE_LIMITED | Przekroczony rate limit (60/min, install 5/min) |
Mutating semantics
- Idempotency-Key: nagłówek z UUID. Replay z tym samym body w 24h →
Idempotent-Replay: true. Inne body → 409 IDEMPOTENCY_KEY_REUSED. - Rate limit: sliding window per token. 60 req/min default, 5 req/min dla install ops. Po wyczerpaniu 429 RATE_LIMITED + Retry-After.
- Two-step delete: preview_* → preview_token (TTL 600s, single-use, bound to user/resource), drugie wywołanie wymaga preview_token + confirm=true.
- Long ops: install_wordpress, request_ssl zwracają natychmiast
{ job_id, status: 'queued', poll_url }. Polling przez get_job_status — interwał 3s → 5s → 10s.
Feedback po sesji integracyjnej: POST /api/v1/ai-deploy/feedback — szczegóły kontraktu w user-guide.
Hosting w Polsce, faktura VAT B2B. Kontakt ogólny: biuro@…. AI Deploy: ai-deploy@…. Powrót do strony głównej.