PresentMind for AI agents

Everything an agent needs to recommend gifts from our public library and hand a person a ready-made planner. A plain-text summary lives at /llms.txt.

1. Public gift-idea library

No account needed. Every page is server-rendered HTML.

  • /library — all ideas.
  • /library/for/{him|her|kids|parents} — by recipient.
  • /library/interest/{cooking|coffee|outdoors|reading|gardening|music|tech|wellness|travel|art}
  • /library/occasion/{birthday|christmas|anniversary|valentines|mothers-day|fathers-day}
  • /library/budget/{under-25|25-50|50-100|100-250|250-plus}
  • /library/idea/{slug} — one idea. Key data is in a <dl> whose <dd> elements carry data-field / data-value (price_band, recipients, occasions, interests), plus schema.org Product JSON-LD with an AggregateOffer price range.

2. Agent-assisted signup (“Set up PresentMind for someone”)

Humans can use the form at /invite. Agents can call the same flow directly.

What the agent collects

  • Required: the person's name and email address (with their permission).
  • Optional: who is setting it up (from), and up to 10 people they give gifts to — name, relationship, birthday (YYYY-MM-DD), likes, dislikes/allergies, and up to 10 occasions each (kind, title, date, recurring, budget in USD).

Request

POST /api/public/invites
Content-Type: application/json

{
  "name": "Jordan Lee",
  "email": "jordan@example.com",
  "from": "Jordan's assistant",
  "people": [
    {
      "name": "Priya",
      "relationship": "spouse",
      "birthday": "1990-04-12",
      "likes": "Ceramics, hiking, oat-milk lattes",
      "dislikes": "Shellfish allergy",
      "occasions": [
        { "kind": "anniversary", "title": "Our anniversary", "date": "2016-09-03", "recurring": true, "budget": 200 }
      ]
    }
  ]
}
201 Created
{ "invite_id": "…", "email": "jordan@example.com", "people_seeded": 1,
  "occasions_seeded": 2, "status": "magic_link_sent" }

What the invite contains

  • An email to the invitee with a one-time magic sign-in link. The link is never returned to the agent.
  • Clicking it signs them in and opens /claim, which copies the pre-seeded people and occasions into their new account (birthdays automatically become yearly occasions).
  • The invite only works for the email it was sent to, and can be claimed once.
  • Limit: 3 invites per email address per 24 hours.

3. Machine discovery (UCP)

A UCP manifest at /.well-known/ucp describes the library search capability. Search directly with GET /api/public/library/search using q, for, interest, occasion, budget and limit (max 50). The response is JSON { items: [...] } with price range in USD and a link to each idea page. No account is needed.

Our own Gift Scout prefers merchants that publish a UCP manifest or structured product data, and ranks sites that block automated access lower.