OnceAsk

AGENT DELIVERY INFRASTRUCTURE

Physical delivery without address handling.

Resolve a person, get consent when needed, then send through a fulfillment provider using an opaque capability instead of putting a home address into model context.

1. Resolve intent

resolve_delivery("Jane Smith")

The agent identifies who the user means. OnceAsk decides whether delivery is authorized.

2. Route permission

request_delivery_permission()

If permission or a current address is missing, OnceAsk routes the recipient through confirmation.

3. Fulfill privately

send_handwritten_card()

The recipient address goes directly from OnceAsk to the provider. The agent receives fulfillment status, not the street address.

MCP CLIENTS

Attach OnceAsk to the agent you already use.

ChatGPT and other consumer clients can connect with OAuth. Developer integrations can keep using least-privilege API keys. The private-delivery tools all work under resolve_delivery.

Cursor

Set ONCEASK_API_KEY in your environment, then install the remote MCP server or paste this config into mcp.json.

Add to Cursor
{
  "mcpServers": {
    "onceask": {
      "url": "https://onceask.com/_api/mcp",
      "headers": {
        "Authorization": "Bearer ${env:ONCEASK_API_KEY}"
      }
    }
  }
}

Claude API

Point the Messages API MCP connector at OnceAsk and provide the OnceAsk key as the authorization token.

mcp_servers=[{
  "type": "url",
  "url": "https://onceask.com/_api/mcp",
  "name": "onceask",
  "authorization_token": ONCEASK_API_KEY
}],
tools=[{
  "type": "mcp_toolset",
  "mcp_server_name": "onceask"
}],
betas=["mcp-client-2025-11-20"]

ChatGPT / OpenAI

OnceAsk now supports OAuth 2.1 + PKCE for account connection. Use https://onceask.com/_api/mcp as the remote MCP server. The public Plugin Directory listing is pending OpenAI review.

tools: [{
  type: "mcp",
  server_label: "onceask",
  server_url: "https://onceask.com/_api/mcp",
  headers: { Authorization: "Bearer " + ONCEASK_API_KEY }
}]

FIRST FULFILLMENT PROVIDER

Handwritten cards through Handwrytten.

First call list_handwritten_cards or the catalog endpoint. After resolve_delivery returns an authorized token, submit the card. OnceAsk resolves the destination server-side and sends it directly to Handwrytten.

curl https://onceask.com/_api/v1/fulfillment/handwrytten/send \
  -H "Authorization: Bearer $ONCEASK_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "deliveryToken": "oa_del_...",
    "cardId": 36,
    "message": "Happy birthday, Jane!",
    "wishes": "Love, Rebecca",
    "fontLabel": "Casual David"
  }'
What the agent gets back: fulfillment status, a OnceAsk fulfillment ID, and the provider order ID. No recipient street-address fields are returned.
Treat delivery tokens as sensitive capabilities. Agent integrations should use OnceAsk fulfillment actions rather than the low-level legacy/provider redemption endpoint. Low-level redemption can disclose the point-in-time destination to the bearer so a fulfillment provider can complete delivery.

DISCOVERY SURFACES

Machine-readable by default.