# OddHobb > oddhobb.com — what odd thing shall we make you? Upload your pet once and > browse figurines, cards, gifts and video that already feature them. OddHobb turns a pet photo into a 3D mesh, then renders that mesh onto every product in the shop — cards, mugs, cushions, jigsaws, prints, stickers and more. Prices on the storefront are estimates (EST) until a live supplier quote replaces them. ## Canonical funnel (humans + ChatGPT agents) ``` ramble (voice/text) → POST /backend/api/quick/map # live lines + confidence → show top matches (stream by confidence) → upload photo POST /backend/api/photos → sculpt POST /backend/api/meshes # Meshy spend needs human OK → personalise POST /backend/api/products/personalise → checkout POST /backend/api/products/order {fulfil:true} # → Shopify draft, no card charge from this API ``` Machine-readable playbook: `GET /backend/api/agent/playbook` Shared mapper (same as the site Quick panel): `POST /backend/api/quick/map` Body: `{"text":"chocolate keychain for my dog","owner":"..."}` → `matches[].confidence` No-photo perform path: `POST /backend/api/meshes/style` (adopt dad/badger/buster as a mesh, no Meshy) → `POST /backend/api/videos` (mesh_id + one funny topic → free MP4). Sculpt path wants 3 angles of the same person (auto multi-image, same 1 credit) or explicit single:true. Owner defaults to your API key. Human funnel (in the app): https://oddhobb.com/#quick — Products tab → Quick (same as `/quick.html` which redirects there). MCP: `figg_playbook` · `figg_quick_map` · `figg_product_assets` · `figg_fullchain_personalise_order` — always show price before order. ## Shop - Storefront: https://oddhobb.com/ - Categories: https://oddhobb.com/#/s/all — /#/s/board-games, /#/s/gifts, /#/s/cards - **Product gallery (ornament/keychain/custom + drag-able 3D mesh):** https://oddhobb.com/products.html - Greeting cards shelf: https://cards.oddhobb.com/ - Gifts shelf: https://gifts.oddhobb.com/ - Board games shelf: https://boardgames.oddhobb.com/ - Your uploads and roster: https://my.oddhobb.com/ ## Machine-readable catalog - All products (JSON): https://oddhobb.com/backend/api/catalog - Google Merchant Center feed (RSS 2.0, GBP): https://oddhobb.com/backend/api/feeds/google.xml - Shopify-shaped feed (mirrors /products.json): https://oddhobb.com/backend/api/feeds/shopify.json - Sections registry: https://oddhobb.com/backend/api/sections - Agent playbook: https://oddhobb.com/backend/api/agent/playbook - Quick map: https://oddhobb.com/backend/api/quick/map Catalog endpoints are public (no token). Product images in feeds are public render URLs under https://oddhobb.com/img/ — no token required. ## For AI assistants (MCP) OddHobb exposes a standard MCP server (streamable HTTP) covering pets, meshes, the studio product library, ramble→product mapping, quotes and checkout: https://mcp.oddhobb.com/mcp No token needed to start. Any agent connects and gets the public tier: catalog, product assets and stills, studio props and combos, design contracts, bases, validation, saving and reserve-only ordering, gift packs, supplier quotes, acts, rooms, card library and templates, company graph, quick-map and playbook, plus `figg_create_account` / `figg_login` for self-serve identity. Start with `figg_tools` (docs are inline, ~280 chars per tool). Spending tools (mesh sculpts, video renders, fulfil, Blender making, card saving/rendering) are absent here by design — unknown tools error instead of executing. To act (upload, sculpt, render, reserve): create an account over the public tier (`figg_create_account` — key shown once), then call the REST API with your key in the `X-API-Key` header (or `?api_key=`, or Bearer token) — NOT `?token=`, which is the bridge/service token and will 401 your key. Base path is `/backend/api` on any oddhobb.com host (plain `/api/*` is the site router, not the API). Machine contract: `/openapi.json`. Quotas are per-owner (3 sculpts + 5 videos/day free). Holders of the bridge token get the full MCP instead: `https://mcp.oddhobb.com/mcp?token=` (75 tools), including `figg_mint_agent` / `figg_my_agents` / `figg_revoke_agent`: sign in (password or Google), pass YOUR api_key, mint a scoped key for your agent. Agents never get the bridge token. Design loop rule (enforced): fetch `figg_design_base` for the line FIRST and design inside that geometry — locked interfaces arrive already modelled. `figg_design_save` records a `base_first` flag; fulfil refuses drafts saved without it. Validate checks your numbers; the sample checks your geometry. Bases: STL in mm, GLB in metres, axes [x, y, z]. HTTP notes: send a real User-Agent (Cloudflare challenges stock urllib/python-requests defaults); MCP needs the initialize → notifications/initialized handshake before tools/list. ## Contact - Support: support@oddhobb.com - Brand: OddHobb. Currency: GBP. Prints fulfilled print-on-demand. ## Agent discovery (Google AI / Pinterest playbook) - Product data with 8 AI attributes: https://oddhobb.com/api/seo/products.json - Flat Q&A pairs for conversational AI: https://oddhobb.com/api/seo/faq.json - Per-product buyer guides (FAQPage schema): https://oddhobb.com/guides/ - Merchant feed (RSS + custom labels): https://oddhobb.com/backend/api/feeds/google.xml - Shopify-shaped catalog: https://oddhobb.com/backend/api/feeds/shopify.json - Strategy: docs/seo.md in the figgsite repo ## Helper agent + company graph - Helper agent: **bobdod** — main store helper on oddhobb.com and via MCP - Company graph (FACTS/RESOURCES/CAPABILITIES): https://oddhobb.com/api/companygraph - MCP tool: `figg_companygraph` on https://mcp.oddhobb.com/mcp