SingleFax kimlik doğrulama belgeleri
API anahtarları, MCP için OAuth ve devredilmiş Agent Auth.
Yapay zekâ ajanları ve geliştiriciler için kimlik doğrulama rehberi.
Ajanların SingleFax’ta kimlik doğrulaması. HTML kurulum sayfası: https://singlefax.com/agents
Bu dosya, /.well-known/oauth-authorization-server üzerindeki RFC 8414 üst verisinde belirtilen agent_auth.skill hedefidir.
SingleFax, kullanıcı onayı ve hizmet tarafından imzalanmış kimlik beyanlarıyla Auth.md anonymous ve service_auth kaydını destekler. Anonim kimlik bilgileri, onaydan önce hiçbir hesaba erişemez. Harici sağlayıcı ID-JAG’leri kabul edilmez. Eski Better Auth host/agent JWT akışı C yolunda ayrıca belgelenmiştir.
Auth.md kaydı ve belirteç değişimi
Hedef kitle: mevcut bir SingleFax hesabı adına işlem yapmak için kaydolan yapay zekâ ajanları. Her kayıt yönteminde hesap sahibinin oluşturduğu kayıt izni gereklidir. Geçerli kayıt belirteci olmayan genel istekler, kayıt oluşturulmadan reddedilir. OAuth issuer: https://api.singlefax.com/api/auth; kaynak: https://singlefax.com/mcp. Kayıt işlemi e-posta veya faks göndermez, ödeme almaz.
Desteklenen kayıt yöntemleri: anonymous ve service_auth. Kimlik bilgileri: identity_assertion ve Bearer access_token. Hesap sahibi SingleFax’a giriş yapar, istenen izinleri inceler ve ajanın verdiği altı haneli kodu girer. Desteklenen kapsamlar: fax:read, fax:draft, fax:send, inbox:read, credits:read ve credits:checkout. Varsayılan izinler fax:read ve credits:read; ek kapsamları açıkça isteyin.
- Hesap sahibi https://singlefax.com/dashboard/agent-access adresine giriş yapar, ajan adını ve izinleri seçer, açıkça bir kayıt belirteci oluşturur. Bu kısa ömürlü sır yalnızca bir kez gösterilir, on dakika sonra sona erer ve sadece bir ajan kaydedebilir. İlgili ajana verin. API üzerinden hazırlık,
POST https://singlefax.com/api/auth/agent/identity/manageadresinde{ "action": "enroll", "name": "My agent", "scopes": ["fax:read", "credits:read"] }ile hesap sahibinin birinci taraf tarayıcı oturumunu kullanır. Tarayıcı çerezleri ajanla asla paylaşılmaz. Kullanılmamış belirteçler aynı sayfadan iptal edilebilir. POST https://api.singlefax.com/api/auth/agent/identityileContent-Type: application/jsonve{ "type": "service_auth", "enrollment_token": "<owner-issued token>", "login_hint": "<enrolling owner email>" }kullanarak kaydolun. Yanıttaregistration_id, gizliclaim_token, sona erme zamanı veuser_code,verification_uriile beş saniyelik sorgu aralığını içerenclaimdöner. Onay öncesinde kimlik beyanı verilmez.- Alternatif olarak
{ "type": "anonymous", "enrollment_token": "<owner-issued token>" }ile kaydolun. Burada anonim sözcüğü herkese açık kayıt değil, sahiplenme öncesi kimlik bilgisini tanımlar. Hemen imzalıidentity_assertionveclaim_tokendöner. Bu ilk beyanı değiştirmek, hiçbir hesaba erişemeyen boş kapsamlı belirteç verir. OnayıPOST https://api.singlefax.com/api/auth/agent/identity/claimile{ "claim_token": "<secret>", "email": "<account email>" }kullanarak başlatın; dönenclaim_attemptdeğerini okuyun. - Kodu ayrı gösterin ve kullanıcı için
verification_uriaçın. URL gizli bir sahiplenme girişimi belirteci içerir; kodu URL’ye eklemeyin. Yalnızca kaydı başlatan doğrulanmış hesap onaylayabilir. Adı hesap sahibi belirler; kapsamlar daraltılabilir ama kayıt iznini aşamaz. E-posta ipucu ve sahiplenme e-postası aynı hesap sahibine ait olmalıdır. Kullanıcı reddedebilir. Sahiplenme on dakika sonra sona erer; yeni girişim eski bağlantıyı geçersiz kılar. Otomatik hesap oluşturulmaz. POST https://api.singlefax.com/api/auth/oauth2/tokenadresiniContent-Type: application/x-www-form-urlencodedvegrant_type=urn:workos:agent-auth:grant-type:claim&claim_token=<secret>&resource=https%3A%2F%2Fsinglefax.com%2Fmcpile sorgulayın.authorization_pending,slow_down(aralığı beş saniye artırın),expired_tokenveaccess_denieddurumlarını işleyin. Onayla birlikte opakaccess_token,token_type,expires_in,scope,identity_assertionveassertion_expiresdöner. Sahiplenme öncesi belirteç ve beyanlar onayda geçersiz olur.- Verilen kapsamlarla MCP veya A2A üzerinde
Authorization: Bearer <access_token>kullanın. Belirteçler en fazla bir saat geçerlidir. Yenilemek için aynı belirteç uç noktasındagrant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion=<identity_assertion>&resource=https%3A%2F%2Fsinglefax.com%2Fmcpkullanın. Yenileme belirteci verilmez. Kayıt iptal edilmedikçe beyanlar 30 güne kadar yeniden değiştirilebilir. EdDSA imzaları issuer’ın/jwksbilgisini kullanır;typ,oauth-id-jag+jwtdeğeridir;iss/audise issuer’a eşittir. - Tek bir belirteci
POST https://api.singlefax.com/api/auth/oauth2/revokevetoken=<access_token>&token_type_hint=access_tokenform gövdesiyle iptal edin. İşlem idempotenttir, beyan kullanılabilir kalır. KaydıPOST https://api.singlefax.com/api/auth/agent/identity/revoke, JSON{ "identity_assertion": "<identity_assertion>" }ile iptal edin; tüm erişim belirteçleri ve sonraki değişimler durur.
Hesap sahibi https://singlefax.com/dashboard/agent-access üzerinden izinleri inceleyip iptal edebilir. Kaydın iptali ilişkili tüm erişim belirteçlerini ve beyan yenilemelerini durdurur.
Sahiplenme ve onay yanıtları özeldir, önbelleğe alınamaz. Sahiplenme belirteçlerini, beyanları ve erişim belirteçlerini gizli tutun. Kayıt izni oluşturma, tüm API kopyalarında hesap sahibi başına sınırlıdır; aynı anda en fazla beş kullanılmamış etkin belirteç olabilir. Kayıt izni olmayan genel istekler, hesap sahibinin kayıt kotasını tüketmez. Eksik belirteç enrollment_required; süresi dolmuş, iptal edilmiş veya kullanılmış belirteç invalid_enrollment döndürür. Başarısız kayıt, kayıt belirtecini tüketmez. Pasif hazırlık taramalarında kayıt uç noktalarını denemeyin.
Keşif
Kaynak sunucu (MCP + API BFF): https://singlefax.com
GET https://singlefax.com/.well-known/oauth-protected-resource
GET https://singlefax.com/.well-known/oauth-protected-resource/mcp
Korunan kaynak üst verisi (RFC 9728): kök belge origin’i (resource https://singlefax.com); /.well-known/oauth-protected-resource/mcp, MCP sunucusunu (resource https://singlefax.com/mcp; WWW-Authenticate URL’sinin gösterdiği yer) tanımlar. İkisi de authorization_servers (issuer https://api.singlefax.com/api/auth) ve scopes_supported listeler. Belirteçleri https://singlefax.com/mcp için isteyin.
GET https://singlefax.com/.well-known/oauth-authorization-server
GET https://singlefax.com/.well-known/oauth-authorization-server/api/auth
Yetkilendirme sunucusu üst verisi issuer, authorization_endpoint, token_endpoint, registration_endpoint, jwks_uri, scopes_supported ve agent_auth içerir (skill buraya yönlendirir).
API origin’i https://api.singlefax.com aynı well-known belgelerini sunar.
A yolu. MCP OAuth (sohbet uygulamaları)
Cursor, Claude, ChatGPT, Codex ve VS Code için bu yolu kullanın.
- MCP
https://singlefax.com/mcpekleyin (Streamable HTTP). - 401 yanıtında
WWW-Authenticateokuyup yukarıdaki PRM’yi alın. - Dinamik istemci kaydı:
POST {issuer}/oauth2/register(PKCE S256, genel istemciler içintoken_endpoint_auth_method=none). {issuer}/oauth2/authorizeüzerinde yetkilendirme kodu + PKCE.- Belirteç:
{issuer}/oauth2/token. Authorization: BearerilePOST /mcp. Tipik belgedecreate_uploadçağırın, kullanıcıyauploadPageUrlverin, sonratoveuploadTokenilecreate_fax_draftçağırın.base64yalnızca çok küçük dosyalar içindir.uploadUrladresine PUT, yoldaki HMAC belirtecini kullanır; OAuth başlığı gerekmez. Özgün Word, Excel, PDF veya görseli gönderin, önceden PDF’ye dönüştürmeyin.
Kapsamlar: openid, profile, email, offline_access, fax:read, fax:draft, fax:send, inbox:read, credits:read, credits:checkout. AP2 bakiye alımı için credits:checkout kapsamını açıkça isteyin; her tahsilat ayrıca geçiş anahtarı onayı gerektirir.
Kimlik doğrulamasız POST /mcp yalnızca server/discover kabul eder. initialize, tools/list ve tools/call OAuth gerektirir.
A2 yolu. A2A (ajandan ajana)
Ajan kartı: GET https://singlefax.com/.well-known/agent-card.json (A2A 1.0). Uç nokta: POST https://singlefax.com/a2a (JSON-RPC: SendMessage, GetTask, CancelTask; 0.3 adları message/send, tasks/get, tasks/cancel de çalışır).
- A yoluyla aynı OAuth sunucusu, kapsamlar ve belirteçleri kullanın (kaynak
https://singlefax.com/mcpisteyin).Authorization: Bearergönderin./a2aüzerinde DPoP bağlı belirteç kabul edilmez. - Tek veri parçası gönderin:
{ "skill": "<skill id from the card>", "arguments": { ... } }. Serbest metin yorumlanmaz. - Faks ve numara becerileri Stripe Checkout bağlantısı döndürür (
checkoutUrl). A2A hesap bakiyesi veya plan sayfalarını asla harcamaz. Ödeme bekleyen taslak,input-requiredgörev durumundadır.GetTaskile sorgulayın.
AP2 bakiye alımı için credits:checkout isteyip satıcı uzantısını müzakere edin. İmzalı sepet ve ödeme talimatları, hesap sahibinin ayrı geçiş anahtarı onayı, Stripe Shared Payment Token kullanımı ve kayıtlarla doğrulanan belgeler https://singlefax.com/ap2.md adresindedir.
fax:read ile GetTask, faks taslaklarında teslimi, numara ödemelerinde ödeme/etkinleştirmeyi izler. Numara aktif olunca görev tamamlanır. Bakiye paketi ödemesinde siparişe bağlı sorgulanacak görev yoktur; ödeme sonrası bakiyeyi kontrol edin.
B yolu. API anahtarı (sunucu uygulamaları ve CLI)
- https://singlefax.com/dashboard/api-keys üzerinden anahtar oluşturun (
sf_live_…). - Ön ödemeli bakiye satın alın.
https://singlefax.com/api/v1/…(veyahttps://api.singlefax.com/api/v1/…) üzerindeAuthorization: Bearer sf_live_….- CLI:
SINGLEFAX_API_KEYilenpx @singlefax/cli send FILE --to +E164. Özgün Word, Excel, PDF veya görseli iletin; önceden PDF’ye dönüştürmeyin.
Dil örnekleri (curl, Node, Python, Go, PHP): https://singlefax.com/developers.md
OpenAPI: https://singlefax.com/openapi.json
C yolu. Better Auth devredilmiş host/agent JWT’leri
Devredilmiş yetkiler (validate_fax, send_fax, get_fax_status, get_credits, create_credit_checkout) cihaz onayı kullanır.
- Algoritmalar, uç noktalar, modlar ve onay yöntemleri için
GET https://api.singlefax.com/.well-known/agent-configurationokuyun. Agent Auth issuer değerihttps://api.singlefax.com, sonu/api/autholan OAuth issuer’dan farklıdır. JWT audience olarak bu origin’i kullanın. Desteklenen algoritmayla ayrı host ve ajan imza anahtarları üretin; özel anahtarları gizli tutun. - Önce host’u hazırlayın. Dinamik host kaydı kapalıdır. Hesap sahibi SingleFax’a giriş yapıp kendi birinci taraf tarayıcı oturumuyla
POST https://singlefax.com/api/auth/host/createçağırmalıdır (API origin eşdeğeri: https://api.singlefax.com/api/auth/host/create).{ "name": "My agent host", "public_key": <host public JWK>, "default_capabilities": [] }sağlayın. YanıttakihostIdkayıtlı host’u tanımlar. Boş varsayılanlar, yetkiler için ayrı onay gerekmesini sağlar. Alternatif olarakpublic_keyalanını atlayıp süreli, tek kullanımlıkenrollmentTokenalın; host sonra{ "token": <enrollment token>, "public_key": <host public JWK>, "name": "My agent host" }ilePOST https://api.singlefax.com/api/auth/host/enrollçağırır. Tarayıcı çerezlerini veya özel imza anahtarlarını ajanla asla paylaşmayın. POST https://api.singlefax.com/api/auth/agent/registerüzerinden kaydolun.Authorization: Bearer <signed host+jwt>ve JSON{ "name": "My agent", "mode": "delegated", "capabilities": ["validate_fax", "get_fax_status", "get_credits"], "preferred_method": "device_authorization", "force_approval": true }gönderin. JWT başlığıtyp: "host+jwt", desteklenenalgve varsa imzalayan JWK’ninkiddeğerini kullanır. İddialariss: <registered hostId>,aud: "https://api.singlefax.com", yenijti, günceliat, 60 saniye içindeexpveagent_public_key: <agent public JWK>içerir. Hazırlanan host anahtarıyla imzalayın. Tekrar kullanılan JWT kimlikleri reddedilir.- Kayıt yanıtı
agent_id,host_id, durum, verilen yetkiler ve gerektiğindeapprovalnesnesini içerir. Cihaz kodunu gösterip SingleFax sitesindekiverification_uri_completeadresini açın. Kullanıcı dönen doğrulama URL’sinde giriş yapıp onaylar. Kayıt, hazırlama ve onay hesap durumunu değiştirir; pasif tarayıcılar yalnızca keşif belgelerini okumalıdır. - Yeni host JWT’si (
iss: <host_id>) ileGET https://api.singlefax.com/api/auth/agent/status?agent_id=<registered id>sorgulayın. Onaydan sonra ajan JWT’lerini özel ajan anahtarıyla imzalayın: başlıktyp: "agent+jwt", desteklenenalg/kid; iddialariss: <host_id>,sub: <agent_id>,aud: "https://api.singlefax.com", günceliat, 60 saniye içindeexpve yenijti.Authorization: Bearer <signed agent+jwt>ve{ "capability": "get_credits", "arguments": {} }ilePOST https://api.singlefax.com/api/auth/capability/executeçağırın veya verilen başka yetkiyi belgelenmiş argümanlarıyla kullanın. Bunlar imzalı kanıtlardır; API anahtarı veya OAuth erişim belirteci değildir. - Kayıtlı ajana yeni cihaz kodu için
{ "agent_id": "<registered id>" }ve imzalı host JWT’siylePOST https://api.singlefax.com/api/auth/agent/device/codekullanın. Bu uç nokta ajan kaydedemez.POST https://api.singlefax.com/api/auth/agent/revokeüzerinden{ "agent_id": "<registered id>" }ve sahip host JWT’si veya hesap sahibi oturumuyla iptal edin.send_fax, geçiş anahtarıyla kullanıcı doğrulaması gerektirir; otonom değildir.
Buraya ID-JAG veya { "type": "anonymous" } POST göndermeyin. Bu kimlik türleri desteklenmez.
Makine ödemeleri (OAuth değildir)
Otonom ödeme, POST /api/v1/machine/faxes üzerinde Stripe Shared Payment Token veya Tempo USDC ile MPP HTTP 402 kullanır. Bkz. https://singlefax.com/mpp.md. Cursor SPT üretemez; Stripe Link CLI’yi /mcp yerine bu REST URL’sine yönlendirin. Tempo cüzdanları aynı URL’deki Tempo istemini öder.
HIPAA
MCP, MPP veya genel API üzerinden PHI göndermeyin. Kapsam dahilindeki kuruluşlar web sitesinde elektronik BAA ile HIPAA Secure modunu kullanır.