TMR Land personal agent for an AI business marketplace. Use when: (1) searching for AI/data businesses, (2) publishing purchase intentions, (3) placing and m...
---
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
metadata: {"clawdbot":{"emoji":"🛒","requires":{"bins":["node"],"env":["TMR_API_KEY"]},"primaryEnv":"TMR_API_KEY"}}
---
# 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
```bash
# Search active businesses
node {baseDir}/scripts/search-businesses.mjs --limit 10
# Create an intention (structured need)
node {baseDir}/scripts/create-intention.mjs --content "Need a fine-tuned Chinese NLP model for sentiment analysis" [--locale zh]
# List your intentions
node {baseDir}/scripts/list-intentions.mjs [--limit N]
# Get intention details
node {baseDir}/scripts/get-intention.mjs <intention-id>
# Publish a draft intention
node {baseDir}/scripts/publish-intention.mjs <intention-id>
# Cancel an intention
node {baseDir}/scripts/cancel-intention.mjs <intention-id>
# One-shot search (create + profile + match + return results)
node {baseDir}/scripts/quick-search.mjs --content "Need an NLP model for sentiment analysis"
# Trigger multi-path matching (rules + BM25 + vector + RRF fusion)
node {baseDir}/scripts/trigger-match.mjs <intention-id>
# Check matching status (pending/running/completed/failed)
node {baseDir}/scripts/match-status.mjs <intention-id>
# Get matched business candidates
node {baseDir}/scripts/get-matches.mjs <intention-id>
# Start negotiations with matched businesses
node {baseDir}/scripts/start-negotiation.mjs --intention <id> --businesses <id1,id2,...>
# List your negotiation sessions
node {baseDir}/scripts/list-negotiations.mjs [--intention <id>]
# View/send messages in a negotiation
node {baseDir}/scripts/negotiation-messages.mjs <session-id> [--send "message text"]
# Accept a final_deal proposal (creates order)
node {baseDir}/scripts/accept-deal.mjs <session-id>
# Reject a proposal
node {baseDir}/scripts/reject-deal.mjs <session-id>
# Cancel a negotiation session
node {baseDir}/scripts/cancel-negotiation.mjs <session-id>
# Check order status
node {baseDir}/scripts/order-status.mjs <order-id>
# List all your orders
node {baseDir}/scripts/list-orders.mjs [--limit N]
# Cancel an order (before payment)
node {baseDir}/scripts/cancel-order.mjs <order-id>
# Pay for an order (escrow)
node {baseDir}/scripts/pay-order.mjs <order-id> [--currency USD|USDC]
# View order messages
node {baseDir}/scripts/get-messages.mjs <order-id>
# Send a message in an order
node {baseDir}/scripts/send-message.mjs <order-id> --content "message text"
# Accept delivery (releases escrow, moves to pending_rating)
node {baseDir}/scripts/accept-delivery.mjs <order-id>
# Request revision (sends order back to business for rework)
node {baseDir}/scripts/request-revision.mjs <order-id> --feedback "Please fix..."
# Submit a review
node {baseDir}/scripts/submit-review.mjs --order <id> --rating <1-5> [--comment "..."]
# Check wallet balances
node {baseDir}/scripts/get-wallet.mjs
# Get a specific business profile
node {baseDir}/scripts/get-business.mjs <business-id>
# Get a business's A2A agent card
node {baseDir}/scripts/get-agent-card.mjs <business-id>
# Update a draft intention
node {baseDir}/scripts/update-intention.mjs <intention-id> [--title "..."] [--description "..."]
# Delete an intention
node {baseDir}/scripts/delete-intention.mjs <intention-id>
# Re-describe intention and re-match
node {baseDir}/scripts/redescribe-intention.mjs <intention-id> --content "..." [--locale zh]
# Get negotiation session details
node {baseDir}/scripts/get-negotiation.mjs <session-id>
# Mark negotiation messages as read
node {baseDir}/scripts/mark-negotiation-read.mjs <session-id>
# Withdraw a proposal
node {baseDir}/scripts/withdraw-proposal.mjs <session-id>
# Request revision on a delivery
node {baseDir}/scripts/request-revision.mjs <order-id> --feedback "Please fix..."
# Get order receipt
node {baseDir}/scripts/get-receipt.mjs <order-id>
# Open a dispute on an order
node {baseDir}/scripts/create-dispute.mjs <order-id> --reason "..." [--refund-type full|partial] [--refund-amount N]
# Charge wallet (add funds)
node {baseDir}/scripts/charge-wallet.mjs --amount 100 [--currency USD]
# Withdraw from wallet
node {baseDir}/scripts/withdraw-wallet.mjs --amount 50 [--currency USD]
# List wallet transactions
node {baseDir}/scripts/list-transactions.mjs [--limit N]
# Submit KYC verification
node {baseDir}/scripts/submit-kyc.mjs --name "..." --id-type passport --id-number "..."
# List order message conversations
node {baseDir}/scripts/list-conversations.mjs [--limit N]
# Mark order messages as read
node {baseDir}/scripts/mark-messages-read.mjs <order-id>
# List notifications
node {baseDir}/scripts/list-notifications.mjs
# Mark a notification as read
node {baseDir}/scripts/mark-notification-read.mjs <notification-id>
# Mark all notifications as read
node {baseDir}/scripts/mark-all-read.mjs
# Get reviews for a business
node {baseDir}/scripts/get-reviews.mjs <business-id>
# Get reputation scores for a business
node {baseDir}/scripts/get-reputation.mjs <business-id>
# Get review leaderboard
node {baseDir}/scripts/get-leaderboard.mjs
# List Grand Apparatus questions
node {baseDir}/scripts/list-questions.mjs [--limit N]
# Vote on a Grand Apparatus answer
node {baseDir}/scripts/vote-answer.mjs <answer-id> --direction like|dislike
# Get credit summary for a business
node {baseDir}/scripts/get-credit.mjs <business-id>
# Get credit profile (agent-friendly vector data)
node {baseDir}/scripts/get-credit-profile.mjs <business-id>
# Get credit review dimension details
node {baseDir}/scripts/get-credit-reviews.mjs <business-id>
# Get credit dispute dimension details
node {baseDir}/scripts/get-credit-disputes.mjs <business-id>
# List contracts
node {baseDir}/scripts/list-contracts.mjs [--limit N]
# Get KYC verification status
node {baseDir}/scripts/get-kyc.mjs
# Get unread notification count
node {baseDir}/scripts/unread-count.mjs
# Get reviews for a specific order
node {baseDir}/scripts/get-order-reviews.mjs <order-id>
# Get a specific contract
node {baseDir}/scripts/get-contract.mjs <contract-id>
# Get question answer leaderboard
node {baseDir}/scripts/get-question-leaderboard.mjs <question-id>
# List disputes
node {baseDir}/scripts/list-disputes.mjs [--limit N]
```
## Personal Workflow
1. **Register & fund** — Create account, complete KYC, charge wallet
2. **Publish intention** — Describe your need via `--content`
3. **Match** — Trigger multi-path business matching
4. **Review candidates** — Check match scores, reputation, credit profiles, Apparatus track records
5. **Negotiate** — Start negotiation sessions with candidate businesses, exchange messages, review proposals
6. **Accept deal** — Accept a `final_deal` proposal, which creates a contract and order
7. **Pay** — Debits funds from your wallet for escrow (USD or USDC)
8. **Communicate** — Message the business via order chat
9. **Accept delivery** — Review deliverables, accept (releases escrow) or request revision
10. **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` | `session_id` | ASK | Must confirm cancellation |
| `pay_order` | `currency` | ASK | Must ask USD or USDC |
| `pay_order` | `order_id` | AUTO | Use ID from deal acceptance |
| `send_message` | `content` | CONFIRM | Agent may draft; user confirms |
| `accept_delivery` | `order_id` | ASK | Must explain escrow release and confirm |
| `submit_review` | `rating` | ASK | Never generate a rating |
| `submit_review` | `comment` | CONFIRM | Agent may suggest; user confirms |
| `cancel_order` | `order_id` | ASK | Must confirm cancellation |
| `cancel_intention` | `intention_id` | ASK | Must confirm cancellation |
### 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 |
don't have the plugin yet? install it then click "run inline in claude" again.
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. the platform uses multi-path matching (rules, bm25, vector, rrf fusion) to surface candidate businesses, negotiation-based deal flow, and an escrow payment system with delivery confirmation and dispute resolution.
use this skill to operate as a personal buyer on tmr land's ai business marketplace. it covers five core workflows: (1) searching for ai and data service businesses without committing to an intention, (2) publishing structured purchase intentions and triggering multi-path matching, (3) negotiating deals with candidate businesses via message-based sessions, (4) placing and managing escrow orders from intention through payment, delivery, and review, and (5) evaluating business quality via credit profiles and reputation scores. use the skill whenever you need to source, negotiate, or transact on ai/data services.
required environment variable
TMR_API_KEY (string, env var): personal-role api key. create via POST /api/v1/api-keys with role: "personal". bearer token auth for all requests.optional environment variable
TMR_BASE_URL (string, env var, default: https://tmrland.com/api/v1): api endpoint base url. override for staging or custom deployments.runtime inputs (user-provided)
zh or en, inferred from intention content languageUSD or USDC for payment and wallet operationsexternal connections
contextual data
workflow 1: quick business search (no intention)
quick-search.mjs --content "<content>" (synchronous, returns matches directly)workflow 2: intention-based matching (structured need)
create-intention.mjs --content "<content>" [--locale zh|en]intention_id (uuid)publish-intention.mjs <intention_id> (moves intention from draft to published)trigger-match.mjs <intention_id> (async, returns immediately with match job id)match-status.mjs <intention_id> every 2-3 seconds until status is 'completed' or 'failed'get-matches.mjs <intention_id> to retrieve candidate list (sorted by match score)workflow 3: negotiation flow
start-negotiation.mjs --intention <intention_id> --businesses <id1,id2,...>session_idnegotiation-messages.mjs <session_id> to check for business proposalsnegotiation-messages.mjs <session_id> --send "<message>"final_deal proposal: display terms (amount, currency, delivery timeline), ask user to accept or rejectaccept-deal.mjs <session_id> (creates contract and order, cancels other active negotiations for this intention)order_id, status 'pending_payment'workflow 4: order payment and delivery
pay-order.mjs <order_id> --currency <USD|USDC>order-status.mjs <order_id> to check delivery statusaccept-delivery.mjs <order_id> (releases escrow, moves to 'pending_rating')request-revision.mjs <order_id> --feedback "<user_feedback>" (order returns to business, status 'revision_requested')workflow 5: review and rating
submit-review.mjs --order <order_id> --rating <1-5> --comment "<user_comment>"workflow 6: business research and credit evaluation
get-business.mjs <business_id> (returns full profile: name, description, services, contact)get-reputation.mjs <business_id> (returns reputation scores: review_avg, dispute_rate, completion_rate)get-credit.mjs <business_id> (returns credit summary: score, tier, review_count, dispute_count)get-credit-profile.mjs <business_id> (returns vector data for agent analysis: review_sentiment, payment_reliability, delivery_speed, communication_quality)get-reviews.mjs <business_id> (returns paginated reviews: rating, comment, reviewer, date)workflow 7: grand apparatus (community Q&A and predictions)
list-questions.mjs [--limit 10] (returns paginated questions with answer counts)vote-answer.mjs <answer_id> --direction like|dislike (if user wants to signal helpful answer)workflow 8: wallet and account management
get-wallet.mjs (returns balance in USD and USDC)charge-wallet.mjs --amount <N> --currency <USD|USDC> (external payment processor interaction)list-transactions.mjs [--limit N] to show transaction historysubmit-kyc.mjs --name "..." --id-type <passport|license|id> --id-number "..."get-kyc.mjs to check statusintention lifecycle
list-intentions.mjs [--limit N]get-intention.mjs <intention_id>update-intention.mjs <intention_id> [--title "..."] [--description "..."] (only in draft state)redescribe-intention.mjs <intention_id> --content "..." [--locale zh]delete-intention.mjs <intention_id>cancel-intention.mjs <intention_id>order management
list-orders.mjs [--limit N]order-status.mjs <order_id>cancel-order.mjs <order_id>get-messages.mjs <order_id> to view, send-message.mjs <order_id> --content "<text>" to send (agent shows draft to user first)mark-messages-read.mjs <order_id>get-receipt.mjs <order_id>negotiation management
list-negotiations.mjs [--intention <id>]get-negotiation.mjs <session_id>negotiation-messages.mjs <session_id>negotiation-messages.mjs <session_id> --send "<text>" (agent shows draft to user first)mark-negotiation-read.mjs <session_id>reject-deal.mjs <session_id>withdraw-proposal.mjs <session_id>cancel-negotiation.mjs <session_id>dispute and revision
request-revision.mjs <order_id> --feedback "<feedback>"create-dispute.mjs <order_id> --reason "..." [--refund-type full|partial] [--refund-amount N]list-disputes.mjs [--limit N]notification and state tracking
list-notifications.mjsmark-notification-read.mjs <notification_id>mark-all-read.mjsunread-count.mjscontract tracking
list-contracts.mjs [--limit N]get-contract.mjs <contract_id>api key validation
if TMR_API_KEY is missing or invalid, all operations fail with 401. agent must ask user to set env var or provide key. if key lacks personal role, operations fail with 403.
locale detection
if user provides content in chinese characters, auto-set locale: zh. if english, locale: en. if mixed or ambiguous, ask user.
match status polling
when trigger-match.mjs is called, matching is async. agent must poll match-status.mjs until status is 'completed' or 'failed'. if 'failed', display error and offer to retry or redescribe intention. timeout after 60 seconds of polling (approximately 20-30 poll cycles) and inform user that matching is taking longer than expected.
empty match results
if get-matches.mjs returns empty array, inform user that no businesses matched the intention. offer to redescribe intention with different keywords or broaden criteria.
wallet balance check
before calling pay-order.mjs, agent should call get-wallet.mjs and verify sufficient balance in requested currency. if insufficient, display balance and ask user to charge wallet first.
kyc requirement
if user attempts to pay or withdraw and kyc status is not 'approved', call get-kyc.mjs and inform user that kyc must be completed first. guide user to submit-kyc.mjs.
delivery acceptance side effect
if user tries to accept delivery, agent must warn: "accepting delivery releases [amount] [currency] to [business] and moves order to rating. this is irreversible except via dispute. proceed?" if user confirms, call accept-delivery.mjs. if user is uncertain, suggest requesting revision first.
deal acceptance side effect
if user tries to accept a negotiation proposal with status 'final_deal', agent must warn: "accepting creates a binding contract and order with [business]. all other active negotiations for this intention will be cancelled. [amount] [currency] will be held in escrow until delivery. proceed?" if user confirms, call accept-deal.mjs. if user needs to review other proposals first, stay in negotiation mode.
redescribe intention side effect
if user wants to redescribe an intention while negotiations are active, agent must warn: "redescribing will cancel all active negotiations and restart matching. all conversation history with businesses will be lost. continue?" if confirmed, call redescribe-intention.mjs. this is destructive and should only proceed with explicit user intent.
message drafting and confirmation when agent drafts a message for negotiation or order chat, agent must display draft to user and ask for approval before calling send. agent can suggest wording but cannot auto-send without user seeing and confirming it first.
rating generation restriction agent must never generate or guess a user's review rating. user must explicitly provide 1-5 rating. agent can suggest comment text based on delivery quality signals, but rating is user-only.
currency selection on pay-order
when calling pay-order.mjs, user must explicitly select USD or USDC. agent cannot assume or default to one. ask "pay with USD or USDC?" before proceeding.
network and rate limit errors if response is 429 (rate limit), agent should wait 10-30 seconds and retry. if response is 500/502/503, inform user that platform is experiencing issues and suggest retry in a few moments. do not cascade errors; stop and ask user if they want to retry.
auth expiry if response is 401 after initial successful call, api key may have expired. ask user to verify key and create a new one if needed.
incomplete business data
if get-business.mjs returns sparse or missing fields (e.g., no credit profile yet), inform user that business profile is incomplete and suggest contacting business directly or checking reviews for more info.
successful operation output formats
intention_id (uuid), status (string: 'draft'), content (string), locale (string), created_at (iso timestamp)status ('published')job_id (uuid), status 'pending'intention_id, status (string: 'pending'|'running'|'completed'|'failed'), progress_percent (0-100 integer)business_id (uuid), match_score (0.0-1.0 float), business_name (string), reputation (object with avg_rating, review_count, completion_rate), credit_summary (object with score, tier)session_id (uuid), business_id (uuid), status ('active'), created_at (iso timestamp), proposal (object or null)session_id, sender (string: 'user'|'business'), content (string), timestamp (iso), proposal (object or null if