FinanceGenius.AI LCS Matcher API
The LCS Matcher API from FinanceGenius.AI — 12 operation(s) for lcs matcher.
The LCS Matcher API from FinanceGenius.AI — 12 operation(s) for lcs matcher.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/financegenius-ai:financegenius-ai-lcs-matcher-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Financegenius Ai LCS Matcher API
version: 1.0.0
description: 'Operations tagged LCS Matcher across 2 of this provider''s published API definitions: finmall-openapi.json, financegenius-ai-openapi.json. Each path carries the servers of the definition it was published in.'
tags:
- name: LCS Matcher
paths:
/api/v1/lcs/match:
post:
tags:
- LCS Matcher
summary: Lcs Match
description: 'Rank lenders for a profile. Public tier: no PAN/PII, indicative fit only.'
operationId: lcs_match_api_v1_lcs_match_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MatchProfile'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/lcs/outcome:
post:
tags:
- LCS Matcher
summary: Lcs Outcome
description: 'Record what actually happened at a lender. This is the data that turns
expert-prior match scores into calibrated approval probabilities.
Admin only. Anyone could write here before, and an anonymous outcome is
calibration data nobody can vouch for: a few hundred forged "rejected" rows
against one lender would skew the calibration of its odds for every
customer. Real outcomes come from lenders (the CRM''s write paths A and B) or
from an ops admin.'
operationId: lcs_outcome_api_v1_lcs_outcome_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/app__api__v1__lcs_match__OutcomeIn'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
/api/v1/lcs/lenders:
get:
tags:
- LCS Matcher
summary: Lcs Lenders
operationId: lcs_lenders_api_v1_lcs_lenders_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/api/v1/lcs/v1/evaluate:
post:
tags:
- LCS Matcher
summary: Lcs V1 Evaluate
description: 'Preview of the v1 engine. Every lender card carries display_allowed (a live
partner with a confirmed identity); a card where it is false (all of them
today) comes back as "Option ": its band and estimate, never its name.'
operationId: lcs_v1_evaluate_api_v1_lcs_v1_evaluate_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluateIn'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/api/v1/lcs/v1/lenders:
get:
tags:
- LCS Matcher
summary: Lcs V1 Lenders
operationId: lcs_v1_lenders_api_v1_lcs_v1_lenders_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/api/v1/lcs/v1/risk-grades:
get:
tags:
- LCS Matcher
summary: Lcs V1 Risk Grades
description: 'The customer risk grades (R1-R6), the NTC and THIN tracks, their criteria,
overlays, adjustments, capacity ceilings and ticket guide. Internal: the
approval rates are the founder''s uncalibrated starting points.'
operationId: lcs_v1_risk_grades_api_v1_lcs_v1_risk_grades_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/lcs/match:
post:
tags:
- LCS Matcher
summary: Lcs Match
description: 'Rank lenders for a profile. Public tier: no PAN/PII, indicative fit only.'
operationId: lcs_match_lcs_match_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MatchProfile'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/lcs/outcome:
post:
tags:
- LCS Matcher
summary: Lcs Outcome
description: 'Record what actually happened at a lender. This is the data that turns
expert-prior match scores into calibrated approval probabilities.
Admin only. Anyone could write here before, and an anonymous outcome is
calibration data nobody can vouch for: a few hundred forged "rejected" rows
against one lender would skew the calibration of its odds for every
customer. Real outcomes come from lenders (the CRM''s write paths A and B) or
from an ops admin.'
operationId: lcs_outcome_lcs_outcome_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/app__api__v1__lcs_match__OutcomeIn'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
security:
- HTTPBearer: []
/lcs/lenders:
get:
tags:
- LCS Matcher
summary: Lcs Lenders
operationId: lcs_lenders_lcs_lenders_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/lcs/v1/evaluate:
post:
tags:
- LCS Matcher
summary: Lcs V1 Evaluate
description: 'Preview of the v1 engine. Every lender card carries display_allowed (a live
partner with a confirmed identity); a card where it is false (all of them
today) comes back as "Option ": its band and estimate, never its name.'
operationId: lcs_v1_evaluate_lcs_v1_evaluate_post
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EvaluateIn'
required: true
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
'422':
description: Validation Error
content:
application/json:
schema:
$ref: '#/components/schemas/HTTPValidationError'
/lcs/v1/lenders:
get:
tags:
- LCS Matcher
summary: Lcs V1 Lenders
operationId: lcs_v1_lenders_lcs_v1_lenders_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
/lcs/v1/risk-grades:
get:
tags:
- LCS Matcher
summary: Lcs V1 Risk Grades
description: 'The customer risk grades (R1-R6), the NTC and THIN tracks, their criteria,
overlays, adjustments, capacity ceilings and ticket guide. Internal: the
approval rates are the founder''s uncalibrated starting points.'
operationId: lcs_v1_risk_grades_lcs_v1_risk_grades_get
responses:
'200':
description: Successful Response
content:
application/json:
schema: {}
components:
schemas:
SalaryIn:
properties:
bank:
anyOf:
- type: string
maxLength: 60
- type: 'null'
title: Bank
mode:
anyOf:
- type: string
maxLength: 20
- type: 'null'
title: Mode
type: object
title: SalaryIn
StatementIn:
properties:
available:
type: boolean
title: Available
default: false
months:
anyOf:
- type: integer
maximum: 24.0
minimum: 0.0
- type: 'null'
title: Months
salary_credits_3m:
anyOf:
- type: integer
maximum: 20.0
minimum: 0.0
- type: 'null'
title: Salary Credits 3M
bounces_3m:
anyOf:
- $ref: '#/components/schemas/BouncesIn'
- type: 'null'
abb_3m:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Abb 3M
net_salary_avg_3m:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Net Salary Avg 3M
type: object
title: StatementIn
description: Summary of a statement the customer uploaded. Never Account Aggregator data.
ResidenceIn:
properties:
type:
anyOf:
- type: string
- type: 'null'
title: Type
months_at_address:
anyOf:
- type: integer
maximum: 1200.0
minimum: 0.0
- type: 'null'
title: Months At Address
months_in_city:
anyOf:
- type: integer
maximum: 1200.0
minimum: 0.0
- type: 'null'
title: Months In City
pincode:
anyOf:
- type: string
maxLength: 6
- type: 'null'
title: Pincode
type: object
title: ResidenceIn
BouncesIn:
properties:
emi:
anyOf:
- type: integer
maximum: 100.0
minimum: 0.0
- type: 'null'
title: Emi
non_emi:
anyOf:
- type: integer
maximum: 100.0
minimum: 0.0
- type: 'null'
title: Non Emi
type: object
title: BouncesIn
ValidationError:
properties:
loc:
items:
anyOf:
- type: string
- type: integer
type: array
title: Location
msg:
type: string
title: Message
type:
type: string
title: Error Type
input:
title: Input
ctx:
type: object
title: Context
type: object
required:
- loc
- msg
- type
title: ValidationError
EnquiryIn:
properties:
days_ago:
type: integer
maximum: 3650.0
minimum: 0.0
title: Days Ago
type:
anyOf:
- type: string
maxLength: 40
- type: 'null'
title: Type
lender:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: Lender
type: object
required:
- days_ago
title: EnquiryIn
ApplicantIn:
properties:
age:
anyOf:
- type: integer
maximum: 80.0
minimum: 18.0
- type: 'null'
title: Age
employment_type:
anyOf:
- type: string
- type: 'null'
title: Employment Type
has_coapplicant:
anyOf:
- type: boolean
- type: 'null'
title: Has Coapplicant
employer:
anyOf:
- $ref: '#/components/schemas/EmployerIn'
- type: 'null'
categories:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Categories
job:
anyOf:
- $ref: '#/components/schemas/JobIn'
- type: 'null'
residence:
anyOf:
- $ref: '#/components/schemas/ResidenceIn'
- type: 'null'
salary:
anyOf:
- $ref: '#/components/schemas/SalaryIn'
- type: 'null'
type: object
title: ApplicantIn
EmployerIn:
properties:
name:
anyOf:
- type: string
maxLength: 200
- type: 'null'
title: Name
constitution:
anyOf:
- type: string
maxLength: 30
- type: 'null'
title: Constitution
age_years:
anyOf:
- type: number
maximum: 300.0
minimum: 0.0
- type: 'null'
title: Age Years
industry:
anyOf:
- type: string
maxLength: 50
- type: 'null'
title: Industry
govt_class:
anyOf:
- type: integer
maximum: 4.0
minimum: 1.0
- type: 'null'
title: Govt Class
retirement_age:
anyOf:
- type: integer
maximum: 70.0
minimum: 50.0
- type: 'null'
title: Retirement Age
type: object
title: EmployerIn
EmploymentIncomeIn:
properties:
amount:
type: number
maximum: 1000000000.0
minimum: 0.0
title: Amount
frequency:
type: string
maxLength: 10
title: Frequency
default: monthly
basis:
type: string
maxLength: 10
title: Basis
default: net
reported_months_ago:
anyOf:
- type: integer
maximum: 600.0
minimum: 0.0
- type: 'null'
title: Reported Months Ago
band_floor:
anyOf:
- type: boolean
- type: 'null'
title: Band Floor
type: object
required:
- amount
title: EmploymentIncomeIn
description: Income a lender reported in the credit report's employment segment.
MatchProfile:
properties:
cibil:
anyOf:
- type: integer
maximum: 900.0
minimum: 300.0
- type: 'null'
title: Cibil
ntc:
anyOf:
- type: boolean
- type: 'null'
title: Ntc
income:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Income
foir:
anyOf:
- type: number
maximum: 300.0
minimum: 0.0
- type: 'null'
title: Foir
thickness:
anyOf:
- type: string
- type: 'null'
title: Thickness
pl_tradelines:
anyOf:
- type: integer
maximum: 60.0
minimum: 0.0
- type: 'null'
title: Pl Tradelines
unsecured_tradelines:
anyOf:
- type: integer
maximum: 60.0
minimum: 0.0
- type: 'null'
title: Unsecured Tradelines
has_cc_tradeline:
anyOf:
- type: boolean
- type: 'null'
title: Has Cc Tradeline
cc_limit:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Cc Limit
top_n:
anyOf:
- type: integer
maximum: 16.0
minimum: 1.0
- type: 'null'
title: Top N
source:
anyOf:
- type: string
maxLength: 40
- type: 'null'
title: Source
application_ref:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Application Ref
type: object
title: MatchProfile
description: 'Customer credit profile. Every field optional — missing data makes a lender
"unconfirmed" with the field named: never a pass, never a false rejection.'
BureauIn:
properties:
available:
type: boolean
title: Available
default: false
score:
anyOf:
- type: integer
maximum: 900.0
minimum: -1.0
- type: 'null'
title: Score
score_type:
anyOf:
- type: string
maxLength: 20
- type: 'null'
title: Score Type
score_model:
anyOf:
- type: string
maxLength: 20
- type: 'null'
title: Score Model
ntc:
anyOf:
- type: boolean
- type: 'null'
title: Ntc
ntc_kind:
anyOf:
- type: string
maxLength: 10
- type: 'null'
title: Ntc Kind
tradelines:
items:
$ref: '#/components/schemas/TradelineIn'
type: array
maxItems: 200
title: Tradelines
enquiries:
items:
$ref: '#/components/schemas/EnquiryIn'
type: array
maxItems: 200
title: Enquiries
employment_income:
anyOf:
- $ref: '#/components/schemas/EmploymentIncomeIn'
- type: 'null'
type: object
title: BureauIn
IncomeDocumentIn:
properties:
type:
type: string
maxLength: 20
title: Type
fields:
additionalProperties: true
type: object
title: Fields
as_of:
anyOf:
- type: string
maxLength: 10
- type: 'null'
title: As Of
parse_quality:
anyOf:
- type: number
maximum: 1.0
minimum: 0.0
- type: 'null'
title: Parse Quality
tamper_flags:
anyOf:
- items:
type: string
type: array
maxItems: 10
- type: 'null'
title: Tamper Flags
type: object
required:
- type
title: IncomeDocumentIn
description: 'Figures already extracted from a document the customer uploaded (never AA data).
type: statement|slip|form16|ais|epfo_passbook|itr|gst; fields per lcs_v1/documents.py.'
JobIn:
properties:
current_months:
anyOf:
- type: integer
maximum: 600.0
minimum: 0.0
- type: 'null'
title: Current Months
total_months:
anyOf:
- type: integer
maximum: 720.0
minimum: 0.0
- type: 'null'
title: Total Months
type: object
title: JobIn
LoanIn:
properties:
amount:
anyOf:
- type: number
maximum: 100000000.0
minimum: 10000.0
- type: 'null'
title: Amount
tenure_months:
anyOf:
- type: integer
maximum: 120.0
minimum: 3.0
- type: 'null'
title: Tenure Months
type: object
title: LoanIn
app__api__v1__lcs_match__OutcomeIn:
properties:
match_id:
anyOf:
- type: string
maxLength: 64
- type: 'null'
title: Match Id
lender:
type: string
maxLength: 100
minLength: 2
title: Lender
status:
type: string
title: Status
amount:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Amount
reason:
anyOf:
- type: string
maxLength: 500
- type: 'null'
title: Reason
type: object
required:
- lender
- status
title: OutcomeIn
description: A real application outcome — links back to a match via match_id.
HTTPValidationError:
properties:
detail:
items:
$ref: '#/components/schemas/ValidationError'
type: array
title: Detail
type: object
title: HTTPValidationError
app__api__v1__lcs_match__IncomeIn:
properties:
net_monthly:
anyOf:
- type: number
maximum: 100000000.0
minimum: 0.0
- type: 'null'
title: Net Monthly
gross_monthly:
anyOf:
- type: number
maximum: 100000000.0
minimum: 0.0
- type: 'null'
title: Gross Monthly
source:
anyOf:
- type: string
maxLength: 20
- type: 'null'
title: Source
documents:
anyOf:
- items:
$ref: '#/components/schemas/IncomeDocumentIn'
type: array
maxItems: 10
- type: 'null'
title: Documents
impute:
anyOf:
- type: boolean
- type: 'null'
title: Impute
type: object
title: IncomeIn
TradelineIn:
properties:
type:
type: string
title: Type
live:
type: boolean
title: Live
default: true
emi:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Emi
outstanding:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Outstanding
limit:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Limit
sanctioned:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Sanctioned
lender:
anyOf:
- type: string
maxLength: 100
- type: 'null'
title: Lender
opened_months_ago:
anyOf:
- type: integer
maximum: 600.0
minimum: 0.0
- type: 'null'
title: Opened Months Ago
emis_left:
anyOf:
- type: integer
maximum: 600.0
minimum: 0.0
- type: 'null'
title: Emis Left
dpd_max_12m:
anyOf:
- type: integer
maximum: 999.0
minimum: 0.0
- type: 'null'
title: Dpd Max 12M
dpd_history:
anyOf:
- type: string
- items:
anyOf:
- type: integer
- type: string
- type: 'null'
type: array
- type: 'null'
title: Dpd History
reported_months_ago:
anyOf:
- type: integer
maximum: 600.0
minimum: 0.0
- type: 'null'
title: Reported Months Ago
closed_months_ago:
anyOf:
- type: integer
maximum: 600.0
minimum: 0.0
- type: 'null'
title: Closed Months Ago
overdue:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Overdue
status:
anyOf:
- type: string
- items:
type: string
type: array
- type: 'null'
title: Status
status_months_ago:
anyOf:
- type: integer
maximum: 600.0
minimum: 0.0
- type: 'null'
title: Status Months Ago
status_amount:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Status Amount
ownership:
anyOf:
- type: string
maxLength: 20
- type: 'null'
title: Ownership
tenure_months:
anyOf:
- type: integer
maximum: 600.0
minimum: 1.0
- type: 'null'
title: Tenure Months
lender_type:
anyOf:
- type: string
maxLength: 20
- type: 'null'
title: Lender Type
moratorium:
anyOf:
- type: boolean
- type: 'null'
title: Moratorium
card_emi_conversion:
anyOf:
- type: boolean
- type: 'null'
title: Card Emi Conversion
product_flags:
anyOf:
- items:
type: string
type: array
maxItems: 10
- type: 'null'
title: Product Flags
rate_pct:
anyOf:
- type: number
maximum: 60.0
minimum: 0.0
- type: 'null'
title: Rate Pct
actual_payment:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Actual Payment
high_credit:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: High Credit
first_reported_months_ago:
anyOf:
- type: integer
maximum: 600.0
minimum: 0.0
- type: 'null'
title: First Reported Months Ago
last_payment_months_ago:
anyOf:
- type: integer
maximum: 600.0
minimum: 0.0
- type: 'null'
title: Last Payment Months Ago
serviced_by_business:
anyOf:
- type: boolean
- type: 'null'
title: Serviced By Business
type: object
required:
- type
title: TradelineIn
EvaluateIn:
properties:
loan:
anyOf:
- $ref: '#/components/schemas/LoanIn'
- type: 'null'
applicant:
anyOf:
- $ref: '#/components/schemas/ApplicantIn'
- type: 'null'
income:
anyOf:
- $ref: '#/components/schemas/app__api__v1__lcs_match__IncomeIn'
- type: 'null'
declared_emis_monthly:
anyOf:
- type: number
minimum: 0.0
- type: 'null'
title: Declared Emis Monthly
bureau:
anyOf:
- $ref: '#/components/schemas/BureauIn'
- type: 'null'
statement:
anyOf:
- $ref: '#/components/schemas/StatementIn'
- type: 'null'
business:
anyOf:
- $ref: '#/components/schemas/BusinessIn'
- type: 'null'
serviceable:
anyOf:
- additionalProperties: true
type: object
- type: 'null'
title: Serviceable
include_trace:
type: boolean
title: Include Trace
default: false
source:
anyOf:
- type: string
maxLength: 40
- type: 'null'
title: Source
application_ref:
anyOf:
- type: string
format: uuid
- type: 'null'
title: Application Ref
type: object
title: EvaluateIn
BusinessIn:
properties:
constitution:
anyOf:
- type: string
maxLength: 30
- type: 'null'
title: Constitution
vintage_months:
anyOf:
- type: integer
maximum: 1200.0
minimum: 0.0
- type: 'null'
title: Vintage Months
industry:
anyOf:
- type: string
maxLength: 50
- type: 'null'
title: Industry
type: object
title: BusinessIn
securitySchemes:
HTTPBearer:
type: http
scheme: bearer
x-refined-from:
- finmall-openapi.json
- financegenius-ai-openapi.json
x-provenance:
method: harvested
publisher: FinanceGenius.AI
source: https://api.finmall.ai/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)