rolefig

Search real job openings, check job posts and pay rules, and prepare California offer letters.

사용해야 할까요

품질 및 안전성

A
설명 품질
99%
스키마 완전성
76%
이름 품질
94%
오염 위험
80%
권한 일치
100%
프로토콜 준수
100%

발견 사항 (3)

  • HIGHTool poisoning patterns detected
  • MEDIUMTool 'render_contract' description contains placeholder textrender_contract에서
  • INFOTool description contains placeholder or incomplete textrender_contract에서

도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.

컨텍스트 비용

~4,228토큰 (도구 정의)
~2.2 KB일반적인 응답 크기
상당한 주의 영향 (128k 컨텍스트의 3.30%)

이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.

설치

원클릭 설치

`claude_desktop_config.json` 파일에 다음을 추가하세요:

{
  "mcpServers": {
    "rolefig": {
      "url": "https://rolefig.com/mcp"
    }
  }
}

원격 엔드포인트

https://rolefig.com/mcpstreamable-http

할 수 있는 일

도구 목록

도구 (14)

🟢 읽기 전용🟡 쓰기🔴 삭제⚪ 알 수 없음
🟢search_jobs(q, workplace, type, country, region, ...)

Search current openings that companies publish on rolefig, across every company. Filter by keywords (q), workplace, employment type, country (ISO code), region (a code such as CA), company slug, postedWithin (7 or 30 days) and minPay (minimum annual USD); sort by newest or pay. For the next page, repeat the search with nextCursor as after. Each opening has the company's application URL and its rolefig page; rolefig never submits applications.

입력 스키마

