Skip to content

Income Checker

by Tariqlearnstocode · remote · no sign-in to list tools · v1.0.0 · published by GitHub user Tariqlearnstocode

Income and rent calculators, pay stub math checks, and bank-based income analysis tools.

Final · 3Changes · 6

13 tools: 3 do something that can't be undone, 6 change things and 4 only read.

Scanned Oct 21, 2026

3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http incomechecker https://incomechecker.com/mcp

Findings

Matches of fixed checks, with the text they matched.

3 warn
  • The server marks "start_income_verification" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "start_income_verification" says "start": a word for a change.

    What this check looks for
  • The server marks "monthly_income_from_pay" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "monthly_income_from_pay" says "pay": a word that usually means money moves, which cannot be taken back.

    What this check looks for
  • The server marks "check_pay_stub_math" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "check_pay_stub_math" says "pay": a word that usually means money moves, which cannot be taken back.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

13 tools

Can't be undone 3Claude Code: ask
  • check_pay_stub_mathChecks the figures on a pay stub for internal inconsistencies: gross minus deductions vs net, hours × rate, Social Security and Medicare rates, pay period length, pay date, year-to…1 finding

    Why it is in this group

    • The name "check_pay_stub_math" says "pay": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "check_pay_stub_math" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "check_pay_stub_math" says "pay": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Checks the figures on a pay stub for internal inconsistencies: gross minus deductions vs net, hours × rate, Social Security and Medicare rates, pay period length, pay date, year-to-date totals, and suspiciously round numbers. Read the numbers off the stub and pass them in. Flags items for follow-up; it does not authenticate a document or prove fraud.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • monthly_income_from_payConverts a pay amount (hourly, weekly, every two weeks, twice a month, monthly, or annual) into gross monthly, annual, biweekly, weekly, and hourly income.1 finding

    Why it is in this group

    • The name "monthly_income_from_pay" says "pay": a word that usually means money moves, which cannot be taken back.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "monthly_income_from_pay" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "monthly_income_from_pay" says "pay": a word that usually means money moves, which cannot be taken back.

      What this check looks for
    Description, as the server wrote it
    Converts a pay amount (hourly, weekly, every two weeks, twice a month, monthly, or annual) into gross monthly, annual, biweekly, weekly, and hourly income.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • send_verification_requestUses one credit to create a bank-based income check and emails the applicant a secure link to connect their bank through Plaid.No findings

    Why it is in this group

    • The name "send_verification_request" says "send": a word for sending, and what is sent cannot be taken back.
    Description, as the server wrote it
    Uses one credit to create a bank-based income check and emails the applicant a secure link to connect their bank through Plaid. Confirm the applicant’s name and email with the user before calling. The report is ready after the applicant connects; check it with list_verifications or get_report.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • idempotentHint: false
    • openWorldHint: true
Changes things 6Claude Code: ask
  • buy_creditsCreates a secure Stripe checkout link for a pack of non-expiring verification credits.No findings

    Why it is in this group

    • The description's first verb is "create": a word for a change.
    Description, as the server wrote it
    Creates a secure Stripe checkout link for a pack of non-expiring verification credits. Packs: 1 for $5.00, 3 for $15.00, 5 for $25.00, 10 for $50.00, 25 for $125.00, 50 for $250.00. Give the user the link to pay; credits are added once payment completes.

    Annotations the server declares

    • readOnlyHint: false
    • destructiveHint: false
    • openWorldHint: true
  • debt_to_incomeFront-end (housing) and back-end debt-to-income ratios with common lender bands.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Front-end (housing) and back-end debt-to-income ratios with common lender bands.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • prorated_rentRent owed for a partial first month, from the move-in date through the end of that month.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Rent owed for a partial first month, from the move-in date through the end of that month.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • rent_affordabilityAffordable rent from gross monthly income using the 30% rule, the 3x-rent rule, a 25-30% comfortable range capped at 36% total debt, and 50/30/20.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Affordable rent from gross monthly income using the 30% rule, the 3x-rent rule, a 25-30% comfortable range capped at 36% total debt, and 50/30/20.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • rent_to_incomeIncome needed for a given rent (2.5x, 3x, 3.5x rules), the max rent for a given income at 3x, or the rent-to-income ratio when both are given.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    Income needed for a given rent (2.5x, 3x, 3.5x rules), the max rent for a given income at 3x, or the rent-to-income ratio when both are given. Pass monthly figures.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • start_income_verificationReturns the link and steps to request a bank-based income report from Income Checker for a tenant, applicant, borrower, or yourself.1 finding

    Why it is in this group

    • The name "start_income_verification" says "start": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "start_income_verification" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"destructiveHint":false,"idempotentHint":true,"openWorldHint":false}; The name "start_income_verification" says "start": a word for a change.

      What this check looks for
    Description, as the server wrote it
    Returns the link and steps to request a bank-based income report from Income Checker for a tenant, applicant, borrower, or yourself. Use when the user wants to actually verify or check someone’s income, not just learn how.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
Only reads 4Claude Code: allow
  • get_accountShows the signed-in user’s email and how many verification credits they have left.No findings

    Why it is in this group

    • The name "get_account" says "get": a word for reading.
    Description, as the server wrote it
    Shows the signed-in user’s email and how many verification credits they have left.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • get_reportReturns the income analysis for a completed verification: estimated monthly income, income sources, other deposits, and account balances.No findings

    Why it is in this group

    • The name "get_report" says "get": a word for reading.
    Description, as the server wrote it
    Returns the income analysis for a completed verification: estimated monthly income, income sources, other deposits, and account balances. Present figures as estimates, never as verified or approved income.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
  • how_to_verify_incomeExplains how to check or verify a person’s income (a tenant, applicant, borrower, guarantor, investor, or yourself), including bank-based income analysis, pay stubs, and their limi…No findings

    Why it is in this group

    • The description's first verb is "explain": a word for reading.
    Description, as the server wrote it
    Explains how to check or verify a person’s income (a tenant, applicant, borrower, guarantor, investor, or yourself), including bank-based income analysis, pay stubs, and their limits. Use when someone asks how to verify, check, or prove income.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false
    • destructiveHint: false
    • idempotentHint: true
  • list_verificationsLists the signed-in user’s income verification requests, newest first, with status and report links.No findings

    Why it is in this group

    • The name "list_verifications" says "list": a word for reading.
    Description, as the server wrote it
    Lists the signed-in user’s income verification requests, newest first, with status and report links.

    Annotations the server declares

    • readOnlyHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.0.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http incomechecker https://incomechecker.com/mcp

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__incomechecker__how_to_verify_income",
      "mcp__incomechecker__get_account",
      "mcp__incomechecker__list_verifications",
      "mcp__incomechecker__get_report"
    ],
    "ask": [
      "mcp__incomechecker__start_income_verification",
      "mcp__incomechecker__monthly_income_from_pay",
      "mcp__incomechecker__rent_to_income",
      "mcp__incomechecker__rent_affordability",
      "mcp__incomechecker__debt_to_income",
      "mcp__incomechecker__prorated_rent",
      "mcp__incomechecker__check_pay_stub_math",
      "mcp__incomechecker__buy_credits",
      "mcp__incomechecker__send_verification_request"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as incomechecker. Review it before you use it.