{"apiVersion":"v1","directorySlug":"nomoreentry-mcp-cadb3dfc16","title":"NoMoreEntry | AI Financial Document Entry Automation","description":"NoMoreEntry automates invoice recognition, bank statement processing, financial document review, and exports to Xero, QuickBooks Online, CSV, and XLSX.","pageUrl":"https://www.mcpbundles.com/skills/nomoreentry-mcp-cadb3dfc16","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://api.nomoreentry.com/mcp","hostedMcpUrl":null,"toolCount":52,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.nomoreentry/nomoreentry-mcp-cadb3dfc16","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"xero_connect","description":"Begin the Xero OAuth flow.  Returns the authorize URL the end user (or wrapping agent) should open in a browser; the callback (GET /api/v1/integrations/xero/callback) finishes the exchange.","inputSchema":{"type":"object","properties":{}},"logicalName":"xero_connect","displayName":"xero_connect","title":"xero_connect","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"bill_update","description":"Patch user-editable fields on a Bill. Sync-identity, ownership, lifecycle markers pinned server-side. Optimistic lock: patch must include the current version; conflict returned if it has moved.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1},"patch":{"type":"object"}}},"logicalName":"bill_update","displayName":"bill_update","title":"bill_update","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"statement_upload","description":"Upload one or more bank statement files (PDF/CSV/XLSX) as a StatementMain and trigger the statement_process pipeline (line-item extraction).","inputSchema":{"type":"object","oneOf":[{"required":["files"]},{"required":["object_keys"]}],"properties":{"extra":{"type":"object"},"files":{"type":"array","items":{"type":"object","required":["file_id","path","name"],"properties":{"md5":{"type":"string"},"name":{"type":"string","minLength":1},"path":{"type":"string","minLength":1},"size":{"type":"integer"},"file_id":{"type":"string","minLength":1},"content_type":{"type":"string"}}},"minItems":1},"object_keys":{"type":"array","items":{"type":"string"},"minItems":1}}},"logicalName":"statement_upload","displayName":"statement_upload","title":"statement_upload","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"statement_item_update","description":"Patch editable fields on a single StatementItem.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1},"patch":{"type":"object"}}},"logicalName":"statement_item_update","displayName":"statement_item_update","title":"statement_item_update","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"statement_item_split","description":"Split one StatementItem into N children whose amounts sum to the original. Each child inherits parent fields + gets its own amount/description.","inputSchema":{"type":"object","required":["id","splits"],"properties":{"id":{"type":"string","minLength":1},"splits":{"type":"array","items":{"type":"object","required":["amount"],"properties":{"amount":{"type":"string"}}},"minItems":2}}},"logicalName":"statement_item_split","displayName":"statement_item_split","title":"statement_item_split","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"category_seed","description":"Seed default categories from a country template if the organization has none yet (idempotent — no-op if categories already exist). Templates loaded from finance_categories_template; unrecognized country falls back to 'Default'.","inputSchema":{"type":"object","required":["country"],"properties":{"country":{"enum":["Default","Malaysia","Singapore","United States"],"type":"string"}}},"logicalName":"category_seed","displayName":"category_seed","title":"category_seed","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"qb_retry","description":"Re-queue a Bill/Income for QuickBooks publish after a previous sync failure. publish_mode / diff_currency mirror xero_retry; QB ignores target_status by design.","inputSchema":{"type":"object","required":["receipt_id"],"properties":{"receipt_id":{"type":"string","minLength":1},"publish_mode":{"enum":["category","item"],"type":"string"},"diff_currency":{"type":"boolean"}}},"logicalName":"qb_retry","displayName":"qb_retry","title":"qb_retry","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"bill_upload","description":"Upload one or more files as a new Bill (payable receipt) and trigger AI parsing. Each file must already exist in Supabase Storage (前端直传或 /storage/proxy-upload 兜底).","inputSchema":{"type":"object","required":["files"],"properties":{"files":{"type":"array","items":{"type":"object","required":["file_id","path","name"],"properties":{"md5":{"type":"string"},"name":{"type":"string","minLength":1},"path":{"type":"string","minLength":1},"size":{"type":"integer"},"file_id":{"type":"string","minLength":1},"content_type":{"type":"string"}}},"minItems":1}}},"logicalName":"bill_upload","displayName":"bill_upload","title":"bill_upload","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"bill_get","description":"Return a single Bill (payable receipt) by id — includes line items, attachments, AI provenance. AI-extracted fields populated only at status == 99; check status before relying on parsed values.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"bill_get","displayName":"bill_get","title":"bill_get","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"bill_delete","description":"Soft-delete a Bill. Submits receipt_delete pipeline which also reverses any active Xero/QB sync.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"bill_delete","displayName":"bill_delete","title":"bill_delete","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"income_confirm","description":"Mark an Income as confirmed.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"income_confirm","displayName":"income_confirm","title":"income_confirm","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"income_update","description":"Patch user-editable fields on an Income. Sync-identity, ownership, lifecycle markers pinned server-side. Optimistic lock: patch must include the current version; conflict returned if it has moved.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1},"patch":{"type":"object"}}},"logicalName":"income_update","displayName":"income_update","title":"income_update","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"merchant_update","description":"Patch a Merchant. The caller sends the full updated record (Service layer uses Save semantics).","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1},"patch":{"type":"object"}}},"logicalName":"merchant_update","displayName":"merchant_update","title":"merchant_update","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"category_delete","description":"Soft-delete a category by id (moved to archived_content). System default categories are protected.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"category_delete","displayName":"category_delete","title":"category_delete","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"org_member_remove","description":"Remove a member from the organization (owner-only). Rejected if the target is the last remaining owner.","inputSchema":{"type":"object","required":["user_id"],"properties":{"user_id":{"type":"string","minLength":1}}},"logicalName":"org_member_remove","displayName":"org_member_remove","title":"org_member_remove","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"bill_list","description":"List Bills (payable receipts). Filters: search / status / vendor / date range / pagination. AI-extracted fields (title, vendor_id, total, currency, date, products, tax) are populated only when status == 99 (success); other statuses return null/empty for those fields by design — inspect status_detail for the failure reason. Use meta_describe(\"bill\") for the canonical status legend.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","minimum":0},"search":{"type":"string"},"status":{"enum":[0,2,99,100,101],"type":"integer"},"date_to":{"type":"string","format":"date"},"date_from":{"type":"string","format":"date"},"page_size":{"type":"integer","maximum":500,"minimum":1},"vendor_id":{"type":"string","minLength":1}}},"logicalName":"bill_list","displayName":"bill_list","title":"bill_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"bill_confirm","description":"Mark a Bill as confirmed. Triggers coordinate_extract (PDF field boxes) and, when a Xero/QB integration is active, queues a push-sync task.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"bill_confirm","displayName":"bill_confirm","title":"bill_confirm","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"statement_confirm","description":"Confirm every Statement under a StatementMain (status → 99), queueing sync_xero_statement per row. Pages through large mains (>1000 statements).","inputSchema":{"type":"object","required":["main_id"],"properties":{"main_id":{"type":"string","minLength":1}}},"logicalName":"statement_confirm","displayName":"statement_confirm","title":"statement_confirm","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"merchant_list","description":"List Merchants with optional search / type / pagination filters.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","minimum":0},"type":{"enum":["vendor","customer","both"],"type":"string"},"search":{"type":"string"},"page_size":{"type":"integer","maximum":500,"minimum":1}}},"logicalName":"merchant_list","displayName":"merchant_list","title":"merchant_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"item_merge","description":"Collapse two canonical Items — all Products with merge_id=from_id are re-pointed to into_id, then from_id soft-deleted.","inputSchema":{"type":"object","required":["from_id","into_id"],"properties":{"from_id":{"type":"string","minLength":1},"into_id":{"type":"string","minLength":1}}},"logicalName":"item_merge","displayName":"item_merge","title":"item_merge","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"taxcode_update","description":"Patch a TaxCode. Caller must provide id; patch merges over the existing record.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1},"patch":{"type":"object"}}},"logicalName":"taxcode_update","displayName":"taxcode_update","title":"taxcode_update","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"custom_field_update","description":"Patch an existing custom field definition.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1},"patch":{"type":"object"}}},"logicalName":"custom_field_update","displayName":"custom_field_update","title":"custom_field_update","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"custom_field_delete","description":"Soft-delete a custom field definition.  Rows that previously stored values keep their JSONB payload; the UI stops rendering values for the removed field.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"custom_field_delete","displayName":"custom_field_delete","title":"custom_field_delete","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"merchant_merge","description":"Collapse two Merchants: all receipts referencing from_id are re-pointed to into_id, then from_id is soft-deleted.","inputSchema":{"type":"object","required":["from_id","into_id"],"properties":{"from_id":{"type":"string","minLength":1},"into_id":{"type":"string","minLength":1}}},"logicalName":"merchant_merge","displayName":"merchant_merge","title":"merchant_merge","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"category_list","description":"List the organization's categories. Side effect: first call on an empty org auto-seeds the SG default template (idempotent — later calls return existing rows untouched). Use category_seed for explicit non-SG seeding.","inputSchema":{"type":"object","properties":{}},"logicalName":"category_list","displayName":"category_list","title":"category_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"taxcode_create","description":"Create a new TaxCode for the organization. code + rate are required; platform_list marks whether it applies to bill/income flows.","inputSchema":{"type":"object","required":["code"],"properties":{"code":{"type":"string","minLength":1},"rate":{"type":"number"},"active":{"type":"boolean"},"tax_type_id":{"type":"string","minLength":1},"platform_list":{"type":"array","items":{"enum":["bill","income","claim","reconcile","payment"],"type":"string"}}}},"logicalName":"taxcode_create","displayName":"taxcode_create","title":"taxcode_create","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"taxcode_list","description":"List all TaxCodes for the organization.","inputSchema":{"type":"object","properties":{}},"logicalName":"taxcode_list","displayName":"taxcode_list","title":"taxcode_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"qb_connect","description":"Begin the QuickBooks OAuth flow.  Intuit delivers realm_id on the callback URL; the callback finishes the exchange.","inputSchema":{"type":"object","properties":{}},"logicalName":"qb_connect","displayName":"qb_connect","title":"qb_connect","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"meta_describe","description":"Return canonical enum dictionaries for a domain module — status codes, type values, channel ids, trigger reasons, country templates. Sourced from domain const at server start; cannot drift from the truth. Use this to decode integer/code fields seen in *_list / *_get responses (e.g. status=100 → 'error'). Pass module='all' to fetch every catalog entry in one call.","inputSchema":{"type":"object","required":["module"],"properties":{"module":{"enum":["bill","income","statement","merchant","category","item","taxcode","custom_field","all"],"type":"string"}}},"logicalName":"meta_describe","displayName":"meta_describe","title":"meta_describe","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"storage_signed_upload_url","description":"Issue a Supabase pre-signed PUT URL for uploading a single file. After PUT-ing the file to the returned signed_url, call bill_upload / income_upload / statement_upload with files=[{file_id, path, name, ...}] to register the file as a receipt. path is server-constructed as <org_id>/<file_id>/<file_id>.<ext> to keep tenants isolated; callers cannot pick arbitrary paths.","inputSchema":{"type":"object","required":["file_id","filename"],"properties":{"file_id":{"type":"string","minLength":1},"filename":{"type":"string","minLength":1}}},"logicalName":"storage_signed_upload_url","displayName":"storage_signed_upload_url","title":"storage_signed_upload_url","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"income_upload","description":"Upload one or more files as a new Income (receivable receipt) and trigger AI parsing.","inputSchema":{"type":"object","required":["files"],"properties":{"files":{"type":"array","items":{"type":"object","required":["file_id","path","name"],"properties":{"md5":{"type":"string"},"name":{"type":"string","minLength":1},"path":{"type":"string","minLength":1},"size":{"type":"integer"},"file_id":{"type":"string","minLength":1},"content_type":{"type":"string"}}},"minItems":1}}},"logicalName":"income_upload","displayName":"income_upload","title":"income_upload","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"income_get","description":"Return a single Income (receivable receipt) by id. AI-extracted fields populated only at status == 99; check status before relying on parsed values.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"income_get","displayName":"income_get","title":"income_get","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"merchant_get","description":"Return a single Merchant by id.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"merchant_get","displayName":"merchant_get","title":"merchant_get","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"category_upsert","description":"Create or update a single category. Provide id to patch; omit id to create. type drives accounting classification; platform_list controls which UI surfaces show this category.","inputSchema":{"type":"object","required":["name"],"properties":{"id":{"type":"string","minLength":1},"code":{"type":"string"},"desc":{"type":"string"},"name":{"type":"string","minLength":1},"type":{"enum":["expense","other expense","income","other income","bank","accounts payable","accounts receivable","equity","fixed asset","non-current asset","other current asset","cost of goods sold","credit card","other current liability","long-term liability"],"type":"string"},"ai_match":{"type":"boolean"},"platform_list":{"type":"array","items":{"enum":["bill","income","claim","reconcile","payment"],"type":"string"}}}},"logicalName":"category_upsert","displayName":"category_upsert","title":"category_upsert","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"item_create","description":"Create a new canonical Item (product) record.  Raw per-vendor SKUs attach to it via finance_products.merge_id.","inputSchema":{"type":"object","required":["name"],"properties":{"name":{"type":"string","minLength":1},"note":{"type":"string"},"type":{"enum":["bill","income"],"type":"string"},"category":{"type":"string"},"currency":{"type":"string","maxLength":8,"minLength":3}}},"logicalName":"item_create","displayName":"item_create","title":"item_create","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"item_update","description":"Patch a canonical Item.  Service uses SaveMerge semantics: fields present in patch overwrite; the row is fetched first so pinned identity survives.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1},"patch":{"type":"object"}}},"logicalName":"item_update","displayName":"item_update","title":"item_update","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"taxcode_get","description":"Return a single TaxCode by id.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"taxcode_get","displayName":"taxcode_get","title":"taxcode_get","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"taxcode_match","description":"Fuzzy-match up to 20 TaxCodes by code/name (ILIKE).  Used by the parse pipeline to resolve AI-extracted tax hints.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":1}}},"logicalName":"taxcode_match","displayName":"taxcode_match","title":"taxcode_match","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"income_list","description":"List Incomes (receivable receipts). Filters: search / status / customer / date range / pagination. AI-extracted fields (title, customer_id, total, currency, date, products, tax) are populated only when status == 99 (success); other statuses return null/empty for those fields by design — inspect status_detail for the failure reason. Use meta_describe(\"income\") for the canonical status legend.","inputSchema":{"type":"object","properties":{"page":{"type":"integer","minimum":0},"search":{"type":"string"},"status":{"enum":[0,2,99,100,101],"type":"integer"},"date_to":{"type":"string","format":"date"},"date_from":{"type":"string","format":"date"},"page_size":{"type":"integer","maximum":500,"minimum":1},"customer_id":{"type":"string","minLength":1}}},"logicalName":"income_list","displayName":"income_list","title":"income_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"statement_list","description":"List Statement headers. Filters: main_id / status / date range / search / pagination. Parsed fields populated only at status == 99 (success); other statuses indicate the bank-statement pipeline failed at parsing/reconciliation. Status scale differs from receipt.status — see meta_describe(\"statement\").","inputSchema":{"type":"object","properties":{"page":{"type":"integer","minimum":0},"search":{"type":"string"},"status":{"enum":[0,2,3,99,100,101,102],"type":"integer"},"date_to":{"type":"string","format":"date"},"main_id":{"type":"string","minLength":1},"date_from":{"type":"string","format":"date"},"page_size":{"type":"integer","maximum":500,"minimum":1}}},"logicalName":"statement_list","displayName":"statement_list","title":"statement_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"category_search","description":"Return categories whose name contains the query (case-insensitive). Used by parse pipelines + UI pickers.","inputSchema":{"type":"object","required":["query"],"properties":{"query":{"type":"string","minLength":1}}},"logicalName":"category_search","displayName":"category_search","title":"category_search","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"item_get","description":"Return a single Item (canonical product) by id.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"item_get","displayName":"item_get","title":"item_get","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"custom_field_create","description":"Define a new custom field for a given module (bill / income / statement / tracking_category).","inputSchema":{"type":"object","required":["module","name","type"],"properties":{"name":{"type":"string","minLength":1},"type":{"enum":["text","number","date","select"],"type":"string"},"ai_gen":{"type":"boolean"},"module":{"enum":["bill","income","statement","tracking_category"],"type":"string"},"option":{"type":"object"},"required":{"type":"boolean"},"display_condition":{"type":"object"}}},"logicalName":"custom_field_create","displayName":"custom_field_create","title":"custom_field_create","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"xero_disconnect","description":"Revoke the Xero session and strip tokens from organizations.configs.","inputSchema":{"type":"object","properties":{}},"logicalName":"xero_disconnect","displayName":"xero_disconnect","title":"xero_disconnect","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"xero_retry","description":"Re-queue a Bill/Income for Xero publish after a previous sync failure. All publish-tuning fields default to the values used by the standard frontend flow (category / DRAFT / no currency override).","inputSchema":{"type":"object","required":["receipt_id"],"properties":{"receipt_id":{"type":"string","minLength":1},"publish_mode":{"enum":["category","item"],"type":"string"},"diff_currency":{"type":"boolean"},"target_status":{"enum":["DRAFT","SUBMITTED","AUTHORISED"],"type":"string"}}},"logicalName":"xero_retry","displayName":"xero_retry","title":"xero_retry","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"qb_disconnect","description":"Revoke the QuickBooks session and strip tokens from organizations.configs.","inputSchema":{"type":"object","properties":{}},"logicalName":"qb_disconnect","displayName":"qb_disconnect","title":"qb_disconnect","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"statement_get","description":"Return a single Statement header (not line items). Use with statement_list + statement_item_* tools for drill-down. Parsed fields populated only at status == 99; statuses 100/101/102 indicate processing failures — see status_detail.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"statement_get","displayName":"statement_get","title":"statement_get","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"statement_item_merge","description":"Merge N StatementItems into the first. All items must belong to the same parent Statement; amounts are summed, descriptions concatenated, the rest soft-deleted.","inputSchema":{"type":"object","required":["ids"],"properties":{"ids":{"type":"array","items":{"type":"string","minLength":1},"minItems":2}}},"logicalName":"statement_item_merge","displayName":"statement_item_merge","title":"statement_item_merge","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"merchant_create","description":"Create a new Merchant (vendor or customer). organization_id is pinned from the actor context.","inputSchema":{"type":"object","required":["name","type"],"properties":{"name":{"type":"string","minLength":1},"type":{"enum":["vendor","customer"],"type":"string"},"email":{"type":"string"},"phone":{"type":"string"},"address":{"type":"string"},"country":{"type":"string"},"tax_registered":{"type":"boolean"},"registration_number":{"type":"string"}}},"logicalName":"merchant_create","displayName":"merchant_create","title":"merchant_create","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"merchant_delete","description":"Soft-delete a Merchant.  Referenced receipts keep their vendor_id; the picker simply hides the entry.","inputSchema":{"type":"object","required":["id"],"properties":{"id":{"type":"string","minLength":1}}},"logicalName":"merchant_delete","displayName":"merchant_delete","title":"merchant_delete","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"item_list","description":"List every canonical Item for the organization (no pagination — Merge rows are bounded at ~500/org).","inputSchema":{"type":"object","properties":{}},"logicalName":"item_list","displayName":"item_list","title":"item_list","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"org_member_invite","description":"Add a new member to the organization (owner-only). user_id must resolve to an existing auth user.","inputSchema":{"type":"object","required":["user_id"],"properties":{"role":{"enum":["owner","member"],"type":"string","default":"member"},"user_id":{"type":"string","minLength":1},"user_email":{"type":"string"},"user_phone":{"type":"string"},"name_in_org":{"type":"string"}}},"logicalName":"org_member_invite","displayName":"org_member_invite","title":"org_member_invite","annotations":{"untrustedContentHint":true,"readOnlyHint":true}}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=NoMoreEntry-AI-Financial-Document-Entry-Automation&config=eyJ1cmwiOiAiaHR0cHM6Ly9hcGkubm9tb3JlZW50cnkuY29tL21jcCJ9"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22NoMoreEntry-AI-Financial-Document-Entry-Automation%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.nomoreentry.com%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22NoMoreEntry-AI-Financial-Document-Entry-Automation%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fapi.nomoreentry.com%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=NoMoreEntry+%7C+AI+Financial+Document+Entry+Automation&connectorUrl=https%3A%2F%2Fapi.nomoreentry.com%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"NoMoreEntry-AI-Financial-Document-Entry-Automation\" --url \"https://api.nomoreentry.com/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/nomoreentry-mcp-cadb3dfc16","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/nomoreentry-mcp-cadb3dfc16/tools/{tool}","mcpServerUrl":"https://api.nomoreentry.com/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/nomoreentry-mcp-cadb3dfc16?live=1"}