{"_id":"@beshkenadze/federal-register-sdk","name":"@beshkenadze/federal-register-sdk","dist-tags":{"latest":"0.2.0"},"versions":{"0.2.0":{"name":"@beshkenadze/federal-register-sdk","version":"0.2.0","description":"TypeScript SDK and MCP server for the Federal Register API","author":{"name":"Aleksandr Beshkenadze","email":"beshkenadze@gmail.com"},"license":"MIT","keywords":["federal-register","federal","regulations","api","sdk","mcp","typescript"],"homepage":"https://github.com/beshkenadze/ecfr-sdk#readme","repository":{"type":"git","url":"git+https://github.com/beshkenadze/ecfr-sdk.git","directory":"packages/federal-register-sdk"},"bugs":{"url":"https://github.com/beshkenadze/ecfr-sdk/issues"},"type":"module","main":"./dist/index.js","module":"./dist/index.mjs","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.mjs","require":"./dist/index.js"},"./mcp":{"types":"./dist/mcp/index.d.ts","import":"./dist/mcp/index.mjs","require":"./dist/mcp/index.js"}},"scripts":{"dev":"bun run src/index.ts","build":"bun run build.ts","download":"bun run scripts/download-openapi.ts","generate":"orval","format":"biome format --write .","lint":"biome lint --write .","check":"biome check --write .","check:ci":"biome ci .","prepublishOnly":"bun run build","test":"bun test src","test:watch":"bun test --watch src","test:integration":"SKIP_INTEGRATION_TESTS=false bun test src","test:e2e":"SKIP_E2E_TESTS=false bun test tests/e2e","test:all":"bun test","mcp:server":"bun run src/mcp/server.ts"},"devDependencies":{"@biomejs/biome":"^2.1.2","@types/bun":"latest","@types/node":"^24.1.0","@us-legal-tools/tsconfig":"workspace:*","orval":"^7.10.0","typescript":"^5.8.3"},"dependencies":{"@modelcontextprotocol/sdk":"^1.16.0","axios":"^1.10.0","zod":"^3.24.1"},"peerDependencies":{"typescript":"^5.0.0"},"engines":{"node":">=22.0.0"},"_id":"@beshkenadze/federal-register-sdk@0.2.0","gitHead":"382204b5f11991e9baf2fe4eb85d9aebb6b3a9c4","_nodeVersion":"22.17.1","_npmVersion":"10.9.2","dist":{"integrity":"sha512-Ir3rgKhGCqGWiV+ZUy580jfAqfXlpnvOtUmlN+t9qFPbEGC9AZucqUJVLrU8YxhRHA7jYfMRhb3pVcI4BBzqTQ==","shasum":"268767b94c4a99298d5ef8a1281078320e2aae12","tarball":"https://registry.npmjs.org/@beshkenadze/federal-register-sdk/-/federal-register-sdk-0.2.0.tgz","fileCount":10,"unpackedSize":17629,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAOuqeenr0x+fAZhUMkKxVpFGBZwPLltSCcodaIcpq1aAiEAr9+TSkx3bzQsB2Bf0iDVAmWp6CMyriB39cIVT6sJMh4="}]},"_npmUser":{"name":"beshkenadze","email":"beshkenadze@gmail.com"},"directories":{},"maintainers":[{"name":"beshkenadze","email":"beshkenadze@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/federal-register-sdk_0.2.0_1753447877378_0.06651284904415644"},"_hasShrinkwrap":false}},"time":{"created":"2025-07-25T12:51:17.260Z","0.2.0":"2025-07-25T12:51:17.543Z","modified":"2025-07-25T12:51:17.878Z"},"maintainers":[{"name":"beshkenadze","email":"beshkenadze@gmail.com"}],"description":"TypeScript SDK and MCP server for the Federal Register API","homepage":"https://github.com/beshkenadze/ecfr-sdk#readme","keywords":["federal-register","federal","regulations","api","sdk","mcp","typescript"],"repository":{"type":"git","url":"git+https://github.com/beshkenadze/ecfr-sdk.git","directory":"packages/federal-register-sdk"},"author":{"name":"Aleksandr Beshkenadze","email":"beshkenadze@gmail.com"},"bugs":{"url":"https://github.com/beshkenadze/ecfr-sdk/issues"},"license":"MIT","readme":"# @beshkenadze/federal-register-sdk\n\nTypeScript SDK and MCP (Model Context Protocol) server for the Federal Register API.\n\n[![npm version](https://badge.fury.io/js/@beshkenadze%2Ffederal-register-sdk.svg)](https://badge.fury.io/js/@beshkenadze%2Ffederal-register-sdk)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n## Features\n\n- 📄 **Document Access** - Search and retrieve all Federal Register documents since 1994\n- 🏛️ **Agency Data** - Complete information about federal agencies\n- 📋 **Public Inspection** - Access documents before official publication\n- 🖼️ **Document Images** - Retrieve document images and metadata\n- 🤖 **MCP Server** - AI-ready server for integration with Claude and other AI assistants\n- 🔍 **Advanced Search** - Powerful search with faceting and filtering\n- ✨ **Type-safe** - Full TypeScript support with auto-completion\n\n## Installation\n\n```bash\n# npm\nnpm install @beshkenadze/federal-register-sdk\n\n# yarn\nyarn add @beshkenadze/federal-register-sdk\n\n# pnpm\npnpm add @beshkenadze/federal-register-sdk\n\n# bun\nbun add @beshkenadze/federal-register-sdk\n```\n\n## Quick Start\n\n### Basic Usage\n\n```typescript\nimport { getDocumentsFormat, getAgencies } from '@beshkenadze/federal-register-sdk';\n\n// Search for documents\nconst documents = await getDocumentsFormat({\n  format: 'json',\n  per_page: 10,\n  conditions: {\n    term: 'climate change'\n  }\n});\n\nconsole.log(`Found ${documents.count} documents`);\ndocuments.results.forEach(doc => {\n  console.log(`- ${doc.title} (${doc.publication_date})`);\n});\n\n// Get all agencies\nconst agencies = await getAgencies();\nconsole.log(`Total agencies: ${agencies.length}`);\n```\n\n### Advanced Search\n\n```typescript\nimport { getDocumentsFormat } from '@beshkenadze/federal-register-sdk';\n\n// Search with multiple filters\nconst results = await getDocumentsFormat({\n  format: 'json',\n  conditions: {\n    agencies: ['environmental-protection-agency', 'energy-department'],\n    type: ['RULE', 'PRORULE'],\n    publication_date: {\n      gte: '2024-01-01',\n      lte: '2024-12-31'\n    },\n    significant: '1'\n  },\n  order: 'newest',\n  per_page: 20\n});\n\n// Access facets for refinement\nconsole.log('Available facets:', results.aggregations);\n```\n\n### Document Details\n\n```typescript\nimport { getDocumentsDocumentNumberFormat } from '@beshkenadze/federal-register-sdk';\n\n// Get a specific document\nconst document = await getDocumentsDocumentNumberFormat({\n  documentNumber: '2024-12345',\n  format: 'json'\n});\n\nconsole.log(`Title: ${document.title}`);\nconsole.log(`Agency: ${document.agencies.map(a => a.name).join(', ')}`);\nconsole.log(`Published: ${document.publication_date}`);\nconsole.log(`PDF URL: ${document.pdf_url}`);\n```\n\n### Public Inspection Documents\n\n```typescript\nimport { getPublicInspectionDocumentsCurrentFormat } from '@beshkenadze/federal-register-sdk';\n\n// Get current public inspection documents\nconst piDocuments = await getPublicInspectionDocumentsCurrentFormat({\n  format: 'json'\n});\n\nconsole.log('Documents on public inspection:');\npiDocuments.results.forEach(doc => {\n  console.log(`- ${doc.title} (Filing date: ${doc.filing_date})`);\n});\n```\n\n## API Reference\n\n### Document Endpoints\n\n- `getDocumentsFormat` - Search all documents\n- `getDocumentsDocumentNumberFormat` - Get a specific document\n- `getDocumentsDocumentNumbersFormat` - Get multiple documents by number\n- `getDocumentsFacetsFacet` - Get document counts by facet\n\n### Public Inspection Endpoints\n\n- `getPublicInspectionDocumentsFormat` - Search public inspection documents\n- `getPublicInspectionDocumentsCurrentFormat` - Get current PI documents\n- `getPublicInspectionDocumentsDocumentNumberFormat` - Get specific PI document\n\n### Agency Endpoints\n\n- `getAgencies` - Get all agencies\n- `getAgenciesSlug` - Get specific agency details\n\n### Other Endpoints\n\n- `getIssuesPublicationDateFormat` - Get table of contents for a date\n- `getImagesIdentifier` - Get image metadata\n- `getSuggestedSearches` - Get suggested searches\n\n## MCP Server\n\nThe MCP server allows AI assistants to interact with the Federal Register API.\n\n### Running the Server\n\n```bash\n# Using the SDK directly\nnpx @beshkenadze/federal-register-sdk/mcp\n\n# Or if installed locally\ncd node_modules/@beshkenadze/federal-register-sdk\nnpm run mcp:server\n```\n\n### Integration with Claude\n\nAdd to your Claude configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"federal-register\": {\n      \"command\": \"npx\",\n      \"args\": [\"@beshkenadze/federal-register-sdk/mcp\"]\n    }\n  }\n}\n```\n\n## Document Types\n\nThe API supports these document types:\n\n- `RULE` - Final rules\n- `PRORULE` - Proposed rules\n- `NOTICE` - Notices\n- `PRESDOCU` - Presidential documents\n\n## Date Formats\n\nDates should be provided in ISO format (YYYY-MM-DD):\n\n```typescript\nconst results = await getDocumentsFormat({\n  format: 'json',\n  conditions: {\n    publication_date: {\n      gte: '2024-01-01',\n      lte: '2024-12-31'\n    }\n  }\n});\n```\n\n## Error Handling\n\n```typescript\nimport { getDocumentsFormat } from '@beshkenadze/federal-register-sdk';\n\ntry {\n  const results = await getDocumentsFormat({\n    format: 'json',\n    per_page: 10\n  });\n} catch (error) {\n  if (error.response?.status === 400) {\n    console.error('Invalid request parameters');\n  } else if (error.response?.status === 429) {\n    console.error('Rate limit exceeded');\n  } else {\n    console.error('API error:', error.message);\n  }\n}\n```\n\n## Rate Limiting\n\nThe Federal Register API has rate limits. The SDK automatically includes appropriate headers, but be mindful of making too many requests in a short period.\n\n## License\n\nMIT License - see [LICENSE](../../LICENSE) for details\n\n## Links\n\n- [GitHub Repository](https://github.com/beshkenadze/ecfr-sdk)\n- [npm Package](https://www.npmjs.com/package/@beshkenadze/federal-register-sdk)\n- [Federal Register Website](https://www.federalregister.gov/)\n- [Federal Register API Documentation](https://www.federalregister.gov/developers/api/v1)","readmeFilename":"README.md","_rev":"1-0a0eb2b3e508ce71fab94a31e187d000"}