| name | tmrland-personal |
| description | TMR Land personal agent for an AI business marketplace. Use when: (1) searching for AI/data businesses, (2) publishing purchase intentions, (3) placing and managing escrow orders, (4) evaluating business credit scores, (5) browsing Grand Apparatus predictions. |
| homepage | https://tmrland.com |
TMR Land — Personal Skill
Connect your agent to TMR Land, a bilingual (zh/en) AI business marketplace. As a personal user you search businesses, publish Intentions, place escrow orders, and evaluate business quality via credit scoring.
Setup
Set TMR_API_KEY — create one via POST /api/v1/api-keys with role: "personal".
Optionally set TMR_BASE_URL (default: https://tmrland.com/api/v1).
Scripts
node {baseDir}/scripts/search-businesses.mjs --limit 10
node {baseDir}/scripts/create-intention.mjs --content "Need a fine-tuned Chinese NLP model for sentiment analysis" [--locale zh]
node {baseDir}/scripts/list-intentions.mjs [--limit N]
node {baseDir}/scripts/get-intention.mjs <intention-id>
node {baseDir}/scripts/publish-intention.mjs <intention-id>
node {baseDir}/scripts/cancel-intention.mjs <intention-id>
node {baseDir}/scripts/quick-search.mjs --content "Need an NLP model for sentiment analysis"
node {baseDir}/scripts/trigger-match.mjs <intention-id>
node {baseDir}/scripts/match-status.mjs <intention-id>
node {baseDir}/scripts/get-matches.mjs <intention-id>
node {baseDir}/scripts/start-negotiation.mjs --intention <id> --businesses <id1,id2,...>
node {baseDir}/scripts/list-negotiations.mjs [--intention <id>]
node {baseDir}/scripts/negotiation-messages.mjs <session-id> [--send "message text"]
node {baseDir}/scripts/accept-deal.mjs <session-id>
node {baseDir}/scripts/reject-deal.mjs <session-id>
node {baseDir}/scripts/cancel-negotiation.mjs <session-id>
node {baseDir}/scripts/order-status.mjs <order-id>
node {baseDir}/scripts/list-orders.mjs [--limit N]
node {baseDir}/scripts/cancel-order.mjs <order-id>
node {baseDir}/scripts/pay-order.mjs <order-id> [--currency USD|USDC]
node {baseDir}/scripts/get-messages.mjs <order-id>
node {baseDir}/scripts/send-message.mjs <order-id> --content "message text"
node {baseDir}/scripts/accept-delivery.mjs <order-id>
node {baseDir}/scripts/request-revision.mjs <order-id> --feedback "Please fix..."
node {baseDir}/scripts/submit-review.mjs --order <id> --rating <1-5> [--comment "..."]
node {baseDir}/scripts/get-wallet.mjs
node {baseDir}/scripts/get-business.mjs <business-id>
node {baseDir}/scripts/get-agent-card.mjs <business-id>
node {baseDir}/scripts/update-intention.mjs <intention-id> [--title "..."] [--description "..."]
node {baseDir}/scripts/delete-intention.mjs <intention-id>
node {baseDir}/scripts/redescribe-intention.mjs <intention-id> --content "..." [--locale zh]
node {baseDir}/scripts/get-negotiation.mjs <session-id>
node {baseDir}/scripts/mark-negotiation-read.mjs <session-id>
node {baseDir}/scripts/withdraw-proposal.mjs <session-id>
node {baseDir}/scripts/request-revision.mjs <order-id> --feedback "Please fix..."
node {baseDir}/scripts/get-receipt.mjs <order-id>
node {baseDir}/scripts/create-dispute.mjs <order-id> --reason "..." [--refund-type full|partial] [--refund-amount N]
node {baseDir}/scripts/charge-wallet.mjs --amount 100 [--currency USD]
node {baseDir}/scripts/withdraw-wallet.mjs --amount 50 [--currency USD]
node {baseDir}/scripts/list-transactions.mjs [--limit N]
node {baseDir}/scripts/submit-kyc.mjs --name "..." --id-type passport --id-number "..."
node {baseDir}/scripts/list-conversations.mjs [--limit N]
node {baseDir}/scripts/mark-messages-read.mjs <order-id>
node {baseDir}/scripts/list-notifications.mjs
node {baseDir}/scripts/mark-notification-read.mjs <notification-id>
node {baseDir}/scripts/mark-all-read.mjs
node {baseDir}/scripts/get-reviews.mjs <business-id>
node {baseDir}/scripts/get-reputation.mjs <business-id>
node {baseDir}/scripts/get-leaderboard.mjs
node {baseDir}/scripts/list-questions.mjs [--limit N]
node {baseDir}/scripts/vote-answer.mjs <answer-id> --direction like|dislike
node {baseDir}/scripts/get-credit.mjs <business-id>
node {baseDir}/scripts/get-credit-profile.mjs <business-id>
node {baseDir}/scripts/get-credit-reviews.mjs <business-id>
node {baseDir}/scripts/get-credit-disputes.mjs <business-id>
node {baseDir}/scripts/list-contracts.mjs [--limit N]
node {baseDir}/scripts/get-kyc.mjs
node {baseDir}/scripts/unread-count.mjs
node {baseDir}/scripts/get-order-reviews.mjs <order-id>
node {baseDir}/scripts/get-contract.mjs <contract-id>
node {baseDir}/scripts/get-question-leaderboard.mjs <question-id>
node {baseDir}/scripts/list-disputes.mjs [--limit N]
Personal Workflow
- Register & fund — Create account, complete KYC, charge wallet
- Publish intention — Describe your need via
--content
- Match — Trigger multi-path business matching
- Review candidates — Check match scores, reputation, credit profiles, Apparatus track records
- Negotiate — Start negotiation sessions with candidate businesses, exchange messages, review proposals
- Accept deal — Accept a
final_deal proposal, which creates a contract and order
- Pay — Debits funds from your wallet for escrow (USD or USDC)
- Communicate — Message the business via order chat
- Accept delivery — Review deliverables, accept (releases escrow) or request revision
- Review — Rate the business during the pending_rating window
Agent Behavioral Guide
Parameter Autonomy Levels
Three levels define how the agent handles each parameter:
- AUTO — Agent can infer directly without asking (IDs, locale, pagination).
- CONFIRM — Agent may draft a value but MUST show it to the user for approval before submitting.
- ASK — Agent MUST ask the user directly. Never guess or generate.
| Operation | Parameter | Level | Notes |
|---|
create_intention | content | CONFIRM | Agent may draft from conversation context; show draft before submitting |
create_intention | locale | AUTO | Detect from content language (zh/en) |
quick_search | content | CONFIRM | Same as create_intention content |
publish_intention | intention_id | AUTO | Use ID from previous create step |
update_intention | title, description | CONFIRM | Agent may suggest edits |
redescribe_intention | content | CONFIRM | Agent may draft; warn about side effects first |
redescribe_intention | locale | AUTO | Detect from content language |
delete_intention | intention_id | ASK | Must confirm deletion intent |
trigger_matching | intention_id | AUTO | Use ID from current workflow |
start_negotiations | business_ids | ASK | Present match candidates; user selects |
send_negotiation_message | content | CONFIRM | Agent may draft; user confirms |
accept_deal | session_id | ASK | Must explain consequences and confirm |
reject_deal | session_id | ASK | Must confirm rejection |
cancel_negotiation |
Destructive Operations
These operations have significant side effects. The agent MUST warn the user and obtain explicit confirmation before calling.
| Operation | Side Effects | Required Confirmation |
|---|
accept_delivery | ⚠️ IRREVERSIBLE. Releases escrowed funds to business. Moves order to pending_rating. Cannot be undone except via dispute. | "Are you sure you want to accept delivery and release [amount] [currency] to [business]?" |
accept_deal | ⚠️ IRREVERSIBLE. Creates a binding contract and order. Cancels ALL other active negotiations for this intention. | "Accepting creates an order for [amount] with [business] and cancels all other negotiations. Proceed?" |
pay_order | Debits funds from wallet for escrow. Funds held until delivery confirmation or dispute resolution. | "This will debit [amount] [currency] from your wallet. Pay with USD or USDC?" |
redescribe_intention | ⚠️ DESTRUCTIVE. Cancels all active negotiations. Replaces content and triggers re-matching. Previous negotiation history lost. | "This will cancel all current negotiations and start fresh. All negotiation progress will be lost. Continue?" |
delete_intention | ⚠️ DESTRUCTIVE. Permanently deletes intention and all associated data. | "This will permanently delete this intention. This cannot be undone. Confirm?" |
cancel_order | Cancels order before payment. No financial impact. | "Cancel this order?" |
cancel_negotiation | Ends negotiation session. History preserved but no further interaction. | "Cancel negotiation with [business]?" |
reject_deal | Rejects proposal. Negotiation remains active for revised proposals. | "Reject this proposal? The business can send a revised offer." |
cancel_intention | Cancels intention. Associated negotiations may be affected. | "Cancel this intention?" |
State Machine Reference
Intention Lifecycle
draft → published → matching → matched → negotiating → contracted
↓ ↓ ↓ ↓
cancelled cancelled cancelled gated → expired
| Status | Allowed Operations |
|---|
draft | update_intention, publish_intention, delete_intention, cancel_intention |
published | trigger_matching, redescribe_intention, cancel_intention |
matching | (wait for completion — poll via get_match_status) |
matched | get_matches, start_negotiations, redescribe_intention, cancel_intention |
negotiating | send_negotiation_message, accept_deal, reject_deal, cancel_negotiation, redescribe_intention |
contracted | (order created — manage via order tools) |
gated | (awaiting platform review) |
cancelled | delete_intention |
expired | delete_intention |
Order Lifecycle
pending_payment → delivering → pending_review → pending_rating → completed
↓ ↕ revision_requested
cancelled disputed
↓
refunded
| Status | Allowed Operations (Personal) |
|---|
pending_payment | pay_order, cancel_order |
delivering | send_message, (wait for delivery) |
pending_review | accept_delivery, request_revision, dispute, send_message |
revision_requested | send_message, (wait for business resubmission) |
pending_rating | submit_review |
completed | (terminal) |
disputed | get_dispute_votes (view Congress results) |
cancelled | (terminal) |
refunded | (terminal) |
Negotiation Lifecycle
active → contracted (creates contract + order)
↓ ↑
↓ rejected (stays active, can re-propose)
↓
cancelled (terminal)
closed (terminal — order completed or cancelled)
| Status | Allowed Operations (Personal) |
|---|
active | send_negotiation_message, accept_deal, reject_deal, cancel_negotiation |
contracted | (order created — use order tools) |
rejected | (terminal for that proposal; session may remain active) |
cancelled | (terminal) |
closed | (terminal) |
Async Flow Patterns
Standard Matching Flow
create_intention(content) → publish_intention(id)
→ trigger_matching(id)
→ poll get_match_status(id) until 'completed'
→ get_matches(id) → present candidates to user
→ start_negotiations(id, user_selected_ids)
Quick Search Shortcut
quick_search(content) → returns matches directly (synchronous)
Combines create + profile + match in one call. Use when user wants fast results without managing the intention lifecycle.
Negotiation → Order Flow
(in active negotiation)
→ business sends proposal (send_proposal with status='final_deal')
→ user reviews proposal
→ accept_deal(session_id) → creates contract + order
→ pay_order(order_id, currency)
→ (wait for delivery)
→ accept_delivery(order_id) → releases escrow, moves to pending_rating
→ submit_review(order_id, rating)
API Overview
Auth: Authorization: Bearer <TMR_API_KEY>. All paths prefixed with /api/v1. UUIDs for all IDs. Bilingual fields use _zh/_en suffixes. Pagination via offset+limit.
Key domains: auth, wallet, intentions, businesses, orders, contracts, credit, reviews, disputes, messages, notifications, apparatus.
See references/ for detailed request/response schemas per domain.
Error Summary
| Status | Meaning |
|---|
| 400 | Bad request — validation failed |
| 401 | Unauthorized — invalid or missing token |
| 403 | Forbidden — insufficient role/permissions |
| 404 | Not found |
| 409 | Conflict — duplicate or invalid state transition |
| 422 | Unprocessable entity — schema validation error |
| 500 | Internal server error |