Skip to main content

Tool Reference

Complete reference for all 4 MCP tools. Each tool is called automatically by your AI assistant based on your natural language queries.

search_jobs

Search Upwork jobs with 40+ filters across 5 categories. Returns an array of matching jobs with full details including client stats, budget, skills, and direct Upwork links.

Basic Settings

ParameterTypeDescriptionExample
limitintegerMaximum number of jobs to return(1-10,000)1000
searchPeriodstringRelative time window for job search("1h", "6h", "24h", "7d", "14d", "30d")"24h"
fromDatestring (ISO)Start of date range (ISO 8601)(Any valid date)"2025-01-01"
toDatestring (ISO)End of date range (ISO 8601)(Any valid date)"2025-12-31"
jobCategoriesstring[]Filter by Upwork job categories(See Categories page)["Web Development"]

Keyword Filters

ParameterTypeDescriptionExample
includeKeywords.keywordsstring[]Terms that must appear in the job["React", "TypeScript"]
includeKeywords.matchTitlebooleanMatch keywords against job titletrue
includeKeywords.matchDescriptionbooleanMatch keywords against job descriptiontrue
includeKeywords.matchSkillsbooleanMatch keywords against required skillstrue
excludeKeywords.keywordsstring[]Terms to exclude from results["WordPress", "Shopify"]
excludeKeywords.matchTitlebooleanExclude from title matchestrue
excludeKeywords.matchDescriptionbooleanExclude from description matchestrue
excludeKeywords.matchSkillsbooleanExclude from skill matchestrue

Budget & Payment

ParameterTypeDescriptionExample
budget.hourlyRate.minstring (USD)Minimum hourly rate"50"
budget.hourlyRate.maxstring (USD)Maximum hourly rate"200"
budget.fixedPrice.minstring (USD)Minimum fixed-price budget"1000"
budget.fixedPrice.maxstring (USD)Maximum fixed-price budget"50000"
budget.connectsPrice.minintegerMinimum application cost in connects4
budget.connectsPrice.maxintegerMaximum application cost in connects16
budget.jobDurationsstring[]Filter by project duration["UP_TO_THREE_MONTHS"]
budget.hourlyWorkloadsstring[]Filter by weekly hours["MORE_THAN_30_HOURS"]
budget.minClientHireRateintegerMinimum client hire rate percentage50
budget.allowUnspecifiedBudgetbooleanInclude jobs with no budget specifiedfalse
budget.onlyContractToHirebooleanOnly contract-to-hire positionstrue
budget.noHireRatebooleanInclude clients with no hire rate datafalse
budget.noAvgHourlyRatePaidbooleanInclude clients with no avg hourly ratefalse
budget.avgHourlyRate.minstring (USD)Minimum average rate paid by client"40"
budget.avgHourlyRate.maxstring (USD)Maximum average rate paid by client"150"
Duration values: “UP_TO_ONE_MONTH”, “UP_TO_THREE_MONTHS”, “UP_TO_SIX_MONTHS”, “MORE_THAN_SIX_MONTHS”. Workload values: “LESS_THAN_30_HOURS”, “MORE_THAN_30_HOURS”.

Client Requirements

ParameterTypeDescriptionExample
client.paymentMethodVerifiedbooleanRequire verified payment methodtrue
client.phoneNumberVerifiedbooleanRequire verified phone numbertrue
client.minFeedbackScorestring (0-5)Minimum client feedback rating"4.5"
client.totalSpent.minstring (USD)Minimum total client spend on Upwork"10000"
client.totalSpent.maxstring (USD)Maximum total client spend"1000000"
client.includeLocationsobject[]Client locations to include[{"type":"COUNTRY","value":"US"}]
client.excludeLocationsobject[]Client locations to exclude[{"type":"COUNTRY","value":"IN"}]
client.includeIndustrystring[]Filter by client industry["Technology"]
client.excludeIndustrystring[]Exclude client industries["Healthcare"]
client.companySizeRangestring[]Filter by company size["10-50"]
client.timezonesstring[]IANA timezone identifiers["America/New_York"]
client.includeWithNoFeedbackbooleanInclude clients with no feedback historyfalse
client.hireHistorystring[]Filter by client hire history["1-3"]
client.descriptionLanguage.includestring[]Include languages (ISO-639-2 codes)["eng"]
client.descriptionLanguage.excludestring[]Exclude languages (ISO-639-2 codes)["ara"]
Location types: “COUNTRY” (ISO 3166-1 alpha-2) or “REGION” (north_america, europe, asia, south_america, africa, oceania). See Locations reference.

Vendor Preferences

ParameterTypeDescriptionExample
vendor.experienceLevelstring[]Required experience level["EXPERT"]
vendor.englishProficiencystringRequired English level"FLUENT"
vendor.typestring[]Vendor type filter["FREELANCER"]
vendor.includeLocationsobject[]Preferred freelancer locations[{"type":"COUNTRY","value":"US"}]
vendor.includeFeaturedbooleanInclude only featured jobstrue
vendor.excludeWithQuestionsbooleanExclude jobs with screening questionstrue
vendor.minCustomJobScorestring (0-100)Minimum custom job score"50"
vendor.includeWithoutCountryPreferencebooleanInclude jobs with no country preferencetrue
vendor.languagesstring[]Required languages (ISO-639-1 codes)["en", "de"]
Experience levels: “BEGINNER”, “INTERMEDIATE”, “EXPERT”. English proficiency: “BASIC”, “CONVERSATIONAL”, “FLUENT”, “NATIVE”. Vendor types: “FREELANCER”, “AGENCY”.

Example Response

search_jobs response
{
  "jobs": [
    {
      "uid": "1955020056847176693",
      "title": "React Developer for SaaS Platform",
      "description": "We are looking for an experienced React Developer...",
      "createdAt": "2025-01-15T10:30:00.000Z",
      "skills": ["React", "TypeScript", "Node.js"],
      "externalLink": "https://www.upwork.com/jobs/~021955020056847176693",
      "applicationCost": 6,
      "category": "Web Development",
      "budget": { "fixedBudget": 5000, "hourlyRate": { "min": 40, "max": 80 } },
      "client": {
        "name": "TechStartup Inc",
        "countryCode": "US",
        "paymentMethodVerified": true,
        "stats": { "totalSpent": 125000, "hireRate": 85, "feedbackRate": 4.95 }
      },
      "vendor": { "hireType": "FREELANCER", "experienceLevel": "EXPERT" }
    }
  ],
  "total": 142
}

Try a real example

See search_jobs used end-to-end in a production recipe.

get_job

Get full details for a specific Upwork job by its UID. Returns the complete job object including description, skills, budget, client information, screening questions, and vendor requirements.

Parameters

ParameterTypeDescription
jobIdstring (required)The UID of the job (e.g., “1955020056847176693”)

Example Response

get_job response
{
  "uid": "1955020056847176693",
  "title": "React Developer for SaaS Platform",
  "description": "We are looking for an experienced React Developer to help build and maintain our SaaS platform...",
  "createdAt": "2025-01-15T10:30:00.000Z",
  "skills": ["React", "TypeScript", "Node.js", "Redux", "REST APIs"],
  "questions": [
    "How many years of React experience do you have?",
    "Can you share a link to a SaaS project you have built?"
  ],
  "budget": { "fixedBudget": null, "hourlyRate": { "min": 40, "max": 80 } },
  "client": {
    "name": "TechStartup Inc",
    "industry": "Technology",
    "companySize": 10,
    "countryCode": "US",
    "stats": { "totalSpent": 125000, "totalHires": 42, "hireRate": 85, "feedbackRate": 4.95 }
  },
  "vendor": {
    "hireType": "FREELANCER",
    "countryCodes": ["US", "CA", "UK"],
    "experienceLevel": "EXPERT",
    "englishLevel": "FLUENT"
  }
}

get_client_activityPremium $5.40/1kRequires Pro or Enterprise

Returns real-time client activity data for a specific job, including how many proposals have been submitted, when the client was last active, how many candidates are being interviewed, invites sent, and unanswered invites.

Parameters

ParameterTypeDescription
jobIdstring (required)The UID of the job

Example Response

get_client_activity response
{
  "jobId": "1955020056847176693",
  "proposalCount": 15,
  "lastClientActivity": "2025-01-15T14:30:00.000Z",
  "interviewingCandidates": 3,
  "invitesSent": 5,
  "unansweredInvites": 2
}

get_client_historyPremium $5.40/1kRequires Pro or Enterprise

Returns the client's work history including previous contracts, contractor feedback, ratings, and project outcomes. Useful for evaluating client reliability before applying.

Parameters

ParameterTypeDescription
jobIdstring (required)The UID of the job

Example Response

get_client_history response
{
  "jobId": "1955020056847176693",
  "clientHistory": [
    {
      "title": "Full-Stack Developer for MVP",
      "freelancer": "Sarah K.",
      "duration": "3 months",
      "totalPaid": 12500,
      "hourlyRate": 65,
      "rating": 5.0,
      "feedback": "Excellent client, clear requirements."
    }
  ],
  "totalContracts": 42,
  "averageRating": 4.85
}

Output Field Reference

Complete field descriptions for the job objects returned by search_jobs and get_job.

Core Fields

FieldTypeDescription
uidstringUnique job identifier
titlestringJob posting title
descriptionstringFull job description text
createdAtstring (ISO)When the job was posted
skillsstring[]Required skill tags
externalLinkstringDirect URL to the Upwork listing
applicationCostintegerCost in connects to apply
featuredbooleanWhether the job is featured
categorystringUpwork job category
ciphertextstringJob ciphertext ID (used in URLs)
customJobScorenumberRelevance score (0-5)
questionsstring[]Screening questions (get_job only)

Budget Object

FieldTypeDescription
budget.fixedBudgetnumber | nullFixed price in USD
budget.hourlyRate.minnumberMin hourly rate in USD
budget.hourlyRate.maxnumberMax hourly rate in USD

Client Object

FieldTypeDescription
client.namestringClient or company name
client.timezonestringIANA timezone identifier
client.countryCodestringISO country code
client.paymentMethodVerifiedbooleanPayment verified
client.industrystringClient industry (get_job only)
client.companySizenumberCompany size (get_job only)
client.stats.totalSpentnumberTotal spent on Upwork (USD)
client.stats.totalHiresnumberTotal freelancers hired
client.stats.hireRatenumberHire rate percentage
client.stats.avgRatenumberAverage hourly rate paid
client.stats.feedbackRatenumberAverage feedback score (0-5)
client.stats.feedbackCountnumberNumber of feedback reviews

Vendor Object

FieldTypeDescription
vendor.hireTypestringFREELANCER or AGENCY
vendor.countryCodesstring[]Preferred freelancer countries
vendor.experienceLevelstringBEGINNER, INTERMEDIATE, or EXPERT
vendor.englishLevelstringBASIC, CONVERSATIONAL, FLUENT, or NATIVE