Credit GPS — Canadian credit
Server Details
Canadian credit: statement-cycle and utilization math, plus bureau and reporting reference data.
- Status
- Healthy
- Uptime
- 100.0% over 60 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 16 tools
Most tools have clearly distinct purposes, and the descriptions explicitly separate adjacent calculators such as payoff timeline, paydown simulation, and current snapshot. A few timing/utilization tools remain close enough to require careful reading: find_statement_close_date, get_statement_calendar, and explain_when_issuers_report, as well as get_reported_snapshot versus simulate_paydown.
All tool names use a consistent snake_case verb_noun pattern, such as calculate_payoff_timeline, get_reported_snapshot, explain_retention_periods, and list_credit_building_products. The specific verbs vary by action, but the naming convention is predictable throughout.
At 16 tools, the set is at the upper edge of a reasonable scoped surface, but each tool appears to earn its place across calculators, explanations, planning, and product references. It is slightly heavy but not obviously bloated.
Coverage is broad for a Canadian credit planning assistant: mechanics, reporting timing, retention, missed payments, newcomer paths, product lists, payoff scenarios, utilization snapshots, and action plans are all represented. Minor gaps remain around dispute/error-correction workflows, fraud or identity-theft guidance, and more general score-factor breakdowns.
Available Tools
16 toolscalculate_payoff_timelineHow long to pay this card offARead-onlyIdempotentInspect
Use this for "if I pay $200 a month, when is this paid off?" or "what happens if I only pay the minimum?". Returns how long a card takes to clear at a fixed monthly payment and the interest paid over that time. This is a cost question, not a reporting one: it does not change what the bureaus see, so use get_reported_snapshot or simulate_paydown for that. Requires the card's purchase APR; without it no timeline is returned, because the rate decides the answer. Calculates scenarios from supplied figures; does not make payments, change accounts, fetch external data, or retain tool inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| cards | Yes | The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything. | |
| today | No | Today's date in the person's local timezone, yyyy-mm-dd. Pass it — the server otherwise falls back to UTC, which is a day ahead for Canadian evenings. | |
| cardName | Yes | Which card to pay off. Partial names are matched. | |
| monthlyPayment | No | Fixed amount paid each month in CAD. Omit to use the card's minimum payment, if one was supplied. |
Output Schema
| Name | Required | Description |
|---|---|---|
| aprBps | Yes | |
| months | Yes | |
| balance | Yes | |
| cardName | Yes | |
| atMinimum | Yes | |
| aprUnknown | Yes | |
| disclosure | Yes | |
| assumptions | Yes | |
| neverShrinks | Yes | |
| totalInterest | Yes | |
| monthlyPayment | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive/closed-world, and the description agrees with them while adding a real precondition: without the card's purchase APR no timeline is returned, because the rate determines the answer. The negative capability list (no payments, no account changes, no external fetch, no input retention) reinforces rather than contradicts the annotations, though parts of it restate what the hints already say.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the user-question framing and the return values, with routing guidance before the negative list. Slightly padded by the four-item 'does not...' clause that partly duplicates the annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, annotations cover the safety profile, and schema documentation is complete, so the description only needed to add trigger, routing, precondition, and scope — all present. Nothing an agent needs to select or invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds meaning the schema does not: monthlyPayment is contextualized as the fixed monthly figure driving the calculation, and aprPercent is escalated from 'omit when unknown' into a hard requirement for a meaningful result. It still does not clarify the cardName-vs-cards relationship or how minimum payment fallback interacts with monthlyPayment.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific computation (months to clear a balance at a fixed monthly payment) and its second output (interest paid over that time), framing it with the exact user questions it answers. It explicitly distinguishes itself from get_reported_snapshot and simulate_paydown, so an agent can route without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with concrete trigger phrasings ('if I pay $200 a month, when is this paid off?', 'what happens if I only pay the minimum?') and states the exclusion plus the named alternatives for the excluded case. The 'cost question, not a reporting one' framing gives a clean decision rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
compare_cards_for_purchaseWhich card for this purchaseARead-onlyIdempotentInspect
Use this when someone asks which card to put a purchase on. Returns two answers for the amount given: the card that reports the least utilization impact, the card that is cheapest to carry, and the trade-off when those differ, because the card the bureaus notice least is often not the card with the lowest rate. Calculates scenarios from supplied figures; does not make payments, change accounts, fetch external data, or retain tool inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| cards | Yes | The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything. | |
| amount | Yes | Purchase amount in CAD. | |
| targetUtilization | No | Target utilization as a decimal. Defaults to 0.29 — one point under the 30% band. |
Output Schema
| Name | Required | Description |
|---|---|---|
| amount | Yes | |
| disclosure | Yes | |
| noCardFits | Yes | |
| blendedBefore | Yes | |
| cheapestToCarry | Yes | |
| optionsDisagree | Yes | |
| bestForReporting | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, closed-world behavior, and the description reinforces this by stating it does not make payments, change accounts, fetch external data, or retain inputs. It also discloses the dual-answer output and trade-off logic, adding useful context beyond the safety annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the trigger and output summary, followed by behavioral constraints. Every sentence carries distinct information with no waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema and full parameter coverage, so the description does not need to restate them. It still provides the missing conceptual context: the two competing answers, why they diverge, and the read-only calculation boundary. Nothing material is left ambiguous for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameter meaning in detail. The description only refers generically to 'the amount given' and 'supplied figures,' adding no parameter-specific guidance beyond the structured schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'which card to put a purchase on,' and names the two outputs it returns (least utilization impact vs. cheapest to carry) plus the trade-off. This clearly distinguishes it from sibling explainer and simulator tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger: 'Use this when someone asks which card to put a purchase on.' It does not explicitly name when to prefer a sibling such as simulate_paydown, but the framing is a definitive routing signal for purchase-allocation questions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
describe_credit_gpsAbout Credit GPSARead-onlyIdempotentInspect
Use this when someone asks what Credit GPS is, who made this, whether their data is stored, or why an answer stopped short. Also explains how to obtain free Canadian bureau reports and manually enter their figures in the Credit GPS application for score tracking. This tool provides instructions; it cannot save entries or retrieve score history. Returns bundled reference material, optionally filtered or calculated from inputs; does not fetch live data or change accounts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| what | Yes | |
| limits | Yes | |
| privacy | Yes | |
| product | Yes | |
| sources | Yes | |
| disclosure | Yes | |
| manualReportGuide | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations, the description discloses meaningful behavioral limits: it cannot save entries, retrieve score history, fetch live data, or change accounts. This gives agents a precise model of what the tool can and cannot do.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with usage guidance and keeps each sentence informative. It is slightly dense, but given the 0-parameter schema and the need to explain both the tool's purpose and limitations, the length is justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter informational tool with an output schema, the description covers the key scenarios, the data privacy question, the manual entry workflow, and the tool's limitations. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description adds that it returns bundled reference material 'optionally filtered or calculated from inputs,' which is useful context even though no schema parameters exist.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource ('Credit GPS' itself) and enumerates concrete use cases: explaining what it is, who made it, data storage, shortened answers, and bureau report entry. This clearly differentiates it from sibling tools that explain credit mechanics or simulate paydowns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly begins with 'Use this when someone asks...' and lists the exact triggers. It does not name sibling tools or state when not to use it, but the context is clear enough for an agent to route appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
estimate_close_card_impactWhat closing a card does to utilizationARead-onlyIdempotentInspect
Use this for "should I cancel the credit card I never use", "is it bad to close a card", or any question about cancelling, downgrading, or consolidating cards. It does not close, cancel, or change any card; it only explains and calculates. With no card figures it returns general closure considerations and retention information. Supply figures for a hypothetical paid-off closure calculation. Supply cards and cardName as well and it additionally computes the exact utilization before and after, the limit leaving the denominator, and whether it crosses a band upward. Calculates scenarios from supplied figures; does not make payments, change accounts, fetch external data, or retain tool inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| cards | No | The person's cards, if they have given them. Omit to get the mechanics and the Canadian rules without any numbers. | |
| today | No | Today's date in the person's local timezone, yyyy-mm-dd. Pass it — the server otherwise falls back to UTC, which is a day ahead for Canadian evenings. | |
| cardName | No | The card being considered for closure. Partial names are matched. Only meaningful alongside cards. |
Output Schema
| Name | Required | Description |
|---|---|---|
| cardName | Yes | |
| computed | Yes | |
| bandAfter | Yes | |
| alwaysTrue | Yes | |
| bandBefore | Yes | |
| disclosure | Yes | |
| assumptions | Yes | |
| blendedAfter | Yes | |
| limitRemoved | Yes | |
| balanceOnCard | Yes | |
| blendedBefore | Yes | |
| crossesBandUp | Yes | |
| remainingLimit | Yes | |
| isOnlyRevolvingAccount | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world, but the description adds substantial non-structured context: graceful degradation to general closure/retention info when no card figures are supplied, a hypothetical paid-off closure model, and explicit statements that it makes no payments, changes no accounts, fetches no external data, and retains no inputs.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the trigger phrases an agent matches on, then layers the mode behavior. Dense but every sentence carries information; the closing 'does not make payments, change accounts, fetch external data, or retain tool inputs' slightly repeats the earlier non-mutation disclaimer.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Output schema exists, so return shapes needn't be spelled out, and the description still explains what each input mode produces and what happens when optional data is omitted. For a read-only estimator with three optional parameters, nothing an agent needs to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds conditional semantics the schema can't express: cards alone yields a closure calculation, while cards plus cardName additionally yields before/after utilization, the limit leaving the denominator, and band-crossing detection. It also notes cardName is only meaningful alongside cards, which clarifies a real dependency.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource — calculating/explaining the utilization impact of closing a card — and immediately bounds it: 'It does not close, cancel, or change any card; it only explains and calculates.' That separates it cleanly from mutating or payoff-simulation siblings like simulate_paydown and calculate_payoff_timeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete user-question triggers ('should I cancel the credit card I never use', 'is it bad to close a card') and a scope of cancelling, downgrading, and consolidating. It also sets the no-data vs with-data usage modes. It stops short of naming a sibling alternative for overlapping questions (e.g. compare_cards_for_purchase or simulate_paydown), so it's clear context without explicit routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_canadian_credit_mechanicsHow Canadian credit reporting actually worksARead-onlyIdempotentInspect
Use this for a requested explanation of Canadian credit scores, reports, utilization, or reporting timing. Returns the Canada-specific mechanics of credit reporting, each entry leading with the correction to the common United States-based answer: the 300-900 scale and two-bureau market, statement-close versus due-date reporting, provincial rather than federal regulation, soft pulls and free-report rights, how utilization is read, and why open banking does not open up bureau data. Returns bundled reference material, optionally filtered or calculated from inputs; does not fetch live data or change accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| topic | No | A single topic id. Omit to get all of them. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | Yes | |
| topics | Yes | |
| disclosure | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already communicate read-only and idempotent behavior, and the description adds useful context: it 'does not fetch live data or change accounts' and returns 'bundled reference material, optionally filtered or calculated from inputs.' This goes beyond the structured hints without contradicting them.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but each sentence earns its place: when to use, what content is returned, and behavioral limitations. It front-loads the usage trigger and avoids filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With one optional enum parameter, rich annotations, and an output schema, the description fully covers what the agent needs: the use case, the scope of content, the output nature, and the lack of live data access or side effects. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already covers the single optional topic parameter at 100%, including an enum and instructions to omit for all topics. The description reinforces the topics in prose but does not add new parameter-level meaning, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as the one for explaining Canadian credit mechanics, with specific verbs like 'Use this for a requested explanation' and a detailed list of covered topics. It does not explicitly name or contrast sibling tools such as explain_when_issuers_report or describe_credit_gps, so it stops just short of full differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The first sentence gives a direct usage condition: use it for requested explanations of Canadian credit scores, reports, utilization, or reporting timing. It does not list exclusions or explicitly name alternatives, but the context is clear enough for an agent to select it from the sibling set.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_missed_paymentMissing a payment, and what happens afterARead-onlyIdempotentInspect
Use this for a missed, late, or nearly-late payment, or for "how long will this hurt me". Returns what happens when a Canadian credit card payment is missed: the roughly 30-day gap before it is reported at all, the Canadian R1-R9 rating scale a tradeline actually carries, and how long a reported late payment stays on the file. The Canadian answer differs from the American one on both the scale and the duration, and the 30-day gap is frequently actionable, because a payment caught inside it often never reaches the file. Returns bundled reference material, optionally filtered or calculated from inputs; does not fetch live data or change accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| daysPastDue | No | How many days past the due date the payment is, if known. Changes which part of the answer leads. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | Yes | |
| sources | Yes | |
| threshold | Yes | |
| afterwards | Yes | |
| disclosure | Yes | |
| daysPastDue | Yes | |
| ratingScale | Yes | |
| withinReportingWindow | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, and the description is consistent with all of them. It adds real context beyond them: the tool returns bundled reference material (not live data), it distinguishes the Canadian rule from the American one, and it flags that the 30-day gap is often actionable. It does not describe response shape in detail, but an output schema exists to carry that.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the use case, then the concrete content of the answer. It is on the long side and the trailing "Returns bundled reference material..." sentence is somewhat generic, but no sentence is filler and the actionable 30-day insight is placed where it will be read.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not enumerate return fields, and it instead conveys the substantive answer components (gap, scale, duration) plus the jurisdiction caveat. The only soft spot is that the optional daysPastDue input is left under-explained relative to how much the rest of the answer is spelled out.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the single parameter already documents that daysPastDue changes which part of the answer leads. The description only gestures at this with "optionally filtered or calculated from inputs," adding no threshold guidance (e.g., what counts as 'nearly late'). Baseline 3 is correct when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb-and-resource: it explains what happens when a Canadian credit card payment is missed, including the 30-day reporting gap, the R1-R9 scale, and retention duration. This clearly separates it from siblings like explain_retention_periods and explain_when_issuers_report, and it pins the answer to the Canadian jurisdiction.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use this for a missed, late, or nearly-late payment, or for 'how long will this hurt me'" gives an explicit triggering condition in the user's own phrasing. The closing clause rules out live-data and account-mutation use cases. It stops short of naming a specific sibling as the alternative for adjacent questions, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_retention_periodsHow long things stay on a Canadian credit fileARead-onlyIdempotentInspect
Use this for any "how long will this stay on my credit report" question. Returns retention periods on a Canadian credit file: closed accounts, late payments, collections, hard inquiries, bankruptcy, consumer proposals, judgments. Durations differ by information type, bureau, and province. Returns those distinctions and source links. Returns bundled reference material, optionally filtered or calculated from inputs; does not fetch live data or change accounts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | Yes | |
| items | Yes | |
| caveat | Yes | |
| disclosure | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, and closed-world, so the burden is low; the description still adds real context by saying durations vary by information type, bureau, and province, that source links are included, and that the material is bundled reference rather than live data. The only redundancy is 'does not change accounts,' which restates destructiveHint=false.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the usage trigger and keeps to four sentences with no filler. The repeated 'Returns…' openings are slightly mechanical and the closing negative clause mildly duplicates the annotations, but nothing is wasted space.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, and the description covers domain scope, variability, and sourcing. The only completeness gap is the unresolved 'filtered or calculated from inputs' wording against a parameterless schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With zero parameters, the baseline would be 4, but the phrase 'optionally filtered or calculated from inputs' implies inputs exist that the empty schema does not define. That mismatch leaves the agent unsure whether arguments are expected, so it lands below baseline.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Returns retention periods on a Canadian credit file') and enumerates the covered information types (closed accounts, late payments, collections, inquiries, bankruptcy, proposals, judgments). This clearly differentiates it from the narrower sibling explain_missed_payment and the broader explain_canadian_credit_mechanics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Opens with an explicit trigger: 'Use this for any "how long will this stay on my credit report" question,' which tells the agent exactly which user intent routes here. It does not name a competing sibling or state exclusions in tool terms, so it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_when_issuers_reportWhen issuers actually send data to the bureausARead-onlyIdempotentInspect
Use this for "when will this show up on my credit report" or "what day does my bank report". Returns how the monthly reporting cadence works in Canada, how long a change takes to appear on a file, and why an Equifax file and a TransUnion file for the same person differ. This bundled reference has no verified per-issuer transmission calendar and returns no exact reporting day. Returns bundled reference material, optionally filtered or calculated from inputs; does not fetch live data or change accounts.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | Yes | |
| general | Yes | |
| sources | Yes | |
| disclosure | Yes | |
| notPublished | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description honestly discloses the limitations: no exact reporting day and no verified per-issuer transmission calendar. It also states the tool is read-only and does not change data, which aligns with the annotations. This transparency helps the agent set correct expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is generally concise but contains slight redundancy: 'This bundled reference has no verified per-issuer transmission calendar and returns no exact reporting day' restates what was already implied in the previous sentence. Still, it is well-structured and front-loaded with usage guidance.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no input schema and no output schema details, the description is complete enough: it explains what the tool returns (general cadence, differences between bureaus) and what it lacks. It could mention the output format, but for an explanatory tool this is not a major gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to explain. The baseline score of 4 is appropriate because the description does not need to elaborate on parameters, and it correctly avoids inventing any.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose with specific example questions ('when will this show up on my credit report') and the resource it explains (issuer reporting to bureaus). It differentiates itself from siblings by focusing on the timing of reporting, not on other credit mechanics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly tells the agent when to use the tool (for questions about reporting cadence) and what it does NOT provide (exact days, verified per-issuer calendar). It also states it does not fetch live data or modify accounts, preventing misuse.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_statement_close_dateFind your statement closing dateARead-onlyIdempotentInspect
Use this whenever someone does not know their statement closing date, or gives a payment due date and asks what to pay. Returns the ways to find the closing date of a Canadian credit card, the date every other tool here depends on and the one most people have never been shown. Give a payment due date and it also derives an estimate, because federally regulated issuers must allow at least a 21-day interest-free grace period measured from the close. It looks nothing up on any account; the estimate is arithmetic on the date supplied. Returns bundled reference material, optionally filtered or calculated from inputs; does not fetch live data or change accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| issuer | No | The issuer, if known, e.g. "TD". Only used to tailor the wording — there is no per-issuer date table, because none is published. | |
| dueDate | No | A known payment due date, yyyy-mm-dd. Supplying it produces a derived estimate of the closing date. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | Yes | |
| methods | Yes | |
| graceDays | Yes | |
| disclosure | Yes | |
| derivedCloseDate | Yes | |
| derivedFromDueDate | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the readOnly/idempotent annotations, the description discloses that nothing is looked up on any account, the estimate is pure arithmetic on the supplied date, no per-issuer table exists, and it returns bundled reference material rather than live data. That is substantive behavioral context an agent cannot get from the annotations alone.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The usage condition is front-loaded, which is good, but the text contains redundancy: 'looks nothing up on any account' is repeated later as 'does not fetch live data or change accounts,' and 'Returns bundled reference material, optionally filtered or calculated from inputs' reads as boilerplate. Some flowery phrasing ('the one most people have never been shown') costs space without adding decision-relevant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema available and annotations covering the safety profile, the description fills the remaining gaps: when to call it, what it does and does not look up, and how the due-date estimate is derived. Nothing essential for correct invocation is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so both parameters are already documented. The description still adds meaning by clarifying that supplying a due date produces a derived estimate via the 21-day grace-period rule, reinforcing why the parameter matters rather than just what it is.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns the ways to find the closing date of a Canadian credit card, and explains that the date is a dependency for other tools. However, it never names the obvious sibling (get_statement_calendar) or explains how this differs from it, so sibling differentiation is only implied.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicit trigger conditions are given: 'whenever someone does not know their statement closing date, or gives a payment due date and asks what to pay.' There is no when-not-to-use guidance or named alternative, which keeps it from a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_credit_planMulti-step credit planARead-onlyIdempotentInspect
Use this when someone wants more than the next single action. Returns an ordered plan for one of three goals: raise_score, pay_down_balances, or build_credit. Safety steps come first (anything overdue, then imminent minimums), then goal steps, each with the specific action, the mechanism behind it, and a date. The plan is returned as text and structured data for the person to act on themselves; nothing is scheduled or executed. Calculates scenarios from supplied figures; does not make payments, change accounts, fetch external data, or retain tool inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| goal | Yes | Which goal to plan for. | |
| cards | Yes | The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything. | |
| today | No | Today's date in the person's local timezone, yyyy-mm-dd. Pass it — the server otherwise falls back to UTC, which is a day ahead for Canadian evenings. | |
| targetUtilization | No | Target utilization as a decimal. Defaults to 0.29 — one point under the 30% band. |
Output Schema
| Name | Required | Description |
|---|---|---|
| goal | Yes | |
| steps | Yes | |
| disclosure | Yes | |
| assumptions | Yes | |
| generatedForDate | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare read-only, non-destructive, idempotent, closed-world behavior. The description adds substantial context: the plan is text plus structured data, nothing is scheduled or executed, no payments or account changes occur, no external data is fetched, and inputs are not retained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Five sentences, front-loaded with the usage trigger and purpose, then output ordering, return format, and side-effect boundaries. Every sentence contributes useful information, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a read-only planning tool: it states input dependency, output form, step ordering, and absence of side effects, and an output schema exists. It could better route against planning-adjacent siblings like simulate_paydown and calculate_payoff_timeline.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with detailed per-field descriptions for goal, cards, today, and targetUtilization. The description adds little parameter-specific meaning beyond mentioning the three goals and that scenarios are calculated from supplied figures, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Returns an ordered plan' for 'credit plan' goals. It enumerates the three goals and distinguishes itself from single-action siblings with 'more than the next single action.'
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The opening sentence gives a clear trigger: use when someone wants more than the next single action. It does not explicitly name alternatives such as get_next_move or simulate_paydown, nor does it state when not to use this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_newcomer_credit_pathBuilding a Canadian credit file from zeroARead-onlyIdempotentInspect
Use this for any question about building credit as an immigrant, newcomer, international student, or temporary resident in Canada. Returns the ordered path for someone new to Canada: what to do before a SIN arrives, whether their home-country history can be imported and at which banks, how to get a first tradeline, and what accumulates after that. Supply the home country for a specific answer on credit import; coverage is partial, and several of the largest source countries for Canadian newcomers are not covered at all. Returns bundled reference material, optionally filtered or calculated from inputs; does not fetch live data or change accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| homeCountry | No | Country the person is arriving from, in English. Determines whether the credit-import route is open. | |
| monthsInCanada | No | Roughly how long they have been in Canada, to focus the answer on the relevant phase. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | Yes | |
| steps | Yes | |
| disclosure | Yes | |
| bankPrograms | Yes | |
| creditImport | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the read-only and idempotent annotations, the description discloses important behavioral limits: the answer is bundled reference material, does not fetch live data or change accounts, and credit-import coverage is partial with several major source countries missing entirely. Those coverage caveats materially affect how an agent should present and trust the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description front-loads the intended use case and the returned path before adding the coverage caveat and scope note. It is generally efficient, though the final sentence about bundled reference material and not fetching live data is somewhat boilerplate and could be integrated more tightly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two fully described optional parameters, rich annotations, and an output schema, the description supplies enough context to call the tool correctly. Its main remaining gap is sibling routing: it does not clarify when to prefer this over related planning or mechanics tools, and it barely explains how monthsInCanada shapes the answer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented, setting a baseline of 3. The description adds that homeCountry specifically determines whether the credit-import route is open, but monthsInCanada is only indirectly implied by the phase language and gets no additional detail.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — it returns the ordered path for building a Canadian credit file as a newcomer — and enumerates the phases covered (before SIN, credit import, first tradeline, accumulation). This makes it clearly distinguishable from mechanics explainers like explain_canadian_credit_mechanics and from product lists like list_credit_building_products.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives an explicit trigger audience — immigrants, newcomers, international students, temporary residents — and says to supply the home country for a specific import answer. However, it does not name sibling tools or clarify boundaries against related tools such as get_credit_plan, explain_canadian_credit_mechanics, or list_credit_building_products, leaving some selection ambiguity.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_next_moveNext moveARead-onlyIdempotentInspect
Use this when someone asks what to pay first, what to do next, or how to lower utilization before it is reported. Returns the single highest-priority action from the card figures given in the conversation: which card, how much, and by which date. The calculation uses the supplied statement closing date as a planning assumption; actual issuer reporting dates can differ. Calculates scenarios from supplied figures; does not make payments, change accounts, fetch external data, or retain tool inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| cards | Yes | The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything. | |
| today | No | Today's date in the person's local timezone, yyyy-mm-dd. Pass it — the server otherwise falls back to UTC, which is a day ahead for Canadian evenings. | |
| targetUtilization | No | Target utilization as a decimal. Defaults to 0.29 — one point under the 30% band. |
Output Schema
| Name | Required | Description |
|---|---|---|
| move | Yes | |
| forecast | Yes | No validated score prediction is available. |
| disclosure | Yes | |
| assumptions | Yes | |
| currentUtilization | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already signal read-only, idempotent, and non-destructive behavior. The description adds valuable detail beyond those hints: 'does not make payments, change accounts, fetch external data, or retain tool inputs,' and it discloses the planning-assumption caveat about issuer reporting dates. No contradiction with annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three dense, front-loaded sentences with no filler; the trigger conditions appear first and the caveats are compactly grouped. The final negative list is slightly long but each item serves the transparency goal.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the rich schema, strong annotations, and an output schema, the description sufficiently covers invocation triggers, data scope, assumptions, and side-effect limitations. It doesn't explain the priority calculation, but that is reasonable to leave to the output schema and the tool's behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers 100% of parameters with highly detailed descriptions, including defaults, units, and edge cases. The tool description only adds thematic hints like 'which card, how much, and by which date,' which doesn't materially extend the schema's already comprehensive parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Returns') and resource ('the single highest-priority action') and enumerates the exact user questions it answers ('what to pay first, what to do next, or how to lower utilization'). It distinguishes itself from siblings like simulate_paydown or get_credit_plan by emphasizing 'single' action rather than a plan or timeline.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly states when to use the tool with three concrete trigger phrases. However, it doesn't name alternatives or state when not to use it, so it stops short of full routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_reported_snapshotCalculate utilization from supplied balancesARead-onlyIdempotentInspect
Use this when someone asks how their cards look, where they stand, or which card is the problem. Returns utilization from supplied balances, days to the supplied closing date, and a hypothetical payment to reach the target. It does not determine future bureau-reported balances. This is the difference between today's balance and the figure the issuer transmits. Calculates scenarios from supplied figures; does not make payments, change accounts, fetch external data, or retain tool inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| cards | Yes | The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything. | |
| today | No | Today's date in the person's local timezone, yyyy-mm-dd. Pass it — the server otherwise falls back to UTC, which is a day ahead for Canadian evenings. | |
| targetUtilization | No | Target utilization as a decimal. Defaults to 0.29 — one point under the 30% band. |
Output Schema
| Name | Required | Description |
|---|---|---|
| band | Yes | |
| cards | Yes | |
| isEmpty | Yes | |
| disclosure | Yes | |
| totalLimit | Yes | |
| assumptions | Yes | |
| totalReported | Yes | |
| blendedUtilization | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive, closed-world, so the description isn't carrying the safety burden. It still adds real value beyond them: it clarifies the tool is a pure calculation over supplied figures, makes no payments or account changes, fetches no external data, and retains no tool inputs — the last two being non-obvious data-handling behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the user-intent trigger, then outputs, then boundaries. Slightly redundant: 'It does not determine future bureau-reported balances' and 'This is the difference between today's balance and the figure the issuer transmits' say nearly the same thing, costing a sentence.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a pure calculation tool with a full schema, complete annotations, and an output schema, the description covers purpose, inputs, and side-effect boundaries adequately. Return shape needs no explanation given the output schema. Only minor gap is not naming the sibling to use for bureau-reporting timing questions.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the per-field docs (APR vs unknown, creditLimit 0 for charge cards, statementCloseDate semantics) are thorough, so the schema does the heavy lifting. The description only restates 'supplied balances' and 'supplied closing date' without adding format or default guidance. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource — it computes utilization from supplied balances, days to the supplied closing date, and a hypothetical payment to hit a target. It also draws a boundary against the sibling concept of bureau-reported balances (e.g., explain_when_issuers_report). It stops short of naming an actual sibling tool, so disambiguation is by concept rather than by name.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives concrete trigger language tied to user intent ('asks how their cards look, where they stand, or which card is the problem') plus an exclusion ('does not determine future bureau-reported balances'). No alternative tool is named, so the agent must still map the intent-to-sibling call itself.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_statement_calendarStatement calendarARead-onlyIdempotentInspect
Use this when someone asks about timing, what is coming up, or why the closing date differs from the due date. Returns the upcoming dates in order: when to pay, when each statement closes (the bureau read), and when each payment is due (the delinquency line). Calculates scenarios from supplied figures; does not make payments, change accounts, fetch external data, or retain tool inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| cards | Yes | The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything. | |
| count | No | How many events to return. Default 8. | |
| today | No | Today's date in the person's local timezone, yyyy-mm-dd. Pass it — the server otherwise falls back to UTC, which is a day ahead for Canadian evenings. |
Output Schema
| Name | Required | Description |
|---|---|---|
| events | Yes | |
| disclosure | Yes | |
| assumptions | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, closed-world and non-destructive, so the description only needs to add context — and it does: it calculates from supplied figures, fetches nothing external, and explicitly retains no tool inputs. That privacy/no-retention note is genuine value beyond the annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The usage trigger is front-loaded in the first clause, followed by the return shape ordered as it will be returned, then a compact exclusion list. No sentence is filler and nothing is buried.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description need not explain return values, and it still summarizes the ordering of events. Combined with exhaustive parameter docs, an agent has enough to call it correctly; only the count/today defaults are left entirely to the schema.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so cards/count/today are all fully documented in the schema, and the baseline is 3. The description adds only the vague phrase 'calculates scenarios from supplied figures' without clarifying count, today, or the date-driven inputs beyond what the schema says.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: returns upcoming statement dates in order (pay date, close date, due date), and frames it around the closing-vs-due distinction. It does not explicitly name which sibling to prefer (e.g. find_statement_close_date), but the calendar-ordering purpose is unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives concrete trigger conditions: 'when someone asks about timing, what is coming up, or why the closing date differs from the due date.' It also lists what the tool does not do (no payments, no account changes, no external fetch), which steers the agent away from misuse, though it never names an alternative sibling tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_credit_building_productsCanadian credit-building productsARead-onlyIdempotentInspect
Use this to retrieve dated reference examples of Canadian secured cards and credit-building products. Confirm current terms and reporting arrangements with the provider. Returns the products available in Canada, grouped by how established they are, with which bureau each reports to. Single-bureau reporting is the detail most often missed: several well-known products report to Equifax only, which leaves the TransUnion file empty. Also flags the warning signs on upfront-fee credit repair and advertised-certainty lending. Returns bundled reference material, optionally filtered or calculated from inputs; does not fetch live data or change accounts.
| Name | Required | Description | Default |
|---|---|---|---|
| tier | No | Filter to one credibility tier. Omit for all. |
Output Schema
| Name | Required | Description |
|---|---|---|
| asOf | Yes | |
| caveat | Yes | |
| sources | Yes | |
| products | Yes | |
| disclosure | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the bar is lower; the description still adds real context — content is bundled static reference material, not live data, and outputs are grouped by tier with bureau coverage. The warning about single-bureau (Equifax-only) reporting is domain value rather than tool behavior, but the 'confirm with provider' staleness caveat is genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the action and the non-live-data scope, which is good. But the middle sentences drift into product education (single-bureau reporting, upfront-fee warning signs) and the closing sentence 'Returns bundled reference material, optionally filtered or calculated from inputs' is generic filler that could be cut.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema and full annotation coverage, the description only needs to establish scope and caveats, which it does: static reference data, provider terms may change, tier grouping. Nothing an agent needs to invoke correctly is missing, though the parameter story is thin.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
One optional parameter at 100% schema coverage, so the schema already documents the enum. The description only alludes vaguely to results being 'optionally filtered or calculated from inputs' and never names the tier filter or its values, adding little beyond the schema. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource: 'retrieve dated reference examples of Canadian secured cards and credit-building products.' The scope (reference catalogue, grouped by credibility tier, with bureau reporting) is concrete enough to distinguish it from the explain_*/simulate_* siblings, but it never names a sibling directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'Use this to retrieve...' plus 'Confirm current terms and reporting arrangements with the provider' and 'does not fetch live data or change accounts' effectively describes the when (lookup/research) and the when-not (live account data). No sibling tool is named as an alternative, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
simulate_paydownWhat a payment does to reported utilizationARead-onlyIdempotentInspect
Use this when someone asks what happens if they pay a particular amount, or wants to compare two amounts. Returns a what-if for a specific payment on a specific card before it closes: reported utilization before and after, per card and blended. No score change is predicted. It is a calculation only; no payment is made. Calculates scenarios from supplied figures; does not make payments, change accounts, fetch external data, or retain tool inputs.
| Name | Required | Description | Default |
|---|---|---|---|
| cards | Yes | The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything. | |
| today | No | Today's date in the person's local timezone, yyyy-mm-dd. Pass it — the server otherwise falls back to UTC, which is a day ahead for Canadian evenings. | |
| amount | Yes | Payment amount in CAD, posting before that card's statement closes. | |
| cardName | Yes | Which card the payment goes on. Partial names are matched. |
Output Schema
| Name | Required | Description |
|---|---|---|
| amount | Yes | |
| cardName | Yes | |
| forecast | Yes | No validated score prediction is available. |
| disclosure | Yes | |
| assumptions | Yes | |
| blendedAfter | Yes | |
| blendedBefore | Yes | |
| cardBandAfter | Yes | |
| payBeforeDate | Yes | |
| cardBandBefore | Yes | |
| cardUtilizationAfter | Yes | |
| cardUtilizationBefore | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly, idempotent, non-destructive), the description adds substantial transparency: 'It is a calculation only; no payment is made' and explicitly states it 'does not make payments, change accounts, fetch external data, or retain tool inputs.' This fully discloses the tool's side effects and non-effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized but contains some redundancy, such as repeating the calculation nature in 'Returns a what-if' and 'Calculates scenarios'. It is still clear and well-organized, but could be trimmed slightly without losing information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity and the presence of a separate output schema, the description covers all essential aspects: purpose, output scope, and limitations. It does not address edge cases like multiple cards or overpayment, but these are likely covered by the schema and are not critical for an agent deciding to invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides extensive descriptions for all parameters (100% coverage), including nuanced warnings like the meaning of 0 for creditLimit and aprPercent. The main tool description adds no additional parameter semantics, so the baseline score for high schema coverage applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific trigger ('when someone asks what happens if they pay a particular amount, or wants to compare two amounts') and the precise output ('reported utilization before and after, per card and blended'). It also explicitly distinguishes what it does not do ('No score change is predicted'), making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear positive use case but does not mention when to prefer an alternative tool or when not to use it. While it implies that it is only for calculation and not for actual payments, it lacks explicit comparison against sibling tools, leaving some ambiguity about boundary conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
11 tool updates
- Changed
calculate_payoff_timeline7 fields changed- removed
Output schema / properties / aprBps / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / aprBps / typeAdded value: +[ + "number", + "null" +] - changed
Output schema / properties / atMinimum / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "monthlyPayment": { - "type": "number" - }, - "months": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "neverShrinks": { - "type": "boolean" - }, - "totalInterest": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "monthlyPayment", - "months", - "totalInterest", - "neverShrinks" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "monthlyPayment": { + "type": "number" + }, + "months": { + "type": [ + "number", + "null" + ] + }, + "neverShrinks": { + "type": "boolean" + }, + "totalInterest": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "monthlyPayment", + "months", + "totalInterest", + "neverShrinks" + ], + "type": "object" + }, + { + "type": "null" + } +] - removed
Output schema / properties / months / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / months / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / totalInterest / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / totalInterest / typeAdded value: +[ + "number", + "null" +]
- Changed
compare_cards_for_purchase2 fields changed- changed
Output schema / properties / bestForReporting / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "aprBps": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "bandAfter": { - "enum": [ - "good", - "elevated", - "high" - ], - "type": "string" - }, - "blendedAfter": { - "type": "number" - }, - "crossesBandUp": { - "type": "boolean" - }, - "name": { - "type": "string" - }, - "remainingHeadroom": { - "type": "number" - }, - "utilizationAfter": { - "type": "number" - } - }, - "required": [ - "name", - "utilizationAfter", - "bandAfter", - "blendedAfter", - "crossesBandUp", - "remainingHeadroom", - "aprBps" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "aprBps": { + "type": [ + "number", + "null" + ] + }, + "bandAfter": { + "enum": [ + "good", + "elevated", + "high" + ], + "type": "string" + }, + "blendedAfter": { + "type": "number" + }, + "crossesBandUp": { + "type": "boolean" + }, + "name": { + "type": "string" + }, + "remainingHeadroom": { + "type": "number" + }, + "utilizationAfter": { + "type": "number" + } + }, + "required": [ + "name", + "utilizationAfter", + "bandAfter", + "blendedAfter", + "crossesBandUp", + "remainingHeadroom", + "aprBps" + ], + "type": "object" + }, + { + "type": "null" + } +] - changed
Output schema / properties / cheapestToCarry / anyOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "aprBps": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "monthsAtMinimum": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - }, - "name": { - "type": "string" - }, - "neverShrinksAtMinimum": { - "type": "boolean" - }, - "totalInterestAtMinimum": { - "anyOf": [ - { - "type": "number" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "name", - "aprBps", - "monthsAtMinimum", - "totalInterestAtMinimum", - "neverShrinksAtMinimum" - ], - "type": "object" - }, - { - "type": "null" - } -]New value: +[ + { + "additionalProperties": false, + "properties": { + "aprBps": { + "type": [ + "number", + "null" + ] + }, + "monthsAtMinimum": { + "type": [ + "number", + "null" + ] + }, + "name": { + "type": "string" + }, + "neverShrinksAtMinimum": { + "type": "boolean" + }, + "totalInterestAtMinimum": { + "type": [ + "number", + "null" + ] + } + }, + "required": [ + "name", + "aprBps", + "monthsAtMinimum", + "totalInterestAtMinimum", + "neverShrinksAtMinimum" + ], + "type": "object" + }, + { + "type": "null" + } +]
- Changed
estimate_close_card_impact16 fields changed- removed
Output schema / properties / balanceOnCard / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / balanceOnCard / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / blendedAfter / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / blendedAfter / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / blendedBefore / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / blendedBefore / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / cardName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / cardName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / crossesBandUp / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / crossesBandUp / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / isOnlyRevolvingAccount / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / isOnlyRevolvingAccount / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / limitRemoved / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / limitRemoved / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / remainingLimit / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / remainingLimit / typeAdded value: +[ + "number", + "null" +]
- Changed
explain_missed_payment4 fields changed- removed
Output schema / properties / daysPastDue / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / daysPastDue / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / withinReportingWindow / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / withinReportingWindow / typeAdded value: +[ + "boolean", + "null" +]
- Changed
explain_retention_periods2 fields changed- removed
Output schema / properties / items / items / properties / differsFromUs / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / items / items / properties / differsFromUs / typeAdded value: +[ + "string", + "null" +]
- Changed
find_statement_close_date4 fields changed- removed
Output schema / properties / derivedCloseDate / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / derivedCloseDate / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / derivedFromDueDate / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / derivedFromDueDate / typeAdded value: +[ + "string", + "null" +]
- Changed
get_credit_plan6 fields changed- removed
Output schema / properties / steps / items / properties / accountName / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / steps / items / properties / accountName / typeAdded value: +[ + "string", + "null" +] - removed
Output schema / properties / steps / items / properties / amount / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / steps / items / properties / amount / typeAdded value: +[ + "number", + "null" +] - removed
Output schema / properties / steps / items / properties / dueByDate / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / steps / items / properties / dueByDate / typeAdded value: +[ + "string", + "null" +]
- Changed
get_newcomer_credit_path4 fields changed- removed
Output schema / properties / creditImport / properties / covered / anyOfRemoved value: -[ - { - "type": "boolean" - }, - { - "type": "null" - } -] - added
Output schema / properties / creditImport / properties / covered / typeAdded value: +[ + "boolean", + "null" +] - removed
Output schema / properties / creditImport / properties / homeCountry / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / creditImport / properties / homeCountry / typeAdded value: +[ + "string", + "null" +]
- Changed
get_reported_snapshot2 fields changed- removed
Output schema / properties / cards / items / properties / payToTarget / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / cards / items / properties / payToTarget / typeAdded value: +[ + "number", + "null" +]
- Changed
get_statement_calendar2 fields changed- removed
Output schema / properties / events / items / properties / amount / anyOfRemoved value: -[ - { - "type": "number" - }, - { - "type": "null" - } -] - added
Output schema / properties / events / items / properties / amount / typeAdded value: +[ + "number", + "null" +]
- Changed
list_credit_building_products2 fields changed- removed
Output schema / properties / products / items / properties / url / anyOfRemoved value: -[ - { - "type": "string" - }, - { - "type": "null" - } -] - added
Output schema / properties / products / items / properties / url / typeAdded value: +[ + "string", + "null" +]
1 tool update
- Changed
describe_credit_gps3 fields changed- added
Output schema / properties / manualReportGuideAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - added
Output schema / properties / sourcesAdded value: +{ + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / requiredPrevious value: -[ - "what", - "privacy", - "limits", - "product", - "disclosure" -]New value: +[ + "what", + "privacy", + "limits", + "product", + "manualReportGuide", + "sources", + "disclosure" +]
29 tool updates
- Removed
about_credit_gps - Added
calculate_payoff_timeline - Removed
canadian_credit_mechanics - Removed
close_card_impact - Added
compare_cards_for_purchase - Removed
credit_plan - Removed
credit_product_landscape - Added
describe_credit_gps - Added
estimate_close_card_impact - Added
explain_canadian_credit_mechanics - Added
explain_missed_payment - Added
explain_retention_periods - Added
explain_when_issuers_report - Added
get_credit_plan - Added
get_newcomer_credit_path - Added
get_next_move - Added
get_reported_snapshot - Added
get_statement_calendar - Removed
how_long_it_stays - Added
list_credit_building_products - Removed
missed_payment_guide - Removed
newcomer_credit_path - Removed
next_move - Removed
payoff_timeline - Removed
purchase_impact - Removed
reported_snapshot - Changed
simulate_paydown3 fields changed- removed
Output schema / properties / forecast / anyOfRemoved value: -[ - { - "additionalProperties": false, - "properties": { - "confidencePct": { - "type": "number" - }, - "high": { - "type": "number" - }, - "isEstimate": { - "const": true, - "type": "boolean" - }, - "low": { - "type": "number" - } - }, - "required": [ - "low", - "high", - "confidencePct", - "isEstimate" - ], - "type": "object" - }, - { - "type": "null" - } -] - added
Output schema / properties / forecast / descriptionAdded value: +"No validated score prediction is available." - added
Output schema / properties / forecast / typeAdded value: +"null"
- Removed
statement_calendar - Removed
when_issuers_report
16 tool updates
- First observed
about_credit_gps - First observed
canadian_credit_mechanics - First observed
close_card_impact - First observed
credit_plan - First observed
credit_product_landscape - First observed
find_statement_close_date - First observed
how_long_it_stays - First observed
missed_payment_guide - First observed
newcomer_credit_path - First observed
next_move - First observed
payoff_timeline - First observed
purchase_impact - First observed
reported_snapshot - First observed
simulate_paydown - First observed
statement_calendar - First observed
when_issuers_report
Related MCP Connectors
Canadian federal and provincial holidays, business-day maths and invoice due dates.
Read-only Canadian GST/HST rates, small-supplier check and CRA allowance rates, with CRA sources.
Deterministic Canadian mortgage calculations for qualification, debt service, LTV, and penalties.
Canadian GST/HST/PST/QST rates and calculator by province/date, plus Bank of Canada CAD FX rates.
Related MCP Servers
- AlicenseAqualityCmaintenanceGives AI agents structured, typed access to Canadian open data through a single server covering Statistics Canada tables, Census and public use microdata, the Bank of Canada, CMHC, federal agencies and federal, provincial, territorial and municipal open-data portals, in English and French. It offers roughly 200 tools for querying, planning multi-source queries, and generating reproduction code in R, Python, Stata or Julia.3290 PyPI1MIT
- AlicenseNot gradedqualityBmaintenanceEnables querying US credit union data from NCUA 5300 Call Reports, including financials, membership, branches and ATMs, rankings, comparisons, and account code lookups.24 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables querying US bank regulatory filings at line-item level: search institutions, retrieve labeled call reports, track specific items over time, compare banks, and inspect data coverage and code meanings, with amounts normalized to whole dollars.243 npmMIT
- AlicenseAqualityBmaintenanceProvides live access to Canadian economic data via the Bank of Canada's Valet API, including exchange rates, policy interest rates, CPI, bond yields, and commodity prices.444 npmMIT
Glama MCP Gateway
Add one secure layer between your agents and this server.