D

Remlo Payroll API — MPP Grade D

https://www.remlo.xyz 54% (45/82)
Preview responses and set spending limits for this service through use.mpp.land Free budget controls, response samples, and reliability routing.

Compliance Checks

All paid ops declare 402 response MUST 10pt
All x-payment-info valid MUST 10pt
- Challenge has Cache-Control: no-store MUST 5pt
- Challenge digest on POST SHOULD 3pt
- Challenge has expires SHOULD 3pt
- Challenge has Problem Details SHOULD 2pt
- Challenge has required params MUST 5pt
- Challenge has WWW-Authenticate MUST 5pt
Challenge returns 402 MUST 10pt
Correct Content-Type MUST 5pt
Has Cache-Control on discovery SHOULD 5pt
Has input schemas SHOULD 5pt
Has llms.txt SHOULD 5pt
Has /openapi.json at root MUST 10pt
Has required top-level fields MUST 10pt
Served over HTTPS MUST 10pt
Uses standard categories SHOULD 2pt
3 issues
  • Missing 402 response declaration on GET /api/reputation/{address}
  • Missing 402 response declaration on POST /api/x402/payroll/execute
  • Endpoint GET /api/reputation/{address} returned 200 without payment

Paid Operations (20)

POST /api/x402/streams dynamic
Create a Solana payroll stream ($0.05, stub)
Amount
map[amount:0.050000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: authMode: x402 price: map[amount:0.050000 currency:USD mode:fixed] protocols: [map[x402:map[]]]

Input Schema

FieldTypeRequiredDescription
amountUsdc number Yes Total USDC to stream
cancelAuthority string Yes Who can cancel the stream early
enum: sender, recipient, both
cliffSeconds number No Optional cliff before any funds vest
durationSeconds number Yes Stream window in seconds
recipientAddress string Yes Solana base58 pubkey

Response Schema (200)

FieldTypeDescription
claimedUsdc number -
estimatedEndAt integer Unix seconds
note string -
provider string -
remainingUsdc number -
startedAt integer Unix seconds
streamId string -
stub boolean -
GET /api/reputation/{address} dynamic
Read cross-chain reputation for any subject (free, no auth)
Amount
map[amount:0.000000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
Non-standard x-payment-info fields: authMode: none price: map[amount:0.000000 currency:USD mode:fixed] protocols: [map[x402:map[]]]

Parameters

NameInTypeRequiredDescription
address path string Yes Solana base58 pubkey OR numeric ERC-8004 agent ID

Response Schema (200)

FieldTypeDescription
last_updated string (date-time) -
solana object -
subject object -
tempo object -
unified object -
GET /api/mpp/treasury/yield-rates dynamic
Get current treasury yield rates

Returns current APY and allocation breakdown for the Remlo treasury.

Amount
map[amount:0.010000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
token query string No Optional token address filter (defaults to pathUSD)

Input Schema

FieldTypeRequiredDescription
token string No Optional token address

Response Schema (200)

FieldTypeDescription
allocation array[number] -
apy_bps number APY in basis points
apy_percent number APY as percentage
sources array[string] -
timestamp number -
POST /api/mpp/payroll/execute dynamic
Execute a payroll run on-chain

Triggers batch payroll execution for a prepared payroll run. Agent wallet signs the on-chain transaction.

Amount
map[amount:1.000000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:1.000000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Input Schema

FieldTypeRequiredDescription
payrollRunId string Yes UUID of the payroll run to execute

Response Schema (200)

FieldTypeDescription
employer_account_id string -
employer_admin_wallet string -
payroll_run_id string -
recipient_count number -
success boolean -
tx_hash string -
POST /api/mpp/employee/advance dynamic
Claim accrued salary advance

Allows an employee to claim their currently accrued salary stream balance as an on-demand advance.

Amount
map[amount:0.500000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.500000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Input Schema

FieldTypeRequiredDescription
employeeAddress string Yes 0x-prefixed EVM wallet address of the employee

Response Schema (200)

FieldTypeDescription
claimed_at string (date-time) -
employee_address string -
success boolean -
tx_hash string -
POST /api/mpp/compliance/check dynamic
Run compliance screening on a wallet

Screens a wallet address against configured compliance policies (OFAC, custom blocklists).

Amount
map[amount:0.050000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.050000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Input Schema

FieldTypeRequiredDescription
employerId string No Optional employer UUID for employer-scoped policies
policyId number No Optional policy ID (defaults to global policy)
walletAddress string Yes 0x-prefixed EVM wallet address to screen

Response Schema (200)

FieldTypeDescription
authorized boolean -
checked_at string (date-time) -
policy_id number -
result string -
risk_score number -
wallet_address string -
GET /api/mpp/employee/balance/stream dynamic
Stream real-time accruing salary balance

Server-Sent Events stream of an employee's real-time accruing salary balance, ticking every second.

Amount
map[amount:0.001000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.001000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
employeeId query string No Employee UUID
address query string No 0x-prefixed EVM wallet address (legacy fallback)

Input Schema

FieldTypeRequiredDescription
employeeId string Yes Employee UUID
streamId string No Stream contract ID

Response Schema (200)

FieldTypeDescription
accrued_raw string -
accrued_usd string -
address string -
balance string -
balanceUsd string -
employeeId string -
salary_per_second_usd string -
tick number -
timestamp number -
GET /api/mpp/payslips/{runId}/{employeeId} dynamic
Fetch a specific payslip

Retrieves the payslip for an employee in a specific payroll run.

Amount
map[amount:0.020000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.020000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
runId path string Yes Payroll run UUID
employeeId path string Yes Employee UUID

Input Schema

FieldTypeRequiredDescription
employeeId string Yes Employee UUID (path)
runId string Yes Payroll run UUID (path)

Response Schema (200)

FieldTypeDescription
payslip object -
POST /api/mpp/memo/decode dynamic
Decode a 32-byte payroll memo

Decodes a 0x-prefixed 32-byte hex memo into structured payroll fields.

Amount
map[amount:0.010000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Input Schema

FieldTypeRequiredDescription
memo string Yes 0x-prefixed 32-byte hex memo (66 chars total)

Response Schema (200)

FieldTypeDescription
fields object -
memo string -
GET /api/mpp/employee/{id}/history dynamic
Get employee payment history

Returns paginated payment history for an employee.

Amount
map[amount:0.050000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.050000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
id path string Yes Employee UUID
limit query number No Number of records to return (max 100)

Input Schema

FieldTypeRequiredDescription
cursor string No Optional pagination cursor
id string Yes Employee UUID (path)
limit integer No Optional page size

Response Schema (200)

FieldTypeDescription
count number -
employee_id string -
payments array[object] -
POST /api/mpp/bridge/offramp dynamic
Initiate fiat off-ramp transfer

Converts USDC.e balance to fiat and initiates a bank transfer via the Bridge protocol.

Amount
map[amount:0.250000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.250000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Input Schema

FieldTypeRequiredDescription
amount string Yes USD amount to off-ramp (e.g. "100.00")
bankAccountId string Yes Bridge-registered bank account ID
destinationType string Yes Bank transfer rail
enum: ach, sepa, spei, pix
employeeId string Yes Employee UUID

Response Schema (200)

FieldTypeDescription
amount string -
created_at string (date-time) -
destination_type string -
status string -
success boolean -
transfer_id string -
POST /api/mpp/treasury/optimize dynamic
Get AI-powered treasury optimization recommendations

Analyzes current treasury state and returns rebalancing recommendations to maximize yield.

Amount
map[amount:0.100000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.100000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Input Schema

FieldTypeRequiredDescription
employerId string Yes Employer UUID
question string No Optional natural-language question about the treasury

Response Schema (200)

FieldTypeDescription
analyzedAt string (date-time) -
current_allocation array[number] -
employerAccountId string -
employerAdminWallet string -
employerId string -
projected_annual_yield_usd string -
question string -
recommendations array[object] -
recommended_allocation array[number] -
suggestion string -
summary object -
GET /api/mpp/marketplace/compliance-list/{employerId} dynamic
Fetch employer compliance-cleared wallet list

Returns the list of compliance-cleared wallet addresses for an employer, suitable for marketplace use.

Amount
map[amount:0.500000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.500000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
employerId path string Yes Employer UUID
limit query number No Maximum number of wallet entries to return

Input Schema

FieldTypeRequiredDescription
employerId string Yes Employer UUID (path)

Response Schema (200)

FieldTypeDescription
clearedWallets number -
lastUpdated string (date-time) -
list array[object] -
providerId string -
POST /api/mpp/escrow/post dynamic
Post an agent-to-agent escrow with Claude-judge settlement

Creates a three-party escrow: requester locks USDC, worker submits a deliverable, Claude judge decides against rubric_prompt. Funds custodied on-chain by the remlo_escrow Anchor program PDA — not by Remlo. Settlement and refund are permissionless after the verdict is posted. Max 100 USDC per escrow, 1h-7d expiry, max 2000-char rubric.

Amount
map[amount:0.100000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.100000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
X-Agent-Identifier header string Yes Pre-registered agent identity authorized for this employer.

Input Schema

FieldTypeRequiredDescription
amount_usdc string Yes USDC amount as decimal string (e.g. "10.00"), max 100.00
employer_id string Yes Remlo employer UUID
expiry_hours number No Hours until escrow auto-refunds if no verdict. Default 24, max 168 (7 days).
rubric_prompt string Yes Validation criteria for Claude to evaluate the deliverable against. Max 2000 chars.
worker_agent_identifier string Yes Agent identity of the worker — must match X-Agent-Identifier when they call /deliver
worker_wallet_address string Yes Solana address of the worker who will receive funds on approved verdict

Response Schema (200)

FieldTypeDescription
applied_expiry_hours number Hours actually applied (reputation-scaled from requested).
escrow_id string -
escrow_pda string -
expires_at string (date-time) -
initialize_signature string -
requested_expiry_hours number Hours the caller requested.
solana_explorer_urls object -
status string -
worker_attestation_count number Number of prior SAS attestations driving the tier.
worker_reputation_tier string Worker SAS reputation tier at escrow-post time.
POST /api/mpp/escrow/deliver dynamic
Submit a deliverable URI for an escrow

The submitting agent must match worker_agent_identifier recorded at post time. Validation and settlement broadcast asynchronously — poll /status for the final verdict.

Amount
map[amount:0.020000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.020000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
X-Agent-Identifier header string Yes Must equal worker_agent_identifier of the target escrow.

Input Schema

FieldTypeRequiredDescription
deliverable_uri string Yes HTTPS URL, IPFS link, or inline data: URI
escrow_id string Yes
POST /api/mpp/escrow/deliver-signed dynamic
Submit a worker-signed deliverable (external-key agents)

For worker agents that manage their own Solana keys instead of delegating to Remlo Privy. Client signs the submit_deliverable instruction offline; Remlo verifies signature + uri_hash match, then broadcasts and runs validator+settle.

Amount
map[amount:0.020000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.020000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
X-Agent-Identifier header string Yes Must equal worker_agent_identifier of the target escrow.

Input Schema

FieldTypeRequiredDescription
deliverable_uri string Yes HTTPS URL, IPFS link, or inline data: URI
escrow_id string Yes
signed_transaction string Yes Base64-encoded fully-signed Solana Transaction
GET /api/mpp/escrow/{id}/status dynamic
Read escrow lifecycle status

Public read access to any x402-paying caller. Returns public-facing fields only — no validator model, no internal hashes, no employer scope.

Amount
map[amount:0.010000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.010000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
id path string Yes Escrow UUID

Input Schema

FieldTypeRequiredDescription
id string Yes Escrow UUID (path)

Response Schema (200)

FieldTypeDescription
amount_usdc string -
deliverable_uri string -
escrow_id string -
expires_at string (date-time) -
rubric_prompt string -
signatures object -
solana_explorer_urls object -
status string -
validator_confidence integer -
validator_reasoning string -
validator_verdict string -
worker_wallet_address string -
POST /api/mpp/agent/pay dynamic
Agent-to-agent direct payment

Sends USDC from a Remlo employer treasury to a recipient wallet. Designed for autonomous agents paying other autonomous agents: pay $0.05 via x402, specify recipient and amount, receive on-chain tx hash. The caller must identify itself via the X-Agent-Identifier header; that identifier must be pre-registered by the employer at /dashboard/settings/agents with per-transaction and per-day spend caps. Calls that exceed caps or use an unregistered identifier are rejected with 403 (AGENT_NOT_AUTHORIZED, PER_TX_CAP_EXCEEDED, PER_DAY_CAP_EXCEEDED) — the $0.05 x402 fee is still charged. Successful calls write ERC-8004 Reputation Registry feedback to the Remlo Payroll Agent on-chain identity; the reputation record is publicly queryable at /api/reputation/{agentId}.

Amount
map[amount:0.050000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.050000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Parameters

NameInTypeRequiredDescription
X-Agent-Identifier header string Yes Pre-registered agent identity (EVM address, AgentCard URI, or opaque token). Must match an active employer_agent_authorizations row for the employer.

Input Schema

FieldTypeRequiredDescription
amount string Yes USDC amount as decimal string (e.g. "12.50")
employer_id string Yes Remlo employer UUID whose treasury funds the transfer
recipient_wallet string Yes 0x-prefixed EVM address of the recipient agent or human
reference string No Optional free-text reference for audit trail

Response Schema (200)

FieldTypeDescription
amount string -
employer_account_id string -
employer_id string -
explorer_url string -
memo string -
recipient string -
reference string -
success boolean -
timestamp string (date-time) -
tx_hash string -
POST /api/mpp/agent/session/treasury dynamic
Multi-action treasury management

Perform treasury management actions (balance, yield, rebalance, headcount) per call. Designed for AI agent workflows requiring treasury reads/writes.

Amount
map[amount:0.020000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
402 Declared
Yes
Non-standard x-payment-info fields: price: map[amount:0.020000 currency:USD mode:fixed] protocols: [map[x402:map[]] map[mpp:map[currency: intent: method:]]]

Input Schema

FieldTypeRequiredDescription
action string Yes Treasury action to perform
enum: balance, yield, rebalance, headcount
allocation array No Target allocation percentages (for rebalance action)
employerId string Yes Employer UUID
params object No Additional action parameters

Response Schema (200)

FieldTypeDescription
action string -
result object Action-specific result payload
timestamp number -
POST /api/x402/payroll/execute dynamic
Execute an agent-planned payroll decision on-chain

Authenticated via Privy JWT (identity-only, zero-dollar auth). Broadcasts any Tempo payments via REMLO_AGENT_PRIVATE_KEY (legacy transitional path) and any Solana payments via a Privy server wallet with policy enforcement. Mixed-chain decisions return both tempo_tx_hash and solana_signatures. Per-item policy rejections are surfaced in solana_policy_rejections without failing the entire run — the affected payment_items rows are marked status=policy_rejected with the rejection reason.

Amount
map[amount:0.000000 currency:USD mode:fixed]
Currency
-
Method
Intent
-
Non-standard x-payment-info fields: authMode: identity price: map[amount:0.000000 currency:USD mode:fixed] protocols: [map[x402:map[]]]

Input Schema

FieldTypeRequiredDescription
decision_id string Yes agent_decisions row UUID to execute
employer_id string Yes Employer UUID

Response Schema (200)

FieldTypeDescription
decision_id string -
employee_count integer -
payroll_run_id string -
solana_broadcast_error string -
solana_explorer_urls array[string] -
solana_policy_rejections array[object] -
solana_signatures array[string] -
tempo_broadcast_error string -
tempo_explorer_url string -
tempo_tx_hash string -
total_amount number -

Payment Methods

Methods
-
Intents
-
Currencies (discovery)
-
Multiple Challenges
No

Security

TLS Version
TLSv1.3
Challenge ID Unique
-
Challenge ID Length
-
Digest Binding
-

Uptime

Discovery
Reachable (196ms)
Challenge
Reachable (170ms)
Last Checked

Schema Completeness

Paid Operations
20
With Input Schema
19
With Description
20
1 missing schema
  • GET /api/reputation/{address}

Documentation

Homepage
-
API Reference
-
llms.txt
-

Discovery

OpenAPI URL
https://www.remlo.xyz/openapi.json
OpenAPI Version
3.1.0
Service Version
1.0.0
Document Size
37738 bytes
Document Hash
593730ebbc5bfd7d91027b4275df1d9c05696e18d5a14ae39c89c103fc0ca7db

Version History (1 snapshots)

  • document hash changed (no semantic differences detected)
Scan snapshots
Date Grade Score Response Status
2026-04-21 D 54% 479ms Up