fisc
fisc
专业税务软件的开源MCP服务器。
通过Model Context Protocol将AI代理连接到Taxprep、DT Max和其他加拿大税务准备软件包。
这是什么?
加拿大会计师事务所使用Taxprep(Wolters Kluwer)和DT Max(Thomson Reuters)等软件准备税务申报表。这些系统围绕专业税务工作流构建,而不是为AI代理提供统一接口。fisc是一个开放互操作层,旨在为代理提供一种一致的方式,以便跨税务软件读取、填充和管理申报表。
Your AI agent
↓ MCP
fisc
↓ adapters
Taxprep · DT Max · ...Related MCP server: brasilnfe-mcp
为什么开源?
我们不认为连接器应该是锁定因素。
会计师事务所应该能够通过一个可检查、可移植且开放贡献的接口,将AI连接到他们已信任的税务软件。一个共享的互操作层也使开发者和软件供应商更容易添加适配器,而无需在私有环境中重建相同的管道。
Coalesc正在这一层之上构建其产品:参与工作流、文档智能、证据、编排、审查控制以及决定下一步应该做什么的推理。开放轨道;在智能和工作流上竞争。
状态
**早期开发。fisc尚未具备功能。**我们正在通过CCH iFirm Taxprep Web API首先构建Taxprep适配器,然后研究DT Max的最佳支持路径。
计划中的工具
工具 | 描述 |
| 为纳税人创建新的税务申报表 |
| 在申报表中设置值(例如就业收入、医疗费用) |
| 从申报表中读取值 |
| 列出申报表中可用的表格 |
| 获取验证诊断信息 |
| 列出现有申报表 |
计划中的适配器
Taxprep(CCH iFirm Taxprep Web API)— 进行中
DT Max(Thomson Reuters)— 集成路径正在研究中
更多待定
架构
fisc使用供应商中立的税务概念层。它不要求代理理解特定于软件的单元格ID,而是可以使用语义概念:
// What your agent says:
await client.callTool("set_field", {
return_id: "2026-john-smith",
concept: "employment_income",
value: 82400,
source: "t4_acme.pdf"
});
// An adapter translates that concept to the tax software's native representation.概念到供应商的映射按纳税年度、软件和申报表类型维护。
开始使用
注意: fisc尚未具备功能。请给仓库标星以关注进展。
# Clone
git clone https://github.com/coalesc/fisc.git
cd fisc
# Install
npm install
# Configure (when adapters are ready)
cp .env.example .env
# Add your CCH iFirm API credentials
# Run
npm start项目结构
src/
index.ts # MCP server entry point
concepts/ # Vendor-neutral tax concept definitions
adapters/
taxprep/ # CCH iFirm Taxprep adapter
dtmax/ # DT Max adapter (planned)
tools/ # MCP tool implementations贡献
我们欢迎贡献——特别是:
新的适配器 用于专业税务软件
概念映射 用于其他申报表类型(T2、T3、T5013)
纳税年度更新 映射
更安全的工具和审查模式 用于AI辅助税务工作流
请参阅CONTRIBUTING.md获取指南。
谁构建了这个?
fisc由Coalesc构建,该公司正在构建一个端到端的工作空间,会计师和AI可以在此共同准备、审查和推进客户参与。我们计划将fisc作为该工作空间与税务事务所已经使用的软件之间的互操作层。
许可证
Available Tools
8 toolscreate_returnB
Create or validate creation of a tax return. Mutations default to validate-only.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | validate (default) or commit | |
| tax_year | Yes | ||
| return_type | Yes | ||
| taxpayer_ref | Yes | Opaque taxpayer reference. Do not pass a SIN directly through the MCP tool. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It usefully reveals that mutations default to validate-only, meaning the tool does not commit changes unless explicitly set to commit mode. The SIN warning in the schema also adds important safety context, though the description itself does not discuss side effects or commit-mode consequences.
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 only two sentences and front-loads the core purpose. The phrase 'Create or validate creation' is slightly awkward and redundant, but the overall text is efficient and every sentence contributes meaningful 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?
The description covers the tool's main intent and its default validate-only behavior, which is essential for safe invocation. However, with no output schema and no annotations, it does not explain what validation returns, what commit does exactly, or what errors might occur, leaving moderate gaps for an agent.
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 description adds no parameter-level meaning. Schema description coverage is only 50%, with tax_year and return_type left undocumented; the description does not compensate for those gaps. It relies entirely on the schema's mode and taxpayer_ref descriptions, which are insufficient for full agent comprehension.
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 action ('Create or validate creation') and a resource ('tax return'), and the 'validate-only' default clarifies the tool's dual behavior. It is distinguishable from sibling list/read tools like list_returns or set_field, though it doesn't explicitly name a sibling.
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 implies this tool is used to create or validate a tax return, but it does not explicitly say when to use it versus alternatives or what conditions favor validate vs. commit mode. The 'Mutations default to validate-only' sentence gives contextual guidance, but no exclusions or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_capabilitiesA
Describe the configured adapter and supported operations
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden of behavioral disclosure. The verb 'Describe' implies a read-only introspection operation, and mentioning 'supported operations' indicates the kind of information returned. Still, it does not state side-effect freedom, output format, or adapter-specific context.
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?
A single, tightly worded sentence conveys the tool's purpose with no filler. Every word earns its place and the core concept is front-loaded.
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 zero-parameter introspection tool, the description covers what the tool returns and its scope. It omits any detail about response structure, but the simple nature of the tool makes this a minor gap rather than a blocking one.
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 and an empty schema, so no parameter documentation is needed. Baseline 4 applies because no parameter semantics are required for correct invocation.
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 ('Describe') and a clear resource ('the configured adapter and supported operations'). It clearly distinguishes this introspection tool from siblings like list_forms or get_field, which act on domain data rather than tool capabilities.
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 implies usage: call this tool when you need to know what the current adapter supports. However, it does not explicitly contrast with alternatives or state when not to use it, leaving some room for inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_diagnosticsC
Retrieve validation diagnostics for a return
| Name | Required | Description | Default |
|---|---|---|---|
| return_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It implies a read-only retrieval but does not explicitly state side effects, data format, or any error conditions. The minimal wording offers no deeper behavioral insight.
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 a single concise sentence with no filler. It front-loads the action and resource. However, it is too sparse to count as well-structured; it is more under-specified than effectively structured.
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 simple tool with one parameter and no output schema, the description is incomplete. It lacks details on what the diagnostics contain, how they are returned, or any context about the return_id. An agent would need to infer too much.
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 0%, so the description must compensate. It only says 'for a return,' which loosely implies return_id is a return identifier, but it does not explain the parameter's format, purpose, or constraints. This is insufficient given the zero coverage.
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 clear verb ('Retrieve') and specific resource ('validation diagnostics for a return'), distinguishing it from siblings like get_field or get_capabilities. An agent can understand the core action without ambiguity.
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?
No guidance is provided on when to use this tool versus alternatives. It does not mention any prerequisites, typical scenarios, or conditions that would favor this tool over siblings like get_field or list_returns.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fieldC
Read a tax field using a vendor-neutral concept
| Name | Required | Description | Default |
|---|---|---|---|
| concept | Yes | ||
| tax_year | Yes | ||
| return_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that the operation is a read, which is useful, but it does not describe return format, error conditions, pagination, access requirements, or behavior when the requested concept is unsupported.
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 a single front-loaded sentence with no filler. It is appropriately compact, though the phrase 'vendor-neutral concept' is somewhat vague and could be clearer without adding length.
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 read operation with no output schema, no annotations, and three undocumented required parameters, the description is too sparse. It does not explain what a 'concept' is, how to discover valid concepts, or how the return value is shaped. Sibling list_concepts could have been referenced but is not.
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 0%, so the description must compensate. 'Vendor-neutral concept' adds some meaning for the concept parameter, but return_id and tax_year are left entirely to their self-evident names. No parameter-level detail is provided.
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?
Description states a specific action ('Read a tax field') and resource ('tax field'), with the additional qualifier 'vendor-neutral concept' to indicate the lookup mechanism. It is distinguishable from sibling set_field (write operation) and list_concepts (listing concepts), though it does not explicitly name or contrast with them.
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?
No guidance on when to use this tool versus alternatives. The verb 'Read' implies a read operation, but there is no explicit context, exclusions, or mention of suitable alternatives such as set_field for writing or list_concepts for discovering available concepts.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_conceptsB
List verified vendor-neutral tax concepts for a return type
| Name | Required | Description | Default |
|---|---|---|---|
| return_type | Yes | Tax return type |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. 'List' communicates a read-only operation, and 'verified vendor-neutral' adds filtering behavior. However, it doesn't disclose ordering, pagination, permissions, or response format, though the tool is simple enough that this is a modest gap.
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?
A single, front-loaded sentence includes the key qualifiers 'verified' and 'vendor-neutral' without redundancy. Every word earns its place.
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 one-parameter list tool with no output schema, the description plus a fully described enum parameter is sufficient for basic invocation. The main missing piece is usage selection guidance, but that is covered under usage_guidelines.
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 only parameter has an enum and description. The description's 'for a return type' adds little beyond the schema, 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 uses a specific verb and resource ('List ... tax concepts') and adds qualifiers ('verified vendor-neutral') that distinguish it from list_forms and list_returns. It doesn't explicitly name a sibling, but the resource is distinct enough to prevent confusion.
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 gives no guidance on when to choose this tool over list_forms or list_returns, nor any exclusions or prerequisites. An agent must infer the appropriate context from the tool name and sibling names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_formsB
List forms in a tax return
| Name | Required | Description | Default |
|---|---|---|---|
| return_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the read-only nature (listing) but doesn't specify what happens if the return_id is invalid, whether it returns only form identifiers or full details, or any output format. For a read operation, the missing behavior context is a notable gap.
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 a single, short sentence with no waste. The core action and scope are front-loaded, making it efficient for agents to parse.
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 is simple with one required parameter and no output schema, so the description is mostly adequate. However, it lacks information on what forms the output contains (e.g., form IDs, statuses) and any edge case behaviors. Given the simplicity, it's acceptable but could be clearer on the return value.
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 has only one parameter with 0% description coverage, so the description must clarify its meaning beyond the type. The description mentions 'in a tax return' which implies return_id is the tax return identifier, adding some context. However, it doesn't specify the format or constraints, but given the low complexity, this is minimally adequate.
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 clear verb ('List') and resource ('forms') with a scope ('in a tax return'), distinguishing it from siblings like list_returns and list_concepts. However, it doesn't explicitly differentiate from list_returns or list_concepts beyond the resource name, but the purpose is reasonably clear.
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 implies use when you need forms within a specific tax return, suggested by the 'in a tax return' scope, especially compared to list_returns for listing returns. However, it doesn't explicitly state when NOT to use it or what alternatives exist, leaving some inference to the agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_returnsC
List tax returns visible to the configured vendor adapter
| Name | Required | Description | Default |
|---|---|---|---|
| tax_year | No | ||
| return_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It adds one scoping behavior ('visible to the configured vendor adapter') but omits any indication of read-only nature, required permissions, response format, or pagination. For a no-annotation tool this is a significant gap.
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?
A single sentence with no filler, front-loading the action and then the scope. It is concise and every word earns its place, though it is sparse enough to reduce overall helpfulness.
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 no output schema and no annotations, an agent cannot know the shape of the returned tax returns, whether pagination exists, or how the two optional parameters affect results. The description is a purpose statement, not a usable contract.
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 0% and the description does not mention either parameter. The schema provides only names and type/enum/range constraints, leaving the domain meaning of tax_year and return_type unexplained.
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: 'List tax returns', and the qualifier 'visible to the configured vendor adapter' clarifies the scope. This distinguishes it from sibling list tools like list_forms and list_concepts.
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?
There is no guidance on when to use this tool versus alternatives. It does not mention sibling tools, exclusions, or conditions that should lead an agent to prefer this over other list or retrieval tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_fieldB
Set or validate a tax field using a vendor-neutral concept. Mutations default to validate-only.
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | validate (default) or commit | |
| value | Yes | ||
| concept | Yes | ||
| tax_year | Yes | ||
| return_id | Yes | ||
| evidence_page | No | ||
| evidence_checksum | No | ||
| evidence_source_id | No | ||
| evidence_source_type | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the behavioral disclosure burden. It usefully discloses that mutations default to validate-only, an important safety-relevant behavior. However, it omits other behavioral details such as what a committed mutation does, whether the action is reversible, required permissions, or what the response looks like.
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 two short sentences with no filler, and the primary action is front-loaded. It is efficiently structured, although it could use the saved space to add a bit more parameter or behavior 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?
With 9 parameters, 4 required, no output schema, and no annotations, the description is not complete enough for reliable invocation. It does not explain how evidence parameters relate to validation/commit, what validate-only mode returns, or what commit actually does, leaving substantial gaps for an agent.
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 only 11%, so the description must compensate for undocumented parameters. It adds meaning for 'concept' (vendor-neutral) and indirectly for 'mode' (mutations default to validate-only), but it leaves the required return_id, tax_year, and value, as well as all evidence_* parameters, without semantic explanation.
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 verb ('Set or validate'), a clear resource ('a tax field'), and the key qualifier ('using a vendor-neutral concept'). This distinguishes set_field from the read-oriented sibling get_field and the concept-listing sibling list_concepts.
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 implies that the tool is used to set or validate a field, and notes that mutations default to validate-only, which gives context for the mode parameter. However, it does not explicitly say when to choose 'validate' versus 'commit', nor does it mention alternatives such as get_field for reading or list_concepts for finding valid concepts.
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.
8 tool updates
v0.3.0- First observed
create_return - First observed
get_capabilities - First observed
get_diagnostics - First observed
get_field - First observed
list_concepts - First observed
list_forms - First observed
list_returns - First observed
set_field
TDQS
Scored across 8 tools
Each tool targets a distinct operation: capabilities introspection, concept discovery, return creation, field reads/writes, form/return listing, and diagnostics. No two tools have overlapping responsibilities, so an agent can reliably select the right tool.
All tool names follow a consistent verb_noun snake_case pattern (get_, list_, create_, set_). The mix of get_ vs list_ for read operations is standard and distinguishes single-item retrieval from collection listing.
Eight tools are well-scoped for the tax-return domain, covering discovery, creation, field manipulation, listing, and diagnostics. Each tool earns its place without unnecessary redundancy or bloat.
The set supports a validate-first workflow with creation, field access, listings, and diagnostics. It lacks explicit update/delete operations for returns, but set_field covers field-level mutation and deletion may be out of scope for this adapter.
Maintenance
Related MCP Connectors
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
- ZapierOAuthcom.zapier
Hosted MCP server connecting AI assistants to 9,000+ apps and 40,000+ actions via Zapier.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
The Mercado Pago MCP Server implements the Model Context Protocol to provide AI agents and LLMs with access to Mercado Pago's APIs and tools within compatible development environments. It acts as an intermediary that translates Mercado Pago resources into executable functions (tools) that AI applications can invoke to perform actions and automate flows. The server simplifies integration, enables using documentation to implement or improve code, and optimizes operations through natural language interactions without manual implementations.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceA sovereign, MIT-licensed MCP server for US tax operations, enabling offline-capable and self-hostable tax workflow management.MIT

brasilnfe-mcpofficial
FlicenseNot gradedqualityFmaintenanceMCP server that exposes Brazilian tax infrastructure as tools, resources, and prompts, enabling AI agents to emit and manage fiscal documents (NF-e, NFC-e, NFS-e, CT-e, MDF-e, DC-e) through natural language.-- AlicenseNot gradedqualityDmaintenanceA standalone MCP server for Indian personal income-tax work (ITR-1/2/3/4 + post-filing notices) with 8 deterministic tools, running fully offline with no API keys.21 PyPIMIT
- AlicenseNot gradedqualityAmaintenanceMCP server that connects AI agents to 34,500+ Australian Taxation Office documents, providing cited answers, tax deduction discovery, depreciation scheduling, BAS checklists, and audit risk assessment through 13 specialized tools.174 npm11AGPL 3.0