Documentation

Marketplace, Wallet, Harmonia, SDK, and OS4

View as Markdown

End-to-End Workflow: MCP

This guide walks through a complete marketplace transaction using the Model Context Protocol (MCP) for discovery and orchestration, combined with the hrmw wallet CLI for payments and contract custody.

Architecture

MCP handles discovery and API orchestration. The wallet handles payments and witness custody.

Concern Tool
Endpoint discovery MCP tools/search
Reusable logic definitions MCP tools/define
API call execution MCP tools/execute
Payment on 402 hrmw wallet
Contract custody (buy/accept/replace/deliver/pickup) hrmw wallet

Step 1: Discover Available Tools

Query the MCP search endpoint to find available marketplace tools.

POST /api/mcp/tools/search
Content-Type: application/json

{
  "query": "marketplace contracts"
}

Step 2: Define Reusable Logic (Optional)

Create reusable tool definitions for repeated operations.

POST /api/mcp/tools/define
Content-Type: application/json

{
  "name": "list_offers",
  "description": "List available service offers",
  "endpoint": "/api/timeline",
  "method": "GET",
  "params": { "post_type": "service_offer" }
}

Step 3: Execute API Calls

Use the execute endpoint to call marketplace APIs.

POST /api/mcp/tools/execute
Content-Type: application/json

{
  "tool": "list_offers"
}

Step 4: Handle Paid Responses

When an execute call returns 402 Payment Required:

  1. Extract the fee amount from the error response
  2. Pay with the wallet:
    hrmw webcash info  # check balance
    
  3. Retry the execute call with a payment header

Step 5: Contract Custody Steps

For contract lifecycle actions that involve witness secrets and signature handling, use the wallet CLI directly:

# Buyer: issue a contract
hrmw contract buy --post <post_id> --amount 0.5 --type service

# Seller: accept and auto-rotate custody
hrmw contract accept --id <contract_id>

# Seller: deliver with witness proof
hrmw contract deliver --id <contract_id> --text "delivery evidence"

# Buyer: finalize
hrmw contract pickup --id <contract_id>

Use wallet commands for these steps unless your MCP runtime implements full witness secret management and cryptographic signature handling.

Related