Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,545Letters: 14Defects: 1,324counted 2 min ago
teppi

Server definition

Hash
sha256:ec27c0bf009dff41423cdfb88b2aa6efeece92c449d51923b2d1685cfdd83ab3
What it is
What a remote MCP server returned when asked what it offers: 16 tools

The blob, as servednamed by its sha256

{ "instructions": "Credit GPS provides Canadian credit-card scenario calculations and dated reference material.\n\nUse calculation tools for user-requested utilization comparisons, payment scenarios, statement calendars, payoff timelines, and hypothetical card closures. Use reference tools for Canadian reporting questions, newcomer pathways, and product information. Budgeting, investment recommendations, transactions, and non-Canadian credit rules are outside scope.\n\nAll tools are read-only and use supplied figures or bundled data. They do not access bank accounts or credit files, execute payments, or fetch live information. Use card nicknames; do not request account numbers, a SIN, credentials, or full credit reports.\n\nCredit GPS is available throughout Canada, including Quebec. Users obtain free bureau reports themselves and manually enter figures in the separate Credit GPS application for score tracking. Use describe_credit_gps for those instructions. The plugin cannot save entries, retrieve stored scores, or pull Equifax or TransUnion files. Direct bureau pulls are not on the current near-term roadmap.\n\nCollect the figures required by the selected tool. The tools estimate_close_card_impact, find_statement_close_date, explain_when_issuers_report, explain_missed_payment, explain_retention_periods, explain_canadian_credit_mechanics, and list_credit_building_products can answer without figures; otherwise ask for missing inputs. Pass the user's local date as today. Keep unknown APR and minimum payments omitted. Treat assumed dates as provisional, never as confirmed deadlines.\n\nStatement closing dates are planning inputs, not verified bureau transmission dates. Actual reporting timing, balances, payment posting, and product eligibility can differ. Preserve assumptions and source dates. The calculator's utilization bands are planning thresholds, not validated score-model boundaries. No score-point forecasts, confidence percentages, or approval predictions are available.\n\nReference data as of 2026-08-23.", "tools": [ { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cardName": { "description": "Which card to pay off. Partial names are matched.", "maxLength": 80, "type": "string" }, "cards": { "description": "The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything.", "items": { "properties": { "aprPercent": { "description": "Purchase APR as a percentage, e.g. 19.99. Omit when unknown. Never pass 0 to mean unknown — 0 is a real interest-free rate and cost estimates would understate what a balance costs.", "maximum": 100, "minimum": 0, "type": "number" }, "creditLimit": { "description": "Credit limit in CAD. Use 0 for a charge card or any account with no set limit — it is then excluded from utilization.", "maximum": 100000000, "minimum": 0, "type": "number" }, "currentBalance": { "description": "Today's balance, if it differs from the statement balance. Defaults to statementBalance.", "maximum": 100000000, "minimum": 0, "type": "number" }, "dueDate": { "description": "Payment due date for the current statement. Defaults to 21 days after the closing date.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "isOverdue": { "description": "True if a payment is past due right now.", "type": "boolean" }, "last4": { "description": "Last four digits, only to tell two similar cards apart. Optional and never required.", "maxLength": 4, "type": "string" }, "minimumPayment": { "description": "The issuer's minimum payment. Omit if unknown — do not pass 0 to mean unknown.", "maximum": 100000000, "minimum": 0, "type": "number" }, "name": { "description": "What the person calls this card, e.g. \"TD Cash Back Visa\" or \"the blue one\".", "maxLength": 80, "minLength": 1, "type": "string" }, "statementBalance": { "description": "Balance at the most recent statement close. This is the figure the issuer reported, and the one utilization is read from. If only today's balance is known, pass it here and say so.", "maximum": 100000000, "minimum": 0, "type": "number" }, "statementCloseDate": { "description": "The day the NEXT statement closes — the date the engine targets. Found on a statement or in online banking. If omitted, a placeholder 30 days out is assumed and flagged.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "name", "creditLimit", "statementBalance" ], "type": "object" }, "maxItems": 25, "minItems": 1, "type": "array" }, "monthlyPayment": { "description": "Fixed amount paid each month in CAD. Omit to use the card's minimum payment, if one was supplied.", "exclusiveMinimum": 0, "maximum": 100000000, "type": "number" }, "today": { "description": "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.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "cards", "cardName" ], "type": "object" }, "name": "calculate_payoff_timeline", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "aprBps": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "aprUnknown": { "type": "boolean" }, "assumptions": { "items": { "type": "string" }, "type": "array" }, "atMinimum": { "anyOf": [ { "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" } ] }, "balance": { "type": "number" }, "cardName": { "type": "string" }, "disclosure": { "type": "string" }, "monthlyPayment": { "type": "number" }, "months": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "neverShrinks": { "type": "boolean" }, "totalInterest": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "cardName", "balance", "aprBps", "monthlyPayment", "months", "totalInterest", "neverShrinks", "aprUnknown", "atMinimum", "assumptions", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "amount": { "description": "Purchase amount in CAD.", "exclusiveMinimum": 0, "maximum": 100000000, "type": "number" }, "cards": { "description": "The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything.", "items": { "properties": { "aprPercent": { "description": "Purchase APR as a percentage, e.g. 19.99. Omit when unknown. Never pass 0 to mean unknown — 0 is a real interest-free rate and cost estimates would understate what a balance costs.", "maximum": 100, "minimum": 0, "type": "number" }, "creditLimit": { "description": "Credit limit in CAD. Use 0 for a charge card or any account with no set limit — it is then excluded from utilization.", "maximum": 100000000, "minimum": 0, "type": "number" }, "currentBalance": { "description": "Today's balance, if it differs from the statement balance. Defaults to statementBalance.", "maximum": 100000000, "minimum": 0, "type": "number" }, "dueDate": { "description": "Payment due date for the current statement. Defaults to 21 days after the closing date.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "isOverdue": { "description": "True if a payment is past due right now.", "type": "boolean" }, "last4": { "description": "Last four digits, only to tell two similar cards apart. Optional and never required.", "maxLength": 4, "type": "string" }, "minimumPayment": { "description": "The issuer's minimum payment. Omit if unknown — do not pass 0 to mean unknown.", "maximum": 100000000, "minimum": 0, "type": "number" }, "name": { "description": "What the person calls this card, e.g. \"TD Cash Back Visa\" or \"the blue one\".", "maxLength": 80, "minLength": 1, "type": "string" }, "statementBalance": { "description": "Balance at the most recent statement close. This is the figure the issuer reported, and the one utilization is read from. If only today's balance is known, pass it here and say so.", "maximum": 100000000, "minimum": 0, "type": "number" }, "statementCloseDate": { "description": "The day the NEXT statement closes — the date the engine targets. Found on a statement or in online banking. If omitted, a placeholder 30 days out is assumed and flagged.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "name", "creditLimit", "statementBalance" ], "type": "object" }, "maxItems": 25, "minItems": 1, "type": "array" }, "targetUtilization": { "description": "Target utilization as a decimal. Defaults to 0.29 — one point under the 30% band.", "maximum": 0.95, "minimum": 0.01, "type": "number" } }, "required": [ "cards", "amount" ], "type": "object" }, "name": "compare_cards_for_purchase", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "amount": { "type": "number" }, "bestForReporting": { "anyOf": [ { "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" } ] }, "blendedBefore": { "type": "number" }, "cheapestToCarry": { "anyOf": [ { "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" } ] }, "disclosure": { "type": "string" }, "noCardFits": { "type": "boolean" }, "optionsDisagree": { "type": "boolean" } }, "required": [ "amount", "blendedBefore", "bestForReporting", "cheapestToCarry", "optionsDisagree", "noCardFits", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "describe_credit_gps", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "disclosure": { "type": "string" }, "limits": { "items": { "type": "string" }, "type": "array" }, "manualReportGuide": { "items": { "type": "string" }, "type": "array" }, "privacy": { "items": { "type": "string" }, "type": "array" }, "product": { "type": "string" }, "sources": { "items": { "type": "string" }, "type": "array" }, "what": { "type": "string" } }, "required": [ "what", "privacy", "limits", "product", "manualReportGuide", "sources", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cardName": { "description": "The card being considered for closure. Partial names are matched. Only meaningful alongside cards.", "maxLength": 80, "type": "string" }, "cards": { "description": "The person's cards, if they have given them. Omit to get the mechanics and the Canadian rules without any numbers.", "items": { "properties": { "aprPercent": { "description": "Purchase APR as a percentage, e.g. 19.99. Omit when unknown. Never pass 0 to mean unknown — 0 is a real interest-free rate and cost estimates would understate what a balance costs.", "maximum": 100, "minimum": 0, "type": "number" }, "creditLimit": { "description": "Credit limit in CAD. Use 0 for a charge card or any account with no set limit — it is then excluded from utilization.", "maximum": 100000000, "minimum": 0, "type": "number" }, "currentBalance": { "description": "Today's balance, if it differs from the statement balance. Defaults to statementBalance.", "maximum": 100000000, "minimum": 0, "type": "number" }, "dueDate": { "description": "Payment due date for the current statement. Defaults to 21 days after the closing date.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "isOverdue": { "description": "True if a payment is past due right now.", "type": "boolean" }, "last4": { "description": "Last four digits, only to tell two similar cards apart. Optional and never required.", "maxLength": 4, "type": "string" }, "minimumPayment": { "description": "The issuer's minimum payment. Omit if unknown — do not pass 0 to mean unknown.", "maximum": 100000000, "minimum": 0, "type": "number" }, "name": { "description": "What the person calls this card, e.g. \"TD Cash Back Visa\" or \"the blue one\".", "maxLength": 80, "minLength": 1, "type": "string" }, "statementBalance": { "description": "Balance at the most recent statement close. This is the figure the issuer reported, and the one utilization is read from. If only today's balance is known, pass it here and say so.", "maximum": 100000000, "minimum": 0, "type": "number" }, "statementCloseDate": { "description": "The day the NEXT statement closes — the date the engine targets. Found on a statement or in online banking. If omitted, a placeholder 30 days out is assumed and flagged.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "name", "creditLimit", "statementBalance" ], "type": "object" }, "maxItems": 25, "minItems": 1, "type": "array" }, "today": { "description": "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.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "type": "object" }, "name": "estimate_close_card_impact", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "alwaysTrue": { "items": { "type": "string" }, "type": "array" }, "assumptions": { "items": { "type": "string" }, "type": "array" }, "balanceOnCard": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "bandAfter": { "anyOf": [ { "enum": [ "good", "elevated", "high" ], "type": "string" }, { "type": "null" } ] }, "bandBefore": { "anyOf": [ { "enum": [ "good", "elevated", "high" ], "type": "string" }, { "type": "null" } ] }, "blendedAfter": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "blendedBefore": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "cardName": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "computed": { "type": "boolean" }, "crossesBandUp": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "disclosure": { "type": "string" }, "isOnlyRevolvingAccount": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "limitRemoved": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "remainingLimit": { "anyOf": [ { "type": "number" }, { "type": "null" } ] } }, "required": [ "computed", "cardName", "limitRemoved", "balanceOnCard", "blendedBefore", "blendedAfter", "bandBefore", "bandAfter", "crossesBandUp", "remainingLimit", "isOnlyRevolvingAccount", "alwaysTrue", "assumptions", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "topic": { "description": "A single topic id. Omit to get all of them.", "enum": [ "statement_close_vs_due_date", "scores_and_scale", "checking_your_own_file", "regulation", "open_banking", "utilization" ], "type": "string" } }, "type": "object" }, "name": "explain_canadian_credit_mechanics", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asOf": { "type": "string" }, "disclosure": { "type": "string" }, "topics": { "items": { "additionalProperties": false, "properties": { "correction": { "type": "string" }, "detail": { "items": { "type": "string" }, "type": "array" }, "id": { "type": "string" }, "sources": { "items": { "type": "string" }, "type": "array" }, "title": { "type": "string" } }, "required": [ "id", "title", "correction", "detail", "sources" ], "type": "object" }, "type": "array" } }, "required": [ "asOf", "topics", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "daysPastDue": { "description": "How many days past the due date the payment is, if known. Changes which part of the answer leads.", "maximum": 9007199254740991, "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "explain_missed_payment", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "afterwards": { "items": { "type": "string" }, "type": "array" }, "asOf": { "type": "string" }, "daysPastDue": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "disclosure": { "type": "string" }, "ratingScale": { "items": { "type": "string" }, "type": "array" }, "sources": { "items": { "type": "string" }, "type": "array" }, "threshold": { "items": { "type": "string" }, "type": "array" }, "withinReportingWindow": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] } }, "required": [ "asOf", "daysPastDue", "withinReportingWindow", "threshold", "ratingScale", "afterwards", "sources", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "explain_retention_periods", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asOf": { "type": "string" }, "caveat": { "type": "string" }, "disclosure": { "type": "string" }, "items": { "items": { "additionalProperties": false, "properties": { "differsFromUs": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "duration": { "type": "string" }, "item": { "type": "string" }, "sources": { "items": { "type": "string" }, "type": "array" } }, "required": [ "item", "duration", "differsFromUs", "sources" ], "type": "object" }, "type": "array" } }, "required": [ "asOf", "items", "caveat", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": {}, "type": "object" }, "name": "explain_when_issuers_report", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asOf": { "type": "string" }, "disclosure": { "type": "string" }, "general": { "items": { "type": "string" }, "type": "array" }, "notPublished": { "items": { "type": "string" }, "type": "array" }, "sources": { "items": { "type": "string" }, "type": "array" } }, "required": [ "asOf", "general", "notPublished", "sources", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "dueDate": { "description": "A known payment due date, yyyy-mm-dd. Supplying it produces a derived estimate of the closing date.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "issuer": { "description": "The issuer, if known, e.g. \"TD\". Only used to tailor the wording — there is no per-issuer date table, because none is published.", "maxLength": 80, "type": "string" } }, "type": "object" }, "name": "find_statement_close_date", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asOf": { "type": "string" }, "derivedCloseDate": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "derivedFromDueDate": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "disclosure": { "type": "string" }, "graceDays": { "type": "number" }, "methods": { "items": { "additionalProperties": false, "properties": { "id": { "type": "string" }, "reliability": { "type": "string" }, "sources": { "items": { "type": "string" }, "type": "array" }, "steps": { "items": { "type": "string" }, "type": "array" }, "title": { "type": "string" } }, "required": [ "id", "title", "reliability", "steps", "sources" ], "type": "object" }, "type": "array" } }, "required": [ "asOf", "derivedCloseDate", "derivedFromDueDate", "graceDays", "methods", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cards": { "description": "The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything.", "items": { "properties": { "aprPercent": { "description": "Purchase APR as a percentage, e.g. 19.99. Omit when unknown. Never pass 0 to mean unknown — 0 is a real interest-free rate and cost estimates would understate what a balance costs.", "maximum": 100, "minimum": 0, "type": "number" }, "creditLimit": { "description": "Credit limit in CAD. Use 0 for a charge card or any account with no set limit — it is then excluded from utilization.", "maximum": 100000000, "minimum": 0, "type": "number" }, "currentBalance": { "description": "Today's balance, if it differs from the statement balance. Defaults to statementBalance.", "maximum": 100000000, "minimum": 0, "type": "number" }, "dueDate": { "description": "Payment due date for the current statement. Defaults to 21 days after the closing date.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "isOverdue": { "description": "True if a payment is past due right now.", "type": "boolean" }, "last4": { "description": "Last four digits, only to tell two similar cards apart. Optional and never required.", "maxLength": 4, "type": "string" }, "minimumPayment": { "description": "The issuer's minimum payment. Omit if unknown — do not pass 0 to mean unknown.", "maximum": 100000000, "minimum": 0, "type": "number" }, "name": { "description": "What the person calls this card, e.g. \"TD Cash Back Visa\" or \"the blue one\".", "maxLength": 80, "minLength": 1, "type": "string" }, "statementBalance": { "description": "Balance at the most recent statement close. This is the figure the issuer reported, and the one utilization is read from. If only today's balance is known, pass it here and say so.", "maximum": 100000000, "minimum": 0, "type": "number" }, "statementCloseDate": { "description": "The day the NEXT statement closes — the date the engine targets. Found on a statement or in online banking. If omitted, a placeholder 30 days out is assumed and flagged.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "name", "creditLimit", "statementBalance" ], "type": "object" }, "maxItems": 25, "minItems": 1, "type": "array" }, "goal": { "description": "Which goal to plan for.", "enum": [ "raise_score", "pay_down_balances", "build_credit" ], "type": "string" }, "targetUtilization": { "description": "Target utilization as a decimal. Defaults to 0.29 — one point under the 30% band.", "maximum": 0.95, "minimum": 0.01, "type": "number" }, "today": { "description": "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.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "cards", "goal" ], "type": "object" }, "name": "get_credit_plan", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "assumptions": { "items": { "type": "string" }, "type": "array" }, "disclosure": { "type": "string" }, "generatedForDate": { "type": "string" }, "goal": { "type": "string" }, "steps": { "items": { "additionalProperties": false, "properties": { "accountName": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "action": { "type": "string" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "dueByDate": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "forecast": { "description": "No validated score prediction is available.", "type": "null" }, "kind": { "enum": [ "payment", "habit", "monitor" ], "type": "string" }, "status": { "enum": [ "done", "current", "upcoming", "ongoing" ], "type": "string" }, "title": { "type": "string" }, "why": { "type": "string" } }, "required": [ "title", "action", "why", "dueByDate", "amount", "kind", "status", "accountName", "forecast" ], "type": "object" }, "type": "array" } }, "required": [ "goal", "generatedForDate", "steps", "assumptions", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "homeCountry": { "description": "Country the person is arriving from, in English. Determines whether the credit-import route is open.", "maxLength": 80, "type": "string" }, "monthsInCanada": { "description": "Roughly how long they have been in Canada, to focus the answer on the relevant phase.", "maximum": 120, "minimum": 0, "type": "integer" } }, "type": "object" }, "name": "get_newcomer_credit_path", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asOf": { "type": "string" }, "bankPrograms": { "items": { "additionalProperties": false, "properties": { "bank": { "type": "string" }, "notes": { "type": "string" }, "novaCredit": { "type": "boolean" }, "program": { "type": "string" } }, "required": [ "bank", "program", "novaCredit", "notes" ], "type": "object" }, "type": "array" }, "creditImport": { "additionalProperties": false, "properties": { "banksWithIntegration": { "items": { "type": "string" }, "type": "array" }, "covered": { "anyOf": [ { "type": "boolean" }, { "type": "null" } ] }, "explanation": { "type": "string" }, "homeCountry": { "anyOf": [ { "type": "string" }, { "type": "null" } ] }, "knownGaps": { "items": { "type": "string" }, "type": "array" } }, "required": [ "homeCountry", "covered", "explanation", "banksWithIntegration", "knownGaps" ], "type": "object" }, "disclosure": { "type": "string" }, "steps": { "items": { "additionalProperties": false, "properties": { "action": { "type": "string" }, "focus": { "type": "boolean" }, "mechanism": { "type": "string" }, "notes": { "items": { "type": "string" }, "type": "array" }, "phase": { "type": "string" }, "window": { "type": "string" } }, "required": [ "phase", "window", "action", "mechanism", "notes", "focus" ], "type": "object" }, "type": "array" } }, "required": [ "asOf", "creditImport", "steps", "bankPrograms", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cards": { "description": "The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything.", "items": { "properties": { "aprPercent": { "description": "Purchase APR as a percentage, e.g. 19.99. Omit when unknown. Never pass 0 to mean unknown — 0 is a real interest-free rate and cost estimates would understate what a balance costs.", "maximum": 100, "minimum": 0, "type": "number" }, "creditLimit": { "description": "Credit limit in CAD. Use 0 for a charge card or any account with no set limit — it is then excluded from utilization.", "maximum": 100000000, "minimum": 0, "type": "number" }, "currentBalance": { "description": "Today's balance, if it differs from the statement balance. Defaults to statementBalance.", "maximum": 100000000, "minimum": 0, "type": "number" }, "dueDate": { "description": "Payment due date for the current statement. Defaults to 21 days after the closing date.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "isOverdue": { "description": "True if a payment is past due right now.", "type": "boolean" }, "last4": { "description": "Last four digits, only to tell two similar cards apart. Optional and never required.", "maxLength": 4, "type": "string" }, "minimumPayment": { "description": "The issuer's minimum payment. Omit if unknown — do not pass 0 to mean unknown.", "maximum": 100000000, "minimum": 0, "type": "number" }, "name": { "description": "What the person calls this card, e.g. \"TD Cash Back Visa\" or \"the blue one\".", "maxLength": 80, "minLength": 1, "type": "string" }, "statementBalance": { "description": "Balance at the most recent statement close. This is the figure the issuer reported, and the one utilization is read from. If only today's balance is known, pass it here and say so.", "maximum": 100000000, "minimum": 0, "type": "number" }, "statementCloseDate": { "description": "The day the NEXT statement closes — the date the engine targets. Found on a statement or in online banking. If omitted, a placeholder 30 days out is assumed and flagged.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "name", "creditLimit", "statementBalance" ], "type": "object" }, "maxItems": 25, "minItems": 1, "type": "array" }, "targetUtilization": { "description": "Target utilization as a decimal. Defaults to 0.29 — one point under the 30% band.", "maximum": 0.95, "minimum": 0.01, "type": "number" }, "today": { "description": "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.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "cards" ], "type": "object" }, "name": "get_next_move", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "assumptions": { "items": { "type": "string" }, "type": "array" }, "currentUtilization": { "type": "number" }, "disclosure": { "type": "string" }, "forecast": { "description": "No validated score prediction is available.", "type": "null" }, "move": { "additionalProperties": false, "properties": { "accountName": { "type": "string" }, "amount": { "type": "number" }, "dueByDate": { "type": "string" }, "projectedUtilization": { "type": "number" }, "rationale": { "type": "string" }, "reason": { "enum": [ "cross_score_band", "avoid_delinquency", "clear_overdue", "hold" ], "type": "string" } }, "required": [ "accountName", "amount", "dueByDate", "reason", "projectedUtilization", "rationale" ], "type": "object" } }, "required": [ "move", "currentUtilization", "forecast", "assumptions", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cards": { "description": "The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything.", "items": { "properties": { "aprPercent": { "description": "Purchase APR as a percentage, e.g. 19.99. Omit when unknown. Never pass 0 to mean unknown — 0 is a real interest-free rate and cost estimates would understate what a balance costs.", "maximum": 100, "minimum": 0, "type": "number" }, "creditLimit": { "description": "Credit limit in CAD. Use 0 for a charge card or any account with no set limit — it is then excluded from utilization.", "maximum": 100000000, "minimum": 0, "type": "number" }, "currentBalance": { "description": "Today's balance, if it differs from the statement balance. Defaults to statementBalance.", "maximum": 100000000, "minimum": 0, "type": "number" }, "dueDate": { "description": "Payment due date for the current statement. Defaults to 21 days after the closing date.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "isOverdue": { "description": "True if a payment is past due right now.", "type": "boolean" }, "last4": { "description": "Last four digits, only to tell two similar cards apart. Optional and never required.", "maxLength": 4, "type": "string" }, "minimumPayment": { "description": "The issuer's minimum payment. Omit if unknown — do not pass 0 to mean unknown.", "maximum": 100000000, "minimum": 0, "type": "number" }, "name": { "description": "What the person calls this card, e.g. \"TD Cash Back Visa\" or \"the blue one\".", "maxLength": 80, "minLength": 1, "type": "string" }, "statementBalance": { "description": "Balance at the most recent statement close. This is the figure the issuer reported, and the one utilization is read from. If only today's balance is known, pass it here and say so.", "maximum": 100000000, "minimum": 0, "type": "number" }, "statementCloseDate": { "description": "The day the NEXT statement closes — the date the engine targets. Found on a statement or in online banking. If omitted, a placeholder 30 days out is assumed and flagged.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "name", "creditLimit", "statementBalance" ], "type": "object" }, "maxItems": 25, "minItems": 1, "type": "array" }, "targetUtilization": { "description": "Target utilization as a decimal. Defaults to 0.29 — one point under the 30% band.", "maximum": 0.95, "minimum": 0.01, "type": "number" }, "today": { "description": "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.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "cards" ], "type": "object" }, "name": "get_reported_snapshot", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "assumptions": { "items": { "type": "string" }, "type": "array" }, "band": { "enum": [ "good", "elevated", "high" ], "type": "string" }, "blendedUtilization": { "type": "number" }, "cards": { "items": { "additionalProperties": false, "properties": { "band": { "enum": [ "good", "elevated", "high" ], "type": "string" }, "creditLimit": { "type": "number" }, "daysUntilClose": { "type": "number" }, "daysUntilDue": { "type": "number" }, "dueDate": { "type": "string" }, "isOverdue": { "type": "boolean" }, "minimumPayment": { "type": "number" }, "name": { "type": "string" }, "payToTarget": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "reportedBalance": { "type": "number" }, "statementCloseDate": { "type": "string" }, "utilization": { "type": "number" } }, "required": [ "name", "reportedBalance", "creditLimit", "utilization", "band", "statementCloseDate", "daysUntilClose", "payToTarget", "minimumPayment", "dueDate", "daysUntilDue", "isOverdue" ], "type": "object" }, "type": "array" }, "disclosure": { "type": "string" }, "isEmpty": { "type": "boolean" }, "totalLimit": { "type": "number" }, "totalReported": { "type": "number" } }, "required": [ "cards", "totalReported", "totalLimit", "blendedUtilization", "band", "isEmpty", "assumptions", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "cards": { "description": "The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything.", "items": { "properties": { "aprPercent": { "description": "Purchase APR as a percentage, e.g. 19.99. Omit when unknown. Never pass 0 to mean unknown — 0 is a real interest-free rate and cost estimates would understate what a balance costs.", "maximum": 100, "minimum": 0, "type": "number" }, "creditLimit": { "description": "Credit limit in CAD. Use 0 for a charge card or any account with no set limit — it is then excluded from utilization.", "maximum": 100000000, "minimum": 0, "type": "number" }, "currentBalance": { "description": "Today's balance, if it differs from the statement balance. Defaults to statementBalance.", "maximum": 100000000, "minimum": 0, "type": "number" }, "dueDate": { "description": "Payment due date for the current statement. Defaults to 21 days after the closing date.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "isOverdue": { "description": "True if a payment is past due right now.", "type": "boolean" }, "last4": { "description": "Last four digits, only to tell two similar cards apart. Optional and never required.", "maxLength": 4, "type": "string" }, "minimumPayment": { "description": "The issuer's minimum payment. Omit if unknown — do not pass 0 to mean unknown.", "maximum": 100000000, "minimum": 0, "type": "number" }, "name": { "description": "What the person calls this card, e.g. \"TD Cash Back Visa\" or \"the blue one\".", "maxLength": 80, "minLength": 1, "type": "string" }, "statementBalance": { "description": "Balance at the most recent statement close. This is the figure the issuer reported, and the one utilization is read from. If only today's balance is known, pass it here and say so.", "maximum": 100000000, "minimum": 0, "type": "number" }, "statementCloseDate": { "description": "The day the NEXT statement closes — the date the engine targets. Found on a statement or in online banking. If omitted, a placeholder 30 days out is assumed and flagged.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "name", "creditLimit", "statementBalance" ], "type": "object" }, "maxItems": 25, "minItems": 1, "type": "array" }, "count": { "description": "How many events to return. Default 8.", "maximum": 30, "minimum": 1, "type": "integer" }, "today": { "description": "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.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "cards" ], "type": "object" }, "name": "get_statement_calendar", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "assumptions": { "items": { "type": "string" }, "type": "array" }, "disclosure": { "type": "string" }, "events": { "items": { "additionalProperties": false, "properties": { "accountName": { "type": "string" }, "amount": { "anyOf": [ { "type": "number" }, { "type": "null" } ] }, "date": { "type": "string" }, "daysAway": { "type": "number" }, "kind": { "enum": [ "pay_by", "statement_close", "payment_due" ], "type": "string" }, "label": { "type": "string" } }, "required": [ "date", "kind", "accountName", "label", "amount", "daysAway" ], "type": "object" }, "type": "array" } }, "required": [ "events", "assumptions", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "tier": { "description": "Filter to one credibility tier. Omit for all.", "enum": [ "established", "legitimate_but_costly", "treat_with_caution" ], "type": "string" } }, "type": "object" }, "name": "list_credit_building_products", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "asOf": { "type": "string" }, "caveat": { "type": "string" }, "disclosure": { "type": "string" }, "products": { "items": { "additionalProperties": false, "properties": { "kind": { "type": "string" }, "name": { "type": "string" }, "notes": { "type": "string" }, "reportsTo": { "type": "string" }, "tier": { "type": "string" }, "url": { "anyOf": [ { "type": "string" }, { "type": "null" } ] } }, "required": [ "name", "kind", "reportsTo", "tier", "notes", "url" ], "type": "object" }, "type": "array" }, "sources": { "items": { "type": "string" }, "type": "array" } }, "required": [ "asOf", "products", "caveat", "sources", "disclosure" ], "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "properties": { "amount": { "description": "Payment amount in CAD, posting before that card's statement closes.", "exclusiveMinimum": 0, "maximum": 100000000, "type": "number" }, "cardName": { "description": "Which card the payment goes on. Partial names are matched.", "maxLength": 80, "type": "string" }, "cards": { "description": "The person's revolving credit accounts. Ask for limit, statement balance, and statement closing date per card — those three drive everything.", "items": { "properties": { "aprPercent": { "description": "Purchase APR as a percentage, e.g. 19.99. Omit when unknown. Never pass 0 to mean unknown — 0 is a real interest-free rate and cost estimates would understate what a balance costs.", "maximum": 100, "minimum": 0, "type": "number" }, "creditLimit": { "description": "Credit limit in CAD. Use 0 for a charge card or any account with no set limit — it is then excluded from utilization.", "maximum": 100000000, "minimum": 0, "type": "number" }, "currentBalance": { "description": "Today's balance, if it differs from the statement balance. Defaults to statementBalance.", "maximum": 100000000, "minimum": 0, "type": "number" }, "dueDate": { "description": "Payment due date for the current statement. Defaults to 21 days after the closing date.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" }, "isOverdue": { "description": "True if a payment is past due right now.", "type": "boolean" }, "last4": { "description": "Last four digits, only to tell two similar cards apart. Optional and never required.", "maxLength": 4, "type": "string" }, "minimumPayment": { "description": "The issuer's minimum payment. Omit if unknown — do not pass 0 to mean unknown.", "maximum": 100000000, "minimum": 0, "type": "number" }, "name": { "description": "What the person calls this card, e.g. \"TD Cash Back Visa\" or \"the blue one\".", "maxLength": 80, "minLength": 1, "type": "string" }, "statementBalance": { "description": "Balance at the most recent statement close. This is the figure the issuer reported, and the one utilization is read from. If only today's balance is known, pass it here and say so.", "maximum": 100000000, "minimum": 0, "type": "number" }, "statementCloseDate": { "description": "The day the NEXT statement closes — the date the engine targets. Found on a statement or in online banking. If omitted, a placeholder 30 days out is assumed and flagged.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "name", "creditLimit", "statementBalance" ], "type": "object" }, "maxItems": 25, "minItems": 1, "type": "array" }, "today": { "description": "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.", "pattern": "^\\d{4}-\\d{2}-\\d{2}$", "type": "string" } }, "required": [ "cards", "cardName", "amount" ], "type": "object" }, "name": "simulate_paydown", "outputSchema": { "$schema": "http://json-schema.org/draft-07/schema#", "additionalProperties": false, "properties": { "amount": { "type": "number" }, "assumptions": { "items": { "type": "string" }, "type": "array" }, "blendedAfter": { "type": "number" }, "blendedBefore": { "type": "number" }, "cardBandAfter": { "enum": [ "good", "elevated", "high" ], "type": "string" }, "cardBandBefore": { "enum": [ "good", "elevated", "high" ], "type": "string" }, "cardName": { "type": "string" }, "cardUtilizationAfter": { "type": "number" }, "cardUtilizationBefore": { "type": "number" }, "disclosure": { "type": "string" }, "forecast": { "description": "No validated score prediction is available.", "type": "null" }, "payBeforeDate": { "type": "string" } }, "required": [ "cardName", "amount", "cardUtilizationBefore", "cardUtilizationAfter", "cardBandBefore", "cardBandAfter", "blendedBefore", "blendedAfter", "payBeforeDate", "forecast", "assumptions", "disclosure" ], "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:ec27c0bf009dff41423cdfb88b2aa6efeece92c449d51923b2d1685cfdd83ab3 | sha256sum