{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "maxLength": 100
    },
    "workplace": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "remote",
            "hybrid",
            "on-site"
          ]
        },
        {
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "remote",
              "hybrid",
              "on-site"
            ]
          }
        }
      ]
    },
    "type": {
      "anyOf": [
        {
          "type": "string",
          "enum": [
            "full-time",
            "part-time",
            "contract"
          ]
        },
        {
          "maxItems": 3,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "full-time",
              "part-time",
              "contract"
            ]
          }
        }
      ]
    },
    "country": {
      "type": "string"
    },
    "region": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "company": {
      "type": "string",
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
    },
    "postedWithin": {
      "type": "number"
    },
    "minPay": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 10000000
    },
    "sort": {
      "default": "newest",
      "type": "string",
      "enum": [
        "newest",
        "pay"
      ]
    },
    "after": {
      "type": "string",
      "maxLength": 500
    },
    "limit": {
      "default": 50,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢list_published_companies(after, limit, q)

Discover company-published profiles with search and cursor pagination. Use the returned slug with get_published_company or list_company_openings. Public company information only; no applicant data.

입력 스키마

{
  "type": "object",
  "properties": {
    "after": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "q": {
      "default": "",
      "type": "string",
      "maxLength": 100
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "additionalProperties": false
}
🟢get_job(company, job)

Read one current published opening in full, with its company profile, the company's application URL and its rolefig page. Use the company and job slugs from search_jobs. Compensation text is authoritative; absent numeric pay and units are unknown. Never submits an application.

입력 스키마

{
  "type": "object",
  "properties": {
    "company": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
    },
    "job": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
    }
  },
  "required": [
    "company",
    "job"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢get_published_company(slug)

Read a real company-published profile and its current published openings. Includes the company's stated facts (social profiles, headquarters, size, founding year, benefits, workplace policy, hiring process), how rolefig verified it, and source and application URLs; no applicant data or application submission. Compensation text is authoritative; absent numeric pay and units are unknown.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢list_company_openings(slug)

Read current published openings for a known company slug, with application URLs and the publication revision. Excludes drafts and closed jobs. Never submits an application.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100,
      "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢demo_search_jobs(query, company, arrangement, minSalary, limit, ...)

Demo catalog: illustrative roles, applications closed. Search the sample roles by keywords, company, work arrangement and minimum annual USD base salary. For real openings use search_jobs.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "default": "",
      "type": "string",
      "maxLength": 200
    },
    "company": {
      "type": "string",
      "maxLength": 160,
      "pattern": "^[a-z0-9]+(-[a-z0-9]+)*$"
    },
    "arrangement": {
      "type": "string",
      "enum": [
        "Remote",
        "Hybrid",
        "On-site"
      ]
    },
    "minSalary": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 1000000
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 100
    },
    "offset": {
      "default": 0,
      "type": "integer",
      "minimum": 0,
      "maximum": 500
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢demo_list_companies(query)

Demo catalog: illustrative roles, applications closed. List the sample companies and their role counts.

입력 스키마

{
  "type": "object",
  "properties": {
    "query": {
      "default": "",
      "type": "string",
      "maxLength": 200
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢demo_get_job(slug)

Demo catalog: illustrative roles, applications closed. Read a sample role and its company profile.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 160
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢demo_get_company(slug)

Demo catalog: illustrative roles, applications closed. Read a sample company profile and its roles.

입력 스키마

{
  "type": "object",
  "properties": {
    "slug": {
      "type": "string",
      "maxLength": 160
    }
  },
  "required": [
    "slug"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢format_resume(name, headline, contact, summary, experience, ...)

Format ONLY candidate-supplied facts into resume text. Does not generate claims, save data, or submit an application. Remote use sends these fields to rolefig for formatting; omit contact details unless the candidate wants them included.

입력 스키마

{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "maxLength": 400
    },
    "headline": {
      "type": "string",
      "maxLength": 1000
    },
    "contact": {
      "type": "string",
      "maxLength": 2000
    },
    "summary": {
      "type": "string",
      "maxLength": 8000
    },
    "experience": {
      "type": "string",
      "maxLength": 12000
    },
    "skills": {
      "type": "string",
      "maxLength": 4000
    },
    "education": {
      "type": "string",
      "maxLength": 4000
    }
  },
  "required": [
    "name",
    "headline",
    "contact",
    "summary",
    "experience",
    "skills",
    "education"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢convert_pay(hoursPerWeek, daysPerWeek, weeksPerYear, overtimeHours, amount, ...)

Convert one gross pay figure (USD) between hourly, daily, weekly, monthly and yearly for a stated schedule. Overtime hours are paid at 1.5x the base rate; `hour` blends base and overtime. Gross pay only: no taxes, benefits or deductions.

입력 스키마

{
  "type": "object",
  "properties": {
    "hoursPerWeek": {
      "default": 40,
      "type": "number",
      "minimum": 1,
      "maximum": 100
    },
    "daysPerWeek": {
      "default": 5,
      "type": "number",
      "minimum": 1,
      "maximum": 7
    },
    "weeksPerYear": {
      "default": 52,
      "type": "number",
      "minimum": 1,
      "maximum": 52
    },
    "overtimeHours": {
      "default": 0,
      "type": "number",
      "minimum": 0,
      "maximum": 60
    },
    "amount": {
      "type": "number",
      "exclusiveMinimum": 0,
      "maximum": 10000000
    },
    "unit": {
      "type": "string",
      "enum": [
        "hour",
        "day",
        "week",
        "month",
        "year"
      ]
    }
  },
  "required": [
    "amount",
    "unit"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢check_pay_transparency(text, state, place, employees, remote)

Check a US job post against state and city pay-range posting laws (table checked 2026-10-05) for the job's state, optional city or county, total employer size and remote status. Returns the laws that may apply, what the post shows (pay range, benefits, other compensation, deadline), what may be missing, and official sources. Plain-language checks, not legal advice.

입력 스키마

{
  "type": "object",
  "properties": {
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 20000
    },
    "state": {
      "type": "string",
      "minLength": 2,
      "maxLength": 40
    },
    "place": {
      "type": "string",
      "maxLength": 120
    },
    "employees": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000000
    },
    "remote": {
      "default": false,
      "type": "boolean"
    }
  },
  "required": [
    "text",
    "state",
    "employees"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢check_job_posting(html, url)

Check a job post's schema.org JobPosting markup against Google's job search rules. Returns blocking errors, recommended fixes and a summary per posting, never the page itself. Pass the page HTML or JSON-LD as `html`, or a public page address as `url`.

입력 스키마

{
  "type": "object",
  "properties": {
    "html": {
      "type": "string",
      "maxLength": 500000
    },
    "url": {
      "type": "string",
      "maxLength": 2048
    }
  },
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}
🟢render_contract(values, ownContract, today)

Fill rolefig's California starter offer letter and pay plan (commission, salary with bonus, or hourly) from values the employer confirmed, or fill the employer's own contract through {{placeholders}}. Returns the document text, best-effort warnings (wage table checked 2026-10-06), the workspace's Compensation and Offer terms texts, and an ATS offer object once the candidate, start date and expiry are set. Use only confirmed values and never invent terms. Not legal advice. Remote use sends these values to rolefig to fill the template; nothing is stored.

입력 스키마

{
  "type": "object",
  "properties": {
    "values": {
      "type": "object",
      "properties": {
        "employer": {
          "type": "object",
          "properties": {
            "legalName": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200,
              "description": "The employer's legal name."
            },
            "address": {
              "type": "string",
              "minLength": 1,
              "maxLength": 300,
              "description": "The employer's address."
            },
            "signerName": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120,
              "description": "Who signs for the employer."
            },
            "signerTitle": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120,
              "description": "The signer's job title."
            }
          },
          "required": [
            "legalName",
            "address",
            "signerName",
            "signerTitle"
          ],
          "additionalProperties": false
        },
        "candidate": {
          "default": {},
          "type": "object",
          "properties": {
            "name": {
              "description": "The candidate's full name, once you make the offer.",
              "type": "string",
              "maxLength": 120
            }
          },
          "additionalProperties": false
        },
        "role": {
          "type": "object",
          "properties": {
            "title": {
              "type": "string",
              "minLength": 1,
              "maxLength": 120
            },
            "duties": {
              "minItems": 1,
              "maxItems": 12,
              "type": "array",
              "items": {
                "type": "string",
                "minLength": 1,
                "maxLength": 300
              },
              "description": "Main duties, one short line each."
            },
            "workLocation": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200,
              "description": "Where the work happens, including the state, e.g. 'San Diego, CA'."
            },
            "schedule": {
              "type": "string",
              "minLength": 1,
              "maxLength": 200
            },
            "reportsTo": {
              "type": "string",
              "maxLength": 120
            }
          },
          "required": [
            "title",
            "duties",
            "workLocation",
            "schedule"
          ],
          "additionalProperties": false
        },
        "startDate": {
          "description": "First day of work, YYYY-MM-DD. Leave out until you make the offer.",
          "type": "string",
          "format": "date",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
        },
        "offerExpiresAt": {
          "description": "When the offer expires, as an ISO 8601 UTC time. Leave out until you make the offer.",
          "type": "string",
          "format": "date-time",
          "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
        },
        "classification": {
          "description": "Overtime classification. Required for commission and salary plans; hourly plans are non-exempt.",
          "type": "string",
          "enum": [
            "exempt",
            "non-exempt"
          ]
        },
        "pay": {
          "oneOf": [
            {
              "type": "object",
              "properties": {
                "plan": {
                  "type": "string",
                  "const": "commission"
                },
                "rate": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 300,
                  "description": "How commission is calculated: the rate and what it applies to, e.g. '3% of contract value on every project you close'."
                },
                "earned": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1000,
                  "description": "When commission is earned, e.g. 'half when the deposit clears, half on final payment'."
                },
                "paid": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1000,
                  "description": "When earned commission is paid, e.g. 'on the next regular payday after it is earned'."
                },
                "afterEmployment": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 1000,
                  "description": "What happens to earned and pending commission when employment ends."
                },
                "draw": {
                  "description": "Optional draw paid while the employee builds commission.",
                  "type": "object",
                  "properties": {
                    "amountPerMonth": {
                      "type": "number",
                      "exclusiveMinimum": 0,
                      "maximum": 100000
                    },
                    "months": {
                      "type": "integer",
                      "minimum": 1,
                      "maximum": 24
                    },
                    "recoverable": {
                      "type": "boolean",
                      "description": "true: an advance repaid from future commission; false: the employee keeps it."
                    }
                  },
                  "required": [
                    "amountPerMonth",
                    "months",
                    "recoverable"
                  ],
                  "additionalProperties": false
                },
                "cap": {
                  "description": "Optional cap on commission or earnings.",
                  "type": "string",
                  "maxLength": 200
                },
                "target": {
                  "description": "Optional target earnings, shown as an estimate.",
                  "type": "string",
                  "maxLength": 200
                },
                "rules": {
                  "default": [],
                  "description": "Special rules, e.g. 'projects signed below our margin floor need written approval and pay half rate'.",
                  "maxItems": 10,
                  "type": "array",
                  "items": {
                    "type": "string",
                    "minLength": 1,
                    "maxLength": 300
                  }
                }
              },
              "required": [
                "plan",
                "rate",
                "earned",
                "paid",
                "afterEmployment"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "plan": {
                  "type": "string",
                  "const": "salary_bonus"
                },
                "annualBase": {
                  "type": "number",
                  "exclusiveMinimum": 0,
                  "maximum": 10000000,
                  "description": "Base salary in USD per year."
                },
                "bonusTarget": {
                  "description": "Optional target bonus, e.g. '$25,000–$40,000 a year'.",
                  "type": "string",
                  "maxLength": 300
                },
                "bonusMeasures": {
                  "description": "What the bonus is based on. Required with a bonus target.",
                  "type": "string",
                  "maxLength": 1000
                },
                "bonusTiming": {
                  "description": "When the bonus is paid. Required with a bonus target.",
                  "type": "string",
                  "maxLength": 500
                },
                "bonusConditions": {
                  "description": "Optional conditions for the bonus.",
                  "type": "string",
                  "maxLength": 1000
                }
              },
              "required": [
                "plan",
                "annualBase"
              ],
              "additionalProperties": false
            },
            {
              "type": "object",
              "properties": {
                "plan": {
                  "type": "string",
                  "const": "hourly"
                },
                "hourlyRate": {
                  "type": "number",
                  "exclusiveMinimum": 0,
                  "maximum": 1000,
                  "description": "Pay in USD per hour."
                },
                "payFrequency": {
                  "type": "string",
                  "enum": [
                    "weekly",
                    "biweekly",
                    "semimonthly"
                  ],
                  "description": "How often pay goes out."
                }
              },
              "required": [
                "plan",
                "hourlyRate",
                "payFrequency"
              ],
              "additionalProperties": false
            }
          ]
        },
        "reimbursements": {
          "default": [],
          "description": "Business expenses reimbursed, e.g. 'mileage at the IRS rate'.",
          "maxItems": 10,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "benefits": {
          "default": [],
          "description": "Benefits offered.",
          "maxItems": 12,
          "type": "array",
          "items": {
            "type": "string",
            "minLength": 1,
            "maxLength": 200
          }
        }
      },
      "required": [
        "employer",
        "role",
        "pay"
      ],
      "additionalProperties": false
    },
    "ownContract": {
      "type": "string",
      "minLength": 1,
      "maxLength": 50000
    },
    "today": {
      "type": "string",
      "format": "date",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
    }
  },
  "required": [
    "values"
  ],
  "$schema": "https://json-schema.org/draft/2020-12/schema"
}

커뮤니티

이 서버 평가하기

증거

최근 관측

검증됨버전이 기록되지 않음도구 14개