TOMO Manifest Reference — Every Field Documented
Audience: every TOMO partner. The manifest is your declaration of intent coverage. It tells TOMO which intents you serve, where, at what price, and how you rate yourself on TTBS (time, taste, budget, safety). Our team reviews it before your connection goes live.
How it is submitted today: there is no self-serve partner dashboard yet. After your application is approved, our team submits your manifest with you. Under the hood it is one call — POST /api/v1/business/tier1/manifest/<your_account_id> — with the body below. (planned: a self-serve manifest editor.)
1. The body
{
"businessName": "Example Stays",
"intents": [
{
"intent": "travel.book_hotel",
"domain": "travel",
"description": "Boutique stays",
"pricing": { "min": 3500, "max": 18000, "currency": "INR" },
"service_area": ["Coorg", "Munnar"],
"ttbs_signals": { "time": 0.4, "taste": 0.9, "budget": 0.3, "safety": 0.85 },
"availability": "24x7",
"completion_callback": "https://www.automobnxt.com/api/v1/cpc/mcp_provider/<your_account_id>",
"widget_type": "travel_listing_results"
}
],
"submitForReview": true
}
2. businessName
Type: string. REQUIRED. The display name shown in chat, e.g. "Example Stays".
3. intents[] — the heart of the manifest
Each entry declares one intent you serve. Multiple entries are allowed (you can serve travel.book_hotel AND travel.book_flight). At least one is REQUIRED.
| Field | Type | Checked when you submit? | Notes |
|---|---|---|---|
intent |
string | REQUIRED | exact full ID from _INTENT_CATALOG.md |
domain |
string | REQUIRED | the intent's namespace, e.g. food for food.order_delivery |
pricing |
object | REQUIRED — min and max are numbers, min ≤ max |
floor + ceiling per completed order |
service_area |
array |
REQUIRED, ≥1 entry | cities or postal codes |
description |
string | stored, reviewed by our team | a short description of what you offer |
ttbs_signals |
object | stored, reviewed by our team | self-rated position on 4 axes (§6) |
availability |
string | stored, reviewed by our team | hours of operation |
completion_callback |
URL | stored, reviewed by our team | TOMO's completion URL for you (§8) |
widget_type |
string | stored, reviewed by our team | matches the intent's §9 widget_type |
4. pricing
"pricing": { "min": 500, "max": 50000, "currency": "INR" }
min and max are your typical floor and ceiling for a single completed order. TOMO stores your price range; today, ranking uses your ttbs_signals, weighted for the domain (§6). Amounts are in INR in v1 of this contract.
Be honest. Set ranges that reflect your real prices — our team checks them during review.
5. service_area
"service_area": ["Bangalore", "Hyderabad", "Mumbai"]
"service_area": ["560001", "500081", "400001"]
"service_area": ["Bangalore", "560001", "Hyderabad", "500081"]
REQUIRED, ≥1 entry. City names or postal codes, or a mix. For a hyper-local partner (a single restaurant or salon), postal codes alone are fine.
6. ttbs_signals — your self-rating
"ttbs_signals": { "time": 0.6, "taste": 0.8, "budget": 0.5, "safety": 0.7 }
Four numbers, each 0.0-1.0. They tell TOMO how YOU position yourself on each axis. Today TOMO ranks on these signals, weighted for the domain and for the person asking. (planned: learning from delivered results.) Ranking is source-blind: no partner can pay to rank higher.
| Axis | Meaning | High value (0.8-1.0) | Low value (0.0-0.3) |
|---|---|---|---|
time |
how fast you fulfil | <30 min average | >2 hours average |
taste |
quality / curation | premium curation | broad, no curation |
budget |
value-for-money positioning | budget-friendly | premium-priced |
safety |
trust + verification depth | full KYC + audits | minimal verification |
Our team checks your signals during review. Example honest declarations:
# A broad, premium-positioned hotel platform (slow confirm)
{ "time": 0.4, "taste": 0.85, "budget": 0.5, "safety": 0.8 }
# A volume, budget-positioned hotel chain (fast confirm)
{ "time": 0.7, "taste": 0.4, "budget": 0.85, "safety": 0.5 }
# Boutique homestay platform (slow, premium, expensive, very safe)
{ "time": 0.3, "taste": 0.95, "budget": 0.2, "safety": 0.95 }
7. availability
"availability": "24x7"
"availability": "Mon-Sat 08:00-22:00 IST"
"availability": "Mon-Fri 09:00-18:00 IST; Sat 10:00-14:00 IST; Sun closed"
Free text. If you say 24x7, a person must answer at all hours.
8. completion_callback
"completion_callback": "https://www.automobnxt.com/api/v1/cpc/mcp_provider/<your_account_id>"
Always TOMO's completion URL, not your endpoint. You don't receive callbacks here — you POST to it when an order completes (see COMPLETION_CONTRACT.md).
The pattern is fixed: /api/v1/cpc/mcp_provider/<your_account_id>. Our team gives you your account ID with your keys.
9. widget_type
"widget_type": "travel_listing_results"
Must match the widget_type declared in your intent's §9. If you serve travel.book_hotel, your widget_type is travel_listing_results. The widget is fixed per intent so people see the same layout whichever business answers.
10. What lives in your MCP server instead
These are declared in each tool's _meta.tomo block (see MCP_SPEC.md), or fixed by the intent spec — not in the manifest:
pricingandttbs_signalsper tool — in_meta.tomo- TTBS weighting per domain — fixed by TOMO
- Caching policy — fixed by intent §9
- Anti-fabrication rules — fixed by the intent spec
11. What TOMO checks when you submit
[ ] businessName is present
[ ] at least one intent
[ ] every intent has `intent` and `domain`
[ ] every pricing.min and pricing.max is a number, with min ≤ max
[ ] every intent has at least one service_area
A failed check returns 400 with a plain message (for example Intent "travel.book_hotel" pricing is invalid (min must be ≤ max)). Everything else is reviewed by our team.
submitForReview: true → status pending_review and a review entry for our team. submitForReview: false → saved as draft.
12. After you submit
Your manifest is saved as pending_review. Our team reviews it and tells you the outcome by email — with notes on what to fix if it needs changes.
The latest manifest you submit replaces the previous one and goes back to pending_review.
An approved manifest does not by itself send anyone your way: your connection is switched on only after our team has tested it with you inside TOMO (see SANDBOX_TO_PROD_CHECKLIST.md).
13. A multi-intent example
A delivery business serving food delivery and table bookings:
{
"businessName": "Example Delivery Co.",
"intents": [
{
"intent": "food.order_delivery",
"domain": "food",
"description": "Restaurant-to-doorstep food delivery",
"pricing": { "min": 120, "max": 4000, "currency": "INR" },
"service_area": ["Bangalore", "Hyderabad"],
"ttbs_signals": { "time": 0.85, "taste": 0.65, "budget": 0.55, "safety": 0.7 },
"availability": "24x7",
"completion_callback": "https://www.automobnxt.com/api/v1/cpc/mcp_provider/<your_account_id>",
"widget_type": "food_menu_results"
},
{
"intent": "food.book_dine_in",
"domain": "food",
"description": "Dine-in reservations",
"pricing": { "min": 400, "max": 8000, "currency": "INR" },
"service_area": ["Bangalore", "Hyderabad", "Mumbai"],
"ttbs_signals": { "time": 0.5, "taste": 0.7, "budget": 0.55, "safety": 0.7 },
"availability": "Mon-Sun 11:00-23:00 IST",
"completion_callback": "https://www.automobnxt.com/api/v1/cpc/mcp_provider/<your_account_id>",
"widget_type": "food_dine_in_results"
}
],
"submitForReview": true
}
14. Common mistakes
intent ID typo
e.g., travel.book_hotels (plural) doesn't exist; only travel.book_hotel (singular). Our team will send it back.
domain mismatch
If your intent is food.order_delivery, domain is food, not restaurant or delivery.
pricing.min above pricing.max
Rejected at submit with a 400.
TTBS signals at 1.0 across all axes
Self-inflation. Our team will ask you to correct it. Being 0.6 on time and 0.9 on taste is more useful than being 1.0 on everything.
widget_type not matching the intent
You declared travel_listing_results for food.order_delivery. The intent spec mandates food_menu_results.
15. References
- TOMO intent catalog:
docs/intents/_INTENT_CATALOG.md - TOMO intent spec template:
docs/intents/_TEMPLATE.md - Completion POST:
COMPLETION_CONTRACT.md
Built by AUTOMOBNXT · DPIIT Recognised Startup · 2026.