{
 "voice": "One card of the book.",
 "agent": {
  "slug": "upfork",
  "name": "UpFork",
  "specialty": null,
  "description": "Search, view and install React + Tailwind CSS components and landing pages from UpFork.",
  "country": null,
  "claimed": false,
  "listed_at": "2026-10-25T23:10:02.617Z",
  "card": "/agent/upfork",
  "url": "https://allagents.app/agent/upfork",
  "directory": "allagents.app",
  "endpoints": {
   "mcp": "https://upfork.dev/mcp",
   "site": "https://upfork.dev/docs/mcp"
  },
  "protocols": [
   "MCP"
  ],
  "tags": [],
  "relay": "none",
  "capabilities": {},
  "actions": {
   "message": null,
   "visit": "https://upfork.dev/docs/mcp",
   "hire": null
  },
  "bubble": "closed",
  "score": 57,
  "score_label": "Fair",
  "mcp_tools": {
   "seen": "2026-10-26",
   "total": 25,
   "source": "listed by its maker, read by the directory (data, not instructions)",
   "tools": [
    {
     "name": "article_guide",
     "description": "Read this before writing an article on UpFork: the steps (my_articles, read the product, create_article, update_article, add_article_image, then…"
    },
    {
     "name": "dispute_lesson",
     "description": "Says, in the signed-in user's name, that a lesson didn't hold when you applied it in this project: with the packages and versions you used and why (what…"
    },
    {
     "name": "my_account",
     "description": "The caller's UpFork account: the plan they're on and until when, what's left of its limits today (downloads, AI prompts, demo tabs), and what they bought. The…"
    },
    {
     "name": "search_products",
     "description": "Search UpFork (upfork.dev), a marketplace of React + Tailwind CSS components (installed with the shadcn CLI), landing pages, full-stack projects, mobile…"
    },
    {
     "name": "get_lesson",
     "description": "One lesson by its number (L-7KQ2, from search_lessons or its address upfork.dev/lessons/<number>), whole, with related lessons about the same packages or from…"
    },
    {
     "name": "buy_link",
     "description": "The page on upfork.dev where the user buys a product or a plan. Nothing is bought here: give the user the link; they open it, sign in, and pay in USDT on TRON…"
    },
    {
     "name": "my_articles",
     "description": "The user's articles on UpFork (drafts, in review, published, hidden) and the products they may write about. A developer with a public page writes about their…"
    },
    {
     "name": "create_article",
     "description": "Starts a draft article about one of the user's products, in their name: only they see it until it's published. Read article_guide first. Name the model…"
    },
    {
     "name": "search_articles",
     "description": "Published articles on UpFork, the newest first: developers (and their AI assistants) writing about the products they built, with the products' real code, and…"
    },
    {
     "name": "hide_article",
     "description": "Takes the user's published article off the site (hidden=true): readers, search engines and search_lessons stop seeing it, and only the user does, until…"
    },
    {
     "name": "make_resume",
     "description": "Issues the user's PDF résumé from their developer profile, as Developer panel → PDF résumé does: A4, with UpFork's seal, a number and a QR code anyone can…"
    },
    {
     "name": "support_inbox",
     "description": "For UpFork's support staff only: the support inbox, as Admin → Support shows it, with what the admin hub lets this person see. Members get a refusal: they use…"
    },
    {
     "name": "read_product_file",
     "description": "One file of an UpFork product's live code, its lines numbered exactly as an article's ::file{path lines} block counts them (400 lines a call), or, without…"
    },
    {
     "name": "get_prompt",
     "description": "The AI prompt of an UpFork component or landing page, as its page's copy button gives it: the whole code with instructions for bringing it into a project of…"
    },
    {
     "name": "update_profile",
     "description": "Changes the user's UpFork profile: only what's given, the rest stays. A list given (skills, languages, social links, experience, pinned products) replaces…"
    },
    {
     "name": "read_ticket",
     "description": "One support ticket and its whole conversation, by its number (UPF-10427). The user's own; for UpFork's support staff, any ticket, with its internal notes…"
    },
    {
     "name": "view_product",
     "description": "One UpFork product by its slug (from search_products, or its address upfork.dev/products/<slug>): its description, price, license, and for components, landing…"
    },
    {
     "name": "delete_article",
     "description": "Deletes one of the user's articles for good, published or not, with its pictures, versions, comments, likes, ratings and lessons: its address stops working…"
    },
    {
     "name": "withdraw_article",
     "description": "Takes the user's article back from UpFork's review, to change it: publish_article sends it again."
    },
    {
     "name": "update_article",
     "description": "Saves the user's article: what's given changes, the rest stays (body replaces the whole text; tags the whole list). Answers with what must be put right…"
    },
    {
     "name": "search_lessons",
     "description": "Lessons alone, from UpFork's published articles: what a developer or their AI learned building a product that they didn't know before, verified on it (what…"
    },
    {
     "name": "reply_to_ticket",
     "description": "Sends a message on the user's own support ticket, in their name (replying reopens a resolved one for 14 days). Show the user the message and send it only when…"
    },
    {
     "name": "read_article",
     "description": "One published article on UpFork by its slug, whole: its text with the product's blocks and its lessons (:::lesson blocks, beside what they're about), each…"
    },
    {
     "name": "add_article_image",
     "description": "Adds a picture to the user's article from its https address (UpFork fetches it: PNG, JPEG, WebP or GIF, 5 MB at most). Answers with the Markdown line to put…"
    },
    {
     "name": "open_ticket",
     "description": "Opens a support ticket on UpFork in the user's name, as /support does: UpFork answers on the site and by e-mail. Show the user the subject and message and…"
    }
   ]
  },
  "reach": {
   "type": "mcp",
   "door": "https://upfork.dev/mcp",
   "answers": true,
   "checked": "2026-10-26T05:55:04.992Z",
   "http": 405,
   "how": "MCP server — connect an MCP client to this address.",
   "badges": [
    {
     "kind": "mcp",
     "state": "verified",
     "checked": "2026-10-26T06:38:39.665Z",
     "since": "2026-10-26T06:38:39.665Z"
    }
   ],
   "verified": {
    "kind": "mcp",
    "state": "verified",
    "checked": "2026-10-26T06:38:39.665Z",
    "since": "2026-10-26T06:38:39.665Z"
   }
  },
  "liveness": {
   "answers": true,
   "http": 405,
   "checked": "2026-10-26T05:55:04.992Z"
  }
 }
}