UCP Score for safwat-aljawf.com
95 out of 100, grade A: ready for UCP agents. All 5 missing points are in Conformance. 2 spec breaks on the status page aren't counted in the score.
Discovery 100Conformance 88Capabilities 100release 2026-04-08
"capabilities": {
"dev.ucp.shopping.checkout": [...]
}
"payment_handlers": {
"com.google.pay": [...]
}
"version": "2026-08-25"
"ucp": {
"version": "2026-08-25",
...
},
"keys": [ ... ] // beside "ucp", not inside it
Set the version to 2026-08-25 and publish your public keys as a root-level "keys" list. The older "signing_keys" field is still accepted, but "keys" is the one every verifier reads.
HTTPS, UCP profile reachable, AI bot access, llms.txt, sitemap.xml, Open Graph tags, Organization schema (JSON-LD), Mobile viewport metaShow
- HTTPS · Profile URL uses https://
- UCP profile reachable · HTTP 200
- AI bot access · robots.txt allows /.well-known/ucp
- llms.txt · Found at /llms.txt
- sitemap.xml · Found at /sitemap.xml
- Open Graph tags · og:title and og:type/url present
- Organization schema (JSON-LD) · Organization-typed JSON-LD detected
- Mobile viewport meta · <meta name="viewport"> present
Profile passes schema validation, Protocol version present and well-formed, Public keys publishedShow
- Profile passes schema validation · No structural errors
- Protocol version present and well-formed · Version: 2026-04-08
- Public keys published · Keys published at the top level
Capabilities declared, Checkout capability, Transports declaredShow
- Capabilities declared · 5 of 6 capability families detected: Checkout, Identity Linking, Cart Management, Order Management, Catalog. A family counts once however many namespaces or extensions declare it.
- Checkout capability · dev.ucp.shopping.checkout detected
- Transports declared · REST, MCP
The score measures what the profile declares across the three areas above. These break a rule in the spec that agents follow, so they can stop an agent before the score matters.
Files safwat-aljawf.com publishes for agents beyond its UCP profile, from our weekly look. Only what we found is listed.
/.well-known/api-catalog/.well-known/mcp/server-card.json/.well-known/ai-catalog.json/auth.md/.well-known/mcp.json/.well-known/api-catalog as served 1.6 KB
{"linkset":[{"anchor":"https://safwat-aljawf.com/.well-known/api-catalog","item":[{"href":"https://safwat-aljawf.com/.well-known/ucp"},{"href":"https://safwat-aljawf.com/.well-known/mcp.json"},{"href":"https://safwat-aljawf.com/.well-known/mcp/server-card.json"},{"href":"https://docs.salla.dev/2129395m0"},{"href":"https://docs.salla.dev/1724365m0"},{"href":"https://docs.salla.dev/1945677m0"},{"href":"https://docs.salla.dev/422688m0"},{"href":"https://docs.salla.dev/422610m0"}]},{"anchor":"https://safwat-aljawf.com/.well-known/ucp","service-desc":[{"href":"https://ucp.dev/services/shopping/openapi.json","type":"application/json"}],"service-doc":[{"href":"https://ucp.dev/2026-04-08/specification/overview/","type":"text/html"}],"status":[{"href":"https://safwat-aljawf.com/","type":"application/json"}]},{"anchor":"https://safwat-aljawf.com/mcp","service-desc":[{"href":"https://safwat-aljawf.com/.well-known/mcp/server-card.json","type":"application/json"}]},{"anchor":"https://docs.salla.dev/2129395m0","service-doc":[{"href":"https://docs.salla.dev/2129395m0","type":"text/html"}]},{"anchor":"https://docs.salla.dev/1724365m0","service-doc":[{"href":"https://docs.salla.dev/1724365m0","type":"text/html"}]},{"anchor":"https://docs.salla.dev/1945677m0","service-doc":[{"href":"https://docs.salla.dev/1945677m0","type":"text/html"}]},{"anchor":"https://docs.salla.dev/422688m0","service-doc":[{"href":"https://docs.salla.dev/422688m0","type":"text/html"}]},{"anchor":"https://docs.salla.dev/422610m0","service-doc":[{"href":"https://docs.salla.dev/422610m0","type":"text/html"}]}]}
/.well-known/mcp/server-card.json as served 498 B
{"$schema":"https://static.modelcontextprotocol.io/schemas/mcp-server-card/v1.json","version":"1.0","protocolVersion":"2025-06-18","serverInfo":{"name":"store","title":"Salla Store MCP Server","version":"1.0.0"},"description":"MCP server for managing shopping carts on a Salla store. Provides tools for cart generation, item management, and coupon application.","transport":{"type":"streamable-http","endpoint":"/mcp"},"capabilities":{"tools":{"listChanged":true},"logging":{}},"tools":["dynamic"]}
/.well-known/ai-catalog.json as served 538 B
{"specVersion":"1.0","host":{"displayName":"safwat-aljawf.com","documentationUrl":"https://docs.salla.dev"},"entries":[{"identifier":"urn:air:salla:safwat-aljawf.com:storefront-mcp","displayName":"Storefront MCP","description":"Browse products, manage carts, and start checkout on this store via MCP tools.","type":"application/mcp-server-card+json","url":"https://safwat-aljawf.com/.well-known/mcp/server-card.json","representativeQueries":["Search this store for a product","Add this product to my cart","Start checkout for my cart"]}]}
/auth.md as served 3.5 KB
# Salla auth.md
You are an agent. This service supports **OAuth 2.0 Authorization Code flow with PKCE (S256)** for agent registration and authentication: discover → authorize → authenticate → exchange → use → refresh → revoke. Follow the steps in order.
Examples use the base URL `https://accounts.salla.com`.
## Step 1 — Discover
Fetch the OAuth 2.0 Authorization Server metadata to learn all endpoints and capabilities:
```
GET https://accounts.salla.com/.well-known/oauth-authorization-server
```
The `agent_auth` block tells you:
- `skill` — the URL of this document.
- `register_uri` / `identity_endpoint` — where you begin the registration/authorization flow.
- `identity_types_supported` — this service uses `service_auth` (the user authenticates at the Salla Login Page).
- `service_auth.claim_uri` / `claim_endpoint` — where the user goes to authenticate.
- `revocation_uri` — where you POST to revoke a token.
You can also fetch Protected Resource Metadata from the resource server:
```
GET https://accounts.salla.com/.well-known/oauth-protected-resource/store/v1
```
## Step 2 — Register (Authorize with PKCE)
Generate a PKCE code pair:
1. Generate a random `code_verifier` (43–128 characters).
2. Compute `code_challenge = base64url(SHA256(code_verifier))`.
3. Use `code_challenge_method = S256`.
Then redirect the user to the authorization endpoint:
```
GET https://accounts.salla.com/oauth/authorize?
response_type=code
&client_id=salla-agent
&redirect_uri=<your-callback-uri>
&scope=openid profile offline_access
&state=<random-state>
&code_challenge=<your-code-challenge>
&code_challenge_method=S256
```
**Client registration:**
- Pre-configured public client: `salla-agent` (no secret required, PKCE is the sole authentication mechanism).
- Agents must provide a `redirect_uri` they control (e.g. `http://localhost:<port>/callback` for local agents). While PKCE protects the flow regardless of the redirect target, using a URI you own prevents token interception.
- Confidential clients (with secrets) are also supported if pre-registered.
## Step 3 — Authenticate and Exchange
The user authenticates on the Salla Login Page. After login, the browser redirects to your `redirect_uri` with `?code=<auth-code>&state=<your-state>`.
Exchange the authorization code for tokens:
```
POST https://accounts.salla.com/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=authorization_code
&code=<auth-code>
&redirect_uri=<your-callback-uri>
&client_id=salla-agent
&code_verifier=<your-code-verifier>
```
Response:
```json
{
"access_token": "<token>",
"token_type": "Bearer",
"expires_in": 604800,
"refresh_token": "<refresh-token>",
"iss": "https://accounts.salla.com"
}
```
## Step 4 — Use the access token
```
GET https://accounts.salla.com/store/v1/products
Authorization: Bearer <access_token>
```
## Step 5 — Refresh
```
POST https://accounts.salla.com/oauth/token
Content-Type: application/x-www-form-urlencoded
grant_type=refresh_token
&refresh_token=<refresh-token>
&client_id=salla-agent
```
## Revocation
```
POST https://accounts.salla.com/oauth/revoke
Content-Type: application/x-www-form-urlencoded
token=<access-or-refresh-token>
&client_id=salla-agent
```
Returns 200 with an empty body (RFC 7009).
## Introspection
```
POST https://accounts.salla.com/oauth/introspect
Content-Type: application/x-www-form-urlencoded
token=<access-token>
&client_id=salla-agent
```
Returns `{ "active": true, ... }` or `{ "active": false }`.
/.well-known/mcp.json as served 9.4 KB
{"version":"1.0","protocolVersion":"2025-06-18","serverInfo":{"name":"storefront","title":"Storefront MCP","version":"1.0.0","description":"Browse products, manage carts, and initiate checkout for any Salla store via MCP tools and resources."},"transport":{"type":"streamable-http","endpoint":"https://safwat-aljawf.com/mcp"},"capabilities":{"tools":{"listChanged":false},"resources":{"listChanged":false,"subscribe":false},"logging":{}},"tools":[{"name":"catalog-brand-list","title":"List Brands","description":"List all store brands grouped by first character (Arabic or English alphabet). Returns a browsable brand directory.","readOnly":true,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{}}},{"name":"catalog-brand-retrieve","title":"Get Brand Details","description":"Retrieve full brand details by ID, including name, description, logo, banner, and SEO metadata.","readOnly":true,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"brand_id":{"type":"string","description":"Brand ID to fetch"}},"required":["brand_id"]}},{"name":"catalog-category-list","title":"List Categories","description":"List store categories. Returns the root list by default, or direct children when parent_id is provided.","readOnly":true,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"parent_id":{"type":"string","description":"If set, returns direct children of this category"}}}},{"name":"catalog-category-retrieve","title":"Get Category","description":"Retrieve a category by ID, including name, description, image, product count, and nested sub-categories.","readOnly":true,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"category_id":{"type":"string","description":"Category ID to fetch"}},"required":["category_id"]}},{"name":"catalog-product-list","title":"Browse Products","description":"Browse and filter products from the store catalog. Supports 16 source types (latest, brands, categories, search, offers, etc.) with pagination.","readOnly":true,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"source":{"type":"string","enum":["latest","brands","categories","search","offers","top-rated","recently","related","selected","tags","wishlist","sales","reorder","best_selling","json","landing-page"],"description":"Product source type"},"source_value":{"type":"string","description":"Source filter value (brand_id, category_id, keyword, etc.)"},"page":{"type":"integer","minimum":1,"description":"Page number"},"cursor":{"type":"string","description":"Cursor for pagination"},"per_page":{"type":"integer","minimum":1,"maximum":100,"description":"Items per page"},"sort":{"type":"string","description":"Sort option"},"filterable":{"type":"boolean","description":"Include filter facets"}},"required":["source"]}},{"name":"catalog-product-search","title":"Search Products","description":"Search products by keyword. Matches product names, descriptions, and SKUs.","readOnly":true,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"keyword":{"type":"string","description":"Search keyword"},"page":{"type":"integer","minimum":1,"description":"Page number"},"cursor":{"type":"string","description":"Cursor for pagination"},"per_page":{"type":"integer","minimum":1,"maximum":100,"description":"Items per page"},"sort":{"type":"string","description":"Sort option"}},"required":["keyword"]}},{"name":"catalog-product-retrieve","title":"Get Product Details","description":"Retrieve full product details by ID, including images, videos, options, variants/SKUs with pricing, ratings, tags, and brand.","readOnly":true,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"product_id":{"type":"string","description":"Product ID to fetch"}},"required":["product_id"]}},{"name":"checkout-generate","title":"Create Cart","description":"Create a new empty shopping cart. Returns cart_id and checkout_url.","readOnly":false,"destructive":false,"idempotent":false,"inputSchema":{"type":"object","properties":{"include_items":{"type":"boolean","description":"Include cart line items in response"},"source":{"type":"string","description":"Optional source identifier"}}}},{"name":"checkout-retrieve","title":"Get Cart","description":"Retrieve current cart contents including items, quantities, pricing, applied coupons, and the checkout URL.","readOnly":true,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"cart_id":{"type":"string","description":"Cart ID"},"include_items":{"type":"boolean","default":true,"description":"Include cart line items"}},"required":["cart_id"]}},{"name":"checkout-proceed","title":"Proceed to Checkout","description":"Get the checkout URL to redirect the buyer to complete payment. Includes cart summary for confirmation.","readOnly":true,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"cart_id":{"type":"string","description":"Cart ID to proceed with"}},"required":["cart_id"]}},{"name":"checkout-assign","title":"Assign Cart to Account","description":"Link a guest cart to the authenticated buyer's account.","readOnly":false,"destructive":false,"idempotent":false,"inputSchema":{"type":"object","properties":{"cart_id":{"type":"string","description":"Cart ID to assign"}},"required":["cart_id"]}},{"name":"checkout-coupon-apply","title":"Apply Discount Code","description":"Apply a coupon/discount code to the cart.","readOnly":false,"destructive":false,"idempotent":false,"inputSchema":{"type":"object","properties":{"cart_id":{"type":"string","description":"Cart ID"},"coupon":{"type":"string","maxLength":100,"description":"Coupon code to apply"},"payment_method":{"type":"string","description":"Optional payment method for coupon validation"}},"required":["cart_id","coupon"]}},{"name":"checkout-coupon-remove","title":"Remove Discount Code","description":"Remove the applied coupon from the cart.","readOnly":false,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"cart_id":{"type":"string","description":"Cart ID"}},"required":["cart_id"]}},{"name":"checkout-item-add","title":"Add to Cart","description":"Add a product to the shopping cart by id, variant_id, or sku. Returns the full updated cart.","readOnly":false,"destructive":false,"idempotent":false,"inputSchema":{"type":"object","properties":{"cart_id":{"type":"string","description":"Cart ID"},"identifier_type":{"type":"string","enum":["id","variant_id","sku"],"description":"How to identify the product"},"identifier":{"type":"string","description":"Product identifier value"},"quantity":{"type":"integer","minimum":1,"description":"Quantity to add"},"options":{"type":"array","items":{"type":"object"},"description":"Product options"},"notes":{"type":"string","description":"Notes for this cart item"},"amount":{"type":"number","description":"Custom price for flexible-amount products"},"bundle":{"type":"array","items":{"type":"object"},"description":"Bundle items"}},"required":["cart_id","identifier_type","identifier","quantity"]}},{"name":"checkout-item-update","title":"Update Cart Item","description":"Update a cart item's quantity or options by its internal cart item ID.","readOnly":false,"destructive":false,"idempotent":true,"inputSchema":{"type":"object","properties":{"cart_id":{"type":"string","description":"Cart ID"},"item_id":{"type":"string","description":"Internal cart item ID"},"quantity":{"type":"integer","minimum":1,"description":"New quantity"},"identifier_type":{"type":"string","enum":["id","variant_id","sku"],"description":"Product identifier type"},"identifier":{"type":"string","description":"Product identifier value"},"options":{"type":"array","items":{"type":"object"},"description":"Updated product options"},"notes":{"type":"string","description":"Updated notes"},"amount":{"type":"number","description":"Updated custom amount"},"bundle":{"type":"array","items":{"type":"object"},"description":"Updated bundle items"}},"required":["cart_id","item_id","quantity"]}},{"name":"checkout-item-remove","title":"Remove from Cart","description":"Remove an item from the cart by its internal cart item ID.","readOnly":false,"destructive":true,"idempotent":true,"inputSchema":{"type":"object","properties":{"cart_id":{"type":"string","description":"Cart ID"},"item_id":{"type":"string","description":"Internal cart item ID to remove"}},"required":["cart_id","item_id"]}}],"resources":[{"uri":"store://info","name":"store-info","description":"Store name, description, currency, and locale settings","templated":false},{"uri":"store://brands","name":"store-brands","description":"All store brands grouped by first character","templated":false},{"uri":"store://categories","name":"store-categories","description":"Root category tree with subcategory counts","templated":false},{"uri":"store://products/latest","name":"store-products-latest","description":"Latest products from the store catalog","templated":false},{"uri":"store://brands/{id}","name":"store-brand-detail","description":"Single brand with logo, banner, description, and SEO metadata","templated":true},{"uri":"store://categories/{id}","name":"store-category-detail","description":"Category with nested sub-categories and product count","templated":true},{"uri":"store://products/{id}","name":"store-product-detail","description":"Full product details including images, options, variants, and pricing","templated":true},{"uri":"store://cart/{id}","name":"store-cart","description":"Cart contents with items, totals, coupons, and checkout URL","templated":true}]}
