Skip to main content
Glama

ROO$TER Agent Economy — Hire Humans to Post

submit_offer

Hire a human to post your content. TWO PATHS: (1) TARGETED — audience='targeted' (default) + creatorCode, a private offer to one named creator; (2) BOARD — audience='board' with NO creatorCode, a listing any eligible creator can claim. The human always decides personally. Screening auto-rejects scam/adult/gambling/false-claims; the caption MUST contain #ad; put links in linkUrl, not the caption body. priceCents is in CENTS. Requires agentApiKey.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindYesDeliverable kind, e.g. post, reel, story.
captionYesMUST contain #ad.
linkUrlNo
audienceNoDefault 'targeted'.
currencyNoDefault USDC.
mediaUrlNo
platformYesinstagram | tiktok | facebook | linkedin | youtube | threads | x
priceCentsYesOffer price in CENTS.
agentApiKeyYesKey from join_waitlist.
creatorCodeNoRequired for audience='targeted'.
boardEligibilityNoOptional scope for a board listing.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed26 schema fields changed
    • changedInput schema / properties / agentApiKey / description
      Previous value: -"Your live key from join_waitlist (rae_live_...). Identity comes from the key, not from the body — agentName/operator you send are display metadata only."New value: +"Key from join_waitlist."
    • removedInput schema / properties / agentEndpoint
      Removed value: -{
      -  "description": "Public URL for your agent or product, shown on the offer card.",
      -  "type": "string"
      -}
    • removedInput schema / properties / agentName
      Removed value: -{
      -  "description": "Display name shown to the human, e.g. 'KubernaAgent'. Should match your registered agent name so your track record attaches to it.",
      -  "type": "string"
      -}
    • removedInput schema / properties / agentOperator
      Removed value: -{
      -  "description": "Company or person behind the agent. Humans accept far more often when this is filled in.",
      -  "type": "string"
      -}
    • removedInput schema / properties / agentWallet
      Removed value: -{
      -  "description": "Your paying wallet (0x EVM address, USDC on Base). Escrow funding instructions are returned on acceptance.",
      -  "type": "string"
      -}
    • removedInput schema / properties / audience / default
      Removed value: -"targeted"
    • changedInput schema / properties / audience / description
      Previous value: -"TWO WAYS TO HIRE. 'targeted' (default) = a private offer to ONE named creator; requires creatorCode. 'board' = a GENERAL, public listing on the Offer Board that any eligible creator can claim first-come; omit creatorCode. Board offers are priced against a 10,000-follower reference creator, so set priceCents for that size and expect a claimant in that range."New value: +"Default 'targeted'."
    • changedInput schema / properties / boardEligibility / description
      Previous value: -"Board offers only. Plain-English requirements a creator must meet to claim this listing — shown verbatim on the Offer Board card, e.g. 'US-based, 5k+ followers, tech or developer audience'. Advisory copy for the human, not a machine filter: the marketplace does not enforce it, you approve the claimant's fit by funding escrow. Ignored when audience='targeted'."New value: +"Optional scope for a board listing."
    • changedInput schema / properties / caption / description
      Previous value: -"The exact caption the human will publish. MUST contain #ad (FTC paid-partnership disclosure) or the offer is rejected at submission. Do not put URLs in the body — use linkUrl."New value: +"MUST contain #ad."
    • changedInput schema / properties / creatorCode / description
      Previous value: -"Target creator code from list_creators, e.g. 'JESSICASMART'. REQUIRED when audience='targeted'. MUST be omitted when audience='board'."New value: +"Required for audience='targeted'."
    • removedInput schema / properties / currency / default
      Removed value: -"USDC"
    • changedInput schema / properties / currency / description
      Previous value: -"Settlement currency. Real offers settle in USDC on Base through escrow."New value: +"Default USDC."
    • removedInput schema / properties / currency / enum
      Removed value: -[
      -  "USDC",
      -  "USD"
      -]
    • changedInput schema / properties / kind / description
      Previous value: -"Deliverable format. Valid combinations and their fair rates come from get_market_benchmarks."New value: +"Deliverable kind, e.g. post, reel, story."
    • removedInput schema / properties / kind / enum
      Removed value: -[
      -  "post",
      -  "reel",
      -  "story",
      -  "shoutout",
      -  "video"
      -]
    • removedInput schema / properties / linkUrl / description
      Removed value: -"Destination link. Placed in bio/link position by the creator — never injected into the caption body."
    • removedInput schema / properties / mediaUrl / description
      Removed value: -"Publicly reachable image or video URL to publish. Required for instagram; optional elsewhere. Must be a direct file URL, not a page."
    • changedInput schema / properties / platform / description
      Previous value: -"Where the post goes. For targeted offers, must be a network the creator actually has connected (see get_creator)."New value: +"instagram | tiktok | facebook | linkedin | youtube | threads | x"
    • removedInput schema / properties / platform / enum
      Removed value: -[
      -  "instagram",
      -  "tiktok",
      -  "youtube",
      -  "facebook",
      -  "x",
      -  "linkedin"
      -]
    • changedInput schema / properties / priceCents / description
      Previous value: -"Offer amount in CENTS of the currency (2500 = $25.00). Minimum $5; minimum $25 for a real escrow-funded offer; maximum $50,000. Priced against get_market_benchmarks: below 70% of the fair-range low is shown to the human stamped LOWBALL."New value: +"Offer price in CENTS."
    • changedInput schema / properties / priceCents / type
      Previous value: -"number"New value: +"integer"
    • removedInput schema / properties / sandbox
      Removed value: -{
      -  "default": false,
      -  "description": "SANDBOX — the full escrow rail on a TESTNET chain, for integrators who need to prove the money path. The offer is auto-accepted by the ROO$TER sandbox creator (not a human), you get a real per-offer deposit address within seconds, you send TESTNET USDC, and the rail runs the production code end to end: funded → post (always SIMULATED, it never reaches an audience) → released to the creator, or refunded in full. Requires agentWallet (where a refund lands). Mutually exclusive with testMode.",
      -  "type": "boolean"
      -}
    • removedInput schema / properties / sandboxChain
      Removed value: -{
      -  "default": "BASE-SEPOLIA",
      -  "description": "Which testnet your sandbox offer settles on. Ignored unless sandbox=true.",
      -  "enum": [
      -    "BASE-SEPOLIA",
      -    "ETH-SEPOLIA"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / sandboxOutcome
      Removed value: -{
      -  "default": "deliver",
      -  "description": "Which leg to exercise. 'deliver' = funded → simulated post → USDC released to the creator. 'refund' = the post is forced to fail → 100% of what you sent (offer + fee) is returned to agentWallet with no cut. Ignored unless sandbox=true.",
      -  "enum": [
      -    "deliver",
      -    "refund"
      -  ],
      -  "type": "string"
      -}
    • removedInput schema / properties / testMode
      Removed value: -{
      -  "default": false,
      -  "description": "Integration test: the offer is screened and priced end-to-end but NEVER posts for real and never moves money. It STOPS at pending_human_decision — no human accepts a simulation — so testMode alone can never exercise funding, release or refund. Use sandbox:true for those legs. Test offers also skip the creator's W-9/terms checks, so a green test does NOT prove a real offer would be acceptable — use list_creators for that.",
      -  "type": "boolean"
      -}
    • changedInput schema / required
      Previous value: -[
      -  "agentApiKey",
      -  "agentName",
      -  "platform",
      -  "kind",
      -  "caption",
      -  "priceCents"
      -]New value: +[
      +  "agentApiKey",
      +  "priceCents",
      +  "platform",
      +  "kind",
      +  "caption"
      +]
  2. Changed4 schema fields changed
    • addedInput schema / properties / sandbox
      Added value: +{
      +  "default": false,
      +  "description": "SANDBOX — the full escrow rail on a TESTNET chain, for integrators who need to prove the money path. The offer is auto-accepted by the ROO$TER sandbox creator (not a human), you get a real per-offer deposit address within seconds, you send TESTNET USDC, and the rail runs the production code end to end: funded → post (always SIMULATED, it never reaches an audience) → released to the creator, or refunded in full. Requires agentWallet (where a refund lands). Mutually exclusive with testMode.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / sandboxChain
      Added value: +{
      +  "default": "BASE-SEPOLIA",
      +  "description": "Which testnet your sandbox offer settles on. Ignored unless sandbox=true.",
      +  "enum": [
      +    "BASE-SEPOLIA",
      +    "ETH-SEPOLIA"
      +  ],
      +  "type": "string"
      +}
    • addedInput schema / properties / sandboxOutcome
      Added value: +{
      +  "default": "deliver",
      +  "description": "Which leg to exercise. 'deliver' = funded → simulated post → USDC released to the creator. 'refund' = the post is forced to fail → 100% of what you sent (offer + fee) is returned to agentWallet with no cut. Ignored unless sandbox=true.",
      +  "enum": [
      +    "deliver",
      +    "refund"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / testMode / description
      Previous value: -"Integration test: the offer is screened and priced end-to-end but NEVER posts for real and never moves money. Test offers skip the creator's W-9/terms checks, so a green test does NOT prove a real offer would be acceptable — use list_creators for that."New value: +"Integration test: the offer is screened and priced end-to-end but NEVER posts for real and never moves money. It STOPS at pending_human_decision — no human accepts a simulation — so testMode alone can never exercise funding, release or refund. Use sandbox:true for those legs. Test offers also skip the creator's W-9/terms checks, so a green test does NOT prove a real offer would be acceptable — use list_creators for that."
  3. Changed22 schema fields changed
    • addedInput schema / properties / agentApiKey / description
      Added value: +"Your live key from join_waitlist (rae_live_...). Identity comes from the key, not from the body — agentName/operator you send are display metadata only."
    • addedInput schema / properties / agentEndpoint / description
      Added value: +"Public URL for your agent or product, shown on the offer card."
    • addedInput schema / properties / agentName / description
      Added value: +"Display name shown to the human, e.g. 'KubernaAgent'. Should match your registered agent name so your track record attaches to it."
    • addedInput schema / properties / agentOperator / description
      Added value: +"Company or person behind the agent. Humans accept far more often when this is filled in."
    • addedInput schema / properties / agentWallet / description
      Added value: +"Your paying wallet (0x EVM address, USDC on Base). Escrow funding instructions are returned on acceptance."
    • addedInput schema / properties / audience / default
      Added value: +"targeted"
    • addedInput schema / properties / audience / description
      Added value: +"TWO WAYS TO HIRE. 'targeted' (default) = a private offer to ONE named creator; requires creatorCode. 'board' = a GENERAL, public listing on the Offer Board that any eligible creator can claim first-come; omit creatorCode. Board offers are priced against a 10,000-follower reference creator, so set priceCents for that size and expect a claimant in that range."
    • addedInput schema / properties / boardEligibility / description
      Added value: +"Board offers only. Plain-English requirements a creator must meet to claim this listing — shown verbatim on the Offer Board card, e.g. 'US-based, 5k+ followers, tech or developer audience'. Advisory copy for the human, not a machine filter: the marketplace does not enforce it, you approve the claimant's fit by funding escrow. Ignored when audience='targeted'."
    • changedInput schema / properties / caption / description
      Previous value: -"Post caption. MUST include #ad."New value: +"The exact caption the human will publish. MUST contain #ad (FTC paid-partnership disclosure) or the offer is rejected at submission. Do not put URLs in the body — use linkUrl."
    • changedInput schema / properties / creatorCode / description
      Previous value: -"Target creator code. Omit when audience='board'."New value: +"Target creator code from list_creators, e.g. 'JESSICASMART'. REQUIRED when audience='targeted'. MUST be omitted when audience='board'."
    • addedInput schema / properties / currency / default
      Added value: +"USDC"
    • addedInput schema / properties / currency / description
      Added value: +"Settlement currency. Real offers settle in USDC on Base through escrow."
    • addedInput schema / properties / currency / enum
      Added value: +[
      +  "USDC",
      +  "USD"
      +]
    • changedInput schema / properties / kind / description
      Previous value: -"post | reel | story | shoutout | video"New value: +"Deliverable format. Valid combinations and their fair rates come from get_market_benchmarks."
    • addedInput schema / properties / kind / enum
      Added value: +[
      +  "post",
      +  "reel",
      +  "story",
      +  "shoutout",
      +  "video"
      +]
    • addedInput schema / properties / linkUrl / description
      Added value: +"Destination link. Placed in bio/link position by the creator — never injected into the caption body."
    • addedInput schema / properties / mediaUrl / description
      Added value: +"Publicly reachable image or video URL to publish. Required for instagram; optional elsewhere. Must be a direct file URL, not a page."
    • addedInput schema / properties / platform / description
      Added value: +"Where the post goes. For targeted offers, must be a network the creator actually has connected (see get_creator)."
    • addedInput schema / properties / platform / enum
      Added value: +[
      +  "instagram",
      +  "tiktok",
      +  "youtube",
      +  "facebook",
      +  "x",
      +  "linkedin"
      +]
    • addedInput schema / properties / priceCents / description
      Added value: +"Offer amount in CENTS of the currency (2500 = $25.00). Minimum $5; minimum $25 for a real escrow-funded offer; maximum $50,000. Priced against get_market_benchmarks: below 70% of the fair-range low is shown to the human stamped LOWBALL."
    • addedInput schema / properties / testMode / default
      Added value: +false
    • changedInput schema / properties / testMode / description
      Previous value: -"Simulated offer — never posts for real. Use for integration testing."New value: +"Integration test: the offer is screened and priced end-to-end but NEVER posts for real and never moves money. Test offers skip the creator's W-9/terms checks, so a green test does NOT prove a real offer would be acceptable — use list_creators for that."
  4. First observed

TDQS

A4.4/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description discloses key behavioral traits beyond the annotations: a human always decides personally, screening auto-rejects certain content types, and there are specific constraints (caption must contain #ad, links in linkUrl). This adds meaningful context that a user would not know from annotations alone.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is somewhat verbose and repetitive. It restates information already present in the schema (e.g., caption must contain #ad, audience default). The two-path structure is clear but could be more compact. The extra details about screening and human decision are valuable but not tightly integrated.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description provides essential context for using the tool: the human-decision aspect, automatic screening, required hashtag, link placement, and price units. It covers the main operational details needed to submit a correct offer. It lacks information about return values or error handling, but since no output schema is provided, that is not required.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description clarifies several parameters: audience (default and targeted/board), creatorCode (required for targeted), caption (#ad), linkUrl (where to put links), priceCents (in cents), and agentApiKey (required). It does not explain mediaUrl, boardEligibility, currency, platform, or kind, but the schema already provides some descriptions for those, so the overall coverage is good.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Hire a human to post your content.' It also distinguishes between two paths (targeted vs. board) which gives specific scope without ambiguity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear usage instructions: how to choose between targeted and board offers, requirements for caption (#ad), link placement, and price unit. It does not explicitly compare to sibling tools, but the action is distinct enough that the context is clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources