.do

service.as

Preview MDXLD as a running service

service.as - Service Preview

Preview MDXLD service definitions as live, running services through service.as.

What is service.as?

service.as deploys MDXLD documents with $type: Service as actual Cloudflare Workers, exposing endpoints and functionality defined in the document.

Basic Example

---
$type: Service
$id: https://services.do/email-sender
name: email-sender
endpoints:
  - POST /send
  - GET /status
---

# Email Sender Service

export async function POST_send({ request, env }) {
  const { to, subject, body } = await request.json()

  await env.EMAIL.send({
    to,
    subject,
    body
  })

  return { success: true }
}

export async function GET_status() {
  return { status: 'operational' }
}

Runs at: https://service.as/email-sender

Features

  • Live Endpoints: Functions execute on request
  • Edge Deployment: Global distribution
  • Environment Variables: Secure config
  • Bindings: KV, R2, D1, Queues, etc.
  • Middleware: Request/response processing
  • Monitoring: Built-in observability

Service Definition

---
$type: Service
name: api-service
main: src/index.ts
compatibility_date: 2025-10-27
env:
  API_KEY: ${API_KEY}
bindings:
  - type: KV
    name: CACHE
  - type: D1
    name: DB
routes:
  - pattern: example.com/api/*
---

Endpoints

Define endpoints as exported functions:

export async function GET({ request }) {
  return new Response('Hello')
}

export async function POST({ request, env }) {
  const data = await request.json()
  await env.DB.put('key', data)
  return { success: true }
}

Preview URL

Try It

# Deploy service
mdxe deploy email-service.mdx --preview service.as

# Test endpoint
curl https://service.as/email-service/send -X POST \
  -d '{"to":"[email protected]","subject":"Test"}'