base on ๐ PR-Agent: An AI-Powered ๐ค Tool for Automated Pull Request Analysis, Feedback, Suggestions and More! ๐ป๐ (For more advanced: check Qodo Merge) <div align="center">
<div align="center">
<picture>
<source media="(prefers-color-scheme: dark)" srcset="https://www.qodo.ai/wp-content/uploads/2025/02/PR-Agent-Purple-2.png">
<source media="(prefers-color-scheme: light)" srcset="https://www.qodo.ai/wp-content/uploads/2025/02/PR-Agent-Purple-2.png">
<img src="https://codium.ai/images/pr_agent/logo-light.png" alt="logo" width="330">
</picture>
<br/>
[Installation Guide](https://qodo-merge-docs.qodo.ai/installation/) |
[Usage Guide](https://qodo-merge-docs.qodo.ai/usage-guide/) |
[Tools Guide](https://qodo-merge-docs.qodo.ai/tools/) |
[Qodo Merge](https://qodo-merge-docs.qodo.ai/overview/pr_agent_pro/) ๐
## Open-Source AI-Powered Code Review Tool
**PR-Agent** is a free, open-source tool that provides AI-powered code review and PR assistance. Run it locally, on your CI/CD, or self-host it.
**[Qodo Merge](https://qodo-merge-docs.qodo.ai/overview/pr_agent_pro/) ๐** is the hosted, enterprise version with additional features, zero-setup, and priority support.
---
### Quick Start Options
| **Option** | **Best For** | **Setup Time** | **Cost** |
|------------|--------------|----------------|----------|
| **[PR-Agent (Open Source)](#-quick-start-for-pr-agent-open-source)** | Developers who want full control, self-hosting, or custom integrations | 5-15 minutes | Free |
| **[Qodo Merge](#-try-qodo-merge-zero-setup)** | Teams wanting zero-setup, enhancing the open-source features, additional enterprise features, and managed hosting | 2 minutes | Free tier available |
</div>
[](https://chromewebstore.google.com/detail/qodo-merge-ai-powered-cod/ephlnjeghhogofkifjloamocljapahnl)
[](https://github.com/apps/qodo-merge-pro/)
[](https://github.com/apps/qodo-merge-pro-for-open-source/)
[](https://discord.com/invite/SgSxuQ65GF)
<a href="https://github.com/Codium-ai/pr-agent/commits/main">
<img alt="GitHub" src="https://img.shields.io/github/last-commit/Codium-ai/pr-agent/main?style=for-the-badge" height="20">
</a>
</div>
## Table of Contents
- [PR-Agent vs Qodo Merge](#pr-agent-vs-qodo-merge)
- [Getting Started](#getting-started)
- [Why Use PR-Agent?](#why-use-pr-agent)
- [Features](#features)
- [See It in Action](#see-it-in-action)
- [Try It Now](#try-it-now)
- [Qodo Merge ๐](#qodo-merge-)
- [How It Works](#how-it-works)
- [Data Privacy](#data-privacy)
- [Contributing](#contributing)
- [Links](#links)
## PR-Agent vs Qodo Merge
### PR-Agent (This Repository) - Open Source
โ
**What you get:**
- Complete source code access and customization
- Self-hosted deployment options
- All core AI review tools (`/describe`, `/review`, `/improve`, `/ask`)
- Support for GitHub, GitLab, BitBucket, Azure DevOps
- CLI usage for local development
- Free forever
โ๏ธ **What you need to manage:**
- Your own API keys (OpenAI, Claude, etc.)
- Infrastructure and hosting
- Updates and maintenance
- Configuration management
### Qodo Merge - Hosted Solution
โ
**What you get (everything above plus):**
- Zero-setup installation (2-minute GitHub app install)
- Managed infrastructure and automatic updates
- Advanced features: CI feedback, code suggestions tracking, custom prompts
- Priority support and feature requests
- Enhanced privacy with zero data retention
- Free tier: 75 PR reviews/month per organization
๐ฐ **Pricing:**
- Free tier available
- Paid plans for unlimited usage
- [View pricing details](https://www.qodo.ai/pricing/)
**๐จโ๐ป Developer Recommendation:** Start with PR-Agent if you want to experiment, customize heavily, or have specific self-hosting requirements. Choose Qodo Merge if you want to focus on coding rather than tool maintenance.
## Getting Started
### ๐ Quick Start for PR-Agent (Open Source)
#### 1. Try it Instantly (No Setup)
Test PR-Agent on any public GitHub repository by commenting `@CodiumAI-Agent /improve`
#### 2. GitHub Action (Recommended)
Add automated PR reviews to your repository with a simple workflow file:
```yaml
# .github/workflows/pr-agent.yml
name: PR Agent
on:
pull_request:
types: [opened, synchronize]
jobs:
pr_agent_job:
runs-on: ubuntu-latest
steps:
- name: PR Agent action step
uses: Codium-ai/pr-agent@main
env:
OPENAI_KEY: ${{ secrets.OPENAI_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
```
[Full GitHub Action setup guide](https://qodo-merge-docs.qodo.ai/installation/github/#run-as-a-github-action)
#### 3. CLI Usage (Local Development)
Run PR-Agent locally on your repository:
```bash
pip install pr-agent
export OPENAI_KEY=your_key_here
pr-agent --pr_url https://github.com/owner/repo/pull/123 review
```
[Complete CLI setup guide](https://qodo-merge-docs.qodo.ai/usage-guide/automations_and_usage/#local-repo-cli)
#### 4. Other Platforms
- [GitLab webhook setup](https://qodo-merge-docs.qodo.ai/installation/gitlab/)
- [BitBucket app installation](https://qodo-merge-docs.qodo.ai/installation/bitbucket/)
- [Azure DevOps setup](https://qodo-merge-docs.qodo.ai/installation/azure/)
### ๐ Try Qodo Merge (Zero Setup)
If you prefer a hosted solution without managing infrastructure:
1. **[Install Qodo Merge GitHub App](https://github.com/marketplace/qodo-merge-pro)** (2 minutes)
2. **[FREE for Open Source](https://github.com/marketplace/qodo-merge-pro-for-open-source)**: Full features, zero cost for public repos
3. **Free Tier**: 75 PR reviews/month for private repos
4. **[View Plans & Pricing](https://www.qodo.ai/pricing/)**
[Complete Qodo Merge setup guide](https://qodo-merge-docs.qodo.ai/installation/qodo_merge/)
### ๐ป Local IDE Integration
Receive automatic feedback in your IDE after each commit: [Qodo Merge post-commit agent](https://github.com/qodo-ai/agents/tree/main/agents/qodo-merge-post-commit)
[//]: # (## News and Updates)
[//]: # ()
[//]: # (## Aug 8, 2025)
[//]: # ()
[//]: # (Added full support for GPT-5 models. View the [benchmark results](https://qodo-merge-docs.qodo.ai/pr_benchmark/#pr-benchmark-results) for details on the performance of GPT-5 models in PR-Agent.)
[//]: # ()
[//]: # ()
[//]: # (## Jul 17, 2025)
[//]: # ()
[//]: # (Introducing `/compliance`, a new Qodo Merge ๐ tool that runs comprehensive checks for security, ticket requirements, codebase duplication, and custom organizational rules. )
[//]: # ()
[//]: # (<img width="384" alt="compliance-image" src="https://codium.ai/images/pr_agent/compliance_partial.png"/>)
[//]: # ()
[//]: # (Read more about it [here](https://qodo-merge-docs.qodo.ai/tools/compliance/))
[//]: # ()
[//]: # ()
[//]: # (## Jul 1, 2025)
[//]: # (You can now receive automatic feedback from Qodo Merge in your local IDE after each commit. Read more about it [here](https://github.com/qodo-ai/agents/tree/main/agents/qodo-merge-post-commit).)
[//]: # ()
[//]: # ()
[//]: # (## Jun 21, 2025)
[//]: # ()
[//]: # (v0.30 was [released](https://github.com/qodo-ai/pr-agent/releases))
[//]: # ()
[//]: # ()
[//]: # (## Jun 3, 2025)
[//]: # ()
[//]: # (Qodo Merge now offers a simplified free tier ๐.)
[//]: # (Organizations can use Qodo Merge at no cost, with a [monthly limit](https://qodo-merge-docs.qodo.ai/installation/qodo_merge/#cloud-users) of 75 PR reviews per organization.)
[//]: # ()
[//]: # ()
[//]: # (## Apr 30, 2025)
[//]: # ()
[//]: # (A new feature is now available in the `/improve` tool for Qodo Merge ๐ - Chat on code suggestions.)
[//]: # ()
[//]: # (<img width="512" alt="image" src="https://codium.ai/images/pr_agent/improve_chat_on_code_suggestions_ask.png" />)
[//]: # ()
[//]: # (Read more about it [here](https://qodo-merge-docs.qodo.ai/tools/improve/#chat-on-code-suggestions).)
[//]: # ()
[//]: # ()
[//]: # (## Apr 16, 2025)
[//]: # ()
[//]: # (New tool for Qodo Merge ๐ - `/scan_repo_discussions`.)
[//]: # ()
[//]: # (<img width="635" alt="image" src="https://codium.ai/images/pr_agent/scan_repo_discussions_2.png" />)
[//]: # ()
[//]: # (Read more about it [here](https://qodo-merge-docs.qodo.ai/tools/scan_repo_discussions/).)
## Why Use PR-Agent?
### ๐ฏ Built for Real Development Teams
**Fast & Affordable**: Each tool (`/review`, `/improve`, `/ask`) uses a single LLM call (~30 seconds, low cost)
**Handles Any PR Size**: Our [PR Compression strategy](https://qodo-merge-docs.qodo.ai/core-abilities/#pr-compression-strategy) effectively processes both small and large PRs
**Highly Customizable**: JSON-based prompting allows easy customization of review categories and behavior via [configuration files](pr_agent/settings/configuration.toml)
**Platform Agnostic**:
- **Git Providers**: GitHub, GitLab, BitBucket, Azure DevOps, Gitea
- **Deployment**: CLI, GitHub Actions, Docker, self-hosted, webhooks
- **AI Models**: OpenAI GPT, Claude, Deepseek, and more
**Open Source Benefits**:
- Full control over your data and infrastructure
- Customize prompts and behavior for your team's needs
- No vendor lock-in
- Community-driven development
## Features
<div style="text-align:left;">
PR-Agent and Qodo Merge offer comprehensive pull request functionalities integrated with various git providers:
| | | GitHub | GitLab | Bitbucket | Azure DevOps | Gitea |
|---------------------------------------------------------|----------------------------------------------------------------------------------------|:------:|:------:|:---------:|:------------:|:-----:|
| [TOOLS](https://qodo-merge-docs.qodo.ai/tools/) | [Describe](https://qodo-merge-docs.qodo.ai/tools/describe/) | โ
| โ
| โ
| โ
| โ
|
| | [Review](https://qodo-merge-docs.qodo.ai/tools/review/) | โ
| โ
| โ
| โ
| โ
|
| | [Improve](https://qodo-merge-docs.qodo.ai/tools/improve/) | โ
| โ
| โ
| โ
| โ
|
| | [Ask](https://qodo-merge-docs.qodo.ai/tools/ask/) | โ
| โ
| โ
| โ
| |
| | โฎ [Ask on code lines](https://qodo-merge-docs.qodo.ai/tools/ask/#ask-lines) | โ
| โ
| | | |
| | [Help Docs](https://qodo-merge-docs.qodo.ai/tools/help_docs/?h=auto#auto-approval) | โ
| โ
| โ
| | |
| | [Update CHANGELOG](https://qodo-merge-docs.qodo.ai/tools/update_changelog/) | โ
| โ
| โ
| โ
| |
| | [Add Documentation](https://qodo-merge-docs.qodo.ai/tools/documentation/) ๐ | โ
| โ
| | | |
| | [Analyze](https://qodo-merge-docs.qodo.ai/tools/analyze/) ๐ | โ
| โ
| | | |
| | [Auto-Approve](https://qodo-merge-docs.qodo.ai/tools/improve/?h=auto#auto-approval) ๐ | โ
| โ
| โ
| | |
| | [CI Feedback](https://qodo-merge-docs.qodo.ai/tools/ci_feedback/) ๐ | โ
| | | | |
| | [Compliance](https://qodo-merge-docs.qodo.ai/tools/compliance/) ๐ | โ
| โ
| โ
| | |
| | [Custom Prompt](https://qodo-merge-docs.qodo.ai/tools/custom_prompt/) ๐ | โ
| โ
| โ
| | |
| | [Generate Custom Labels](https://qodo-merge-docs.qodo.ai/tools/custom_labels/) ๐ | โ
| โ
| | | |
| | [Generate Tests](https://qodo-merge-docs.qodo.ai/tools/test/) ๐ | โ
| โ
| | | |
| | [Implement](https://qodo-merge-docs.qodo.ai/tools/implement/) ๐ | โ
| โ
| โ
| | |
| | [Scan Repo Discussions](https://qodo-merge-docs.qodo.ai/tools/scan_repo_discussions/) ๐ | โ
| | | | |
| | [Similar Code](https://qodo-merge-docs.qodo.ai/tools/similar_code/) ๐ | โ
| | | | |
| | [Utilizing Best Practices](https://qodo-merge-docs.qodo.ai/tools/improve/#best-practices) ๐ | โ
| โ
| โ
| | |
| | [PR Chat](https://qodo-merge-docs.qodo.ai/chrome-extension/features/#pr-chat) ๐ | โ
| | | | |
| | [PR to Ticket](https://qodo-merge-docs.qodo.ai/tools/pr_to_ticket/) ๐ | โ
| โ
| โ
| | |
| | [Suggestion Tracking](https://qodo-merge-docs.qodo.ai/tools/improve/#suggestion-tracking) ๐ | โ
| โ
| | | |
| | | | | | | |
| [USAGE](https://qodo-merge-docs.qodo.ai/usage-guide/) | [CLI](https://qodo-merge-docs.qodo.ai/usage-guide/automations_and_usage/#local-repo-cli) | โ
| โ
| โ
| โ
| โ
|
| | [App / webhook](https://qodo-merge-docs.qodo.ai/usage-guide/automations_and_usage/#github-app) | โ
| โ
| โ
| โ
| โ
|
| | [Tagging bot](https://github.com/Codium-ai/pr-agent#try-it-now) | โ
| | | | |
| | [Actions](https://qodo-merge-docs.qodo.ai/installation/github/#run-as-a-github-action) | โ
| โ
| โ
| โ
| |
| | | | | | | |
| [CORE](https://qodo-merge-docs.qodo.ai/core-abilities/) | [Adaptive and token-aware file patch fitting](https://qodo-merge-docs.qodo.ai/core-abilities/compression_strategy/) | โ
| โ
| โ
| โ
| |
| | [Auto Best Practices ๐](https://qodo-merge-docs.qodo.ai/core-abilities/auto_best_practices/) | โ
| | | | |
| | [Chat on code suggestions](https://qodo-merge-docs.qodo.ai/core-abilities/chat_on_code_suggestions/) | โ
| โ
| | | |
| | [Code Validation ๐](https://qodo-merge-docs.qodo.ai/core-abilities/code_validation/) | โ
| โ
| โ
| โ
| |
| | [Dynamic context](https://qodo-merge-docs.qodo.ai/core-abilities/dynamic_context/) | โ
| โ
| โ
| โ
| |
| | [Fetching ticket context](https://qodo-merge-docs.qodo.ai/core-abilities/fetching_ticket_context/) | โ
| โ
| โ
| | |
| | [Global and wiki configurations](https://qodo-merge-docs.qodo.ai/usage-guide/configuration_options/) ๐ | โ
| โ
| โ
| | |
| | [Impact Evaluation](https://qodo-merge-docs.qodo.ai/core-abilities/impact_evaluation/) ๐ | โ
| โ
| | | |
| | [Incremental Update](https://qodo-merge-docs.qodo.ai/core-abilities/incremental_update/) | โ
| | | | |
| | [Interactivity](https://qodo-merge-docs.qodo.ai/core-abilities/interactivity/) | โ
| โ
| | | |
| | [Local and global metadata](https://qodo-merge-docs.qodo.ai/core-abilities/metadata/) | โ
| โ
| โ
| โ
| |
| | [Multiple models support](https://qodo-merge-docs.qodo.ai/usage-guide/changing_a_model/) | โ
| โ
| โ
| โ
| |
| | [PR compression](https://qodo-merge-docs.qodo.ai/core-abilities/compression_strategy/) | โ
| โ
| โ
| โ
| |
| | [PR interactive actions](https://www.qodo.ai/images/pr_agent/pr-actions.mp4) ๐ | โ
| โ
| | | |
| | [RAG context enrichment](https://qodo-merge-docs.qodo.ai/core-abilities/rag_context_enrichment/) | โ
| | โ
| | |
| | [Self reflection](https://qodo-merge-docs.qodo.ai/core-abilities/self_reflection/) | โ
| โ
| โ
| โ
| |
| | [Static code analysis](https://qodo-merge-docs.qodo.ai/core-abilities/static_code_analysis/) ๐ | โ
| โ
| | | |
- ๐ means this feature is available only in [Qodo Merge](https://www.qodo.ai/pricing/)
[//]: # (- Support for additional git providers is described in [here](./docs/Full_environments.md))
___
## See It in Action
</div>
<h4><a href="https://github.com/Codium-ai/pr-agent/pull/530">/describe</a></h4>
<div align="center">
<p float="center">
<img src="https://www.codium.ai/images/pr_agent/describe_new_short_main.png" width="512">
</p>
</div>
<hr>
<h4><a href="https://github.com/Codium-ai/pr-agent/pull/732#issuecomment-1975099151">/review</a></h4>
<div align="center">
<p float="center">
<kbd>
<img src="https://www.codium.ai/images/pr_agent/review_new_short_main.png" width="512">
</kbd>
</p>
</div>
<hr>
<h4><a href="https://github.com/Codium-ai/pr-agent/pull/732#issuecomment-1975099159">/improve</a></h4>
<div align="center">
<p float="center">
<kbd>
<img src="https://www.codium.ai/images/pr_agent/improve_new_short_main.png" width="512">
</kbd>
</p>
</div>
<div align="left">
</div>
<hr>
## Try It Now
Try the GPT-5 powered PR-Agent instantly on _your public GitHub repository_. Just mention `@CodiumAI-Agent` and add the desired command in any PR comment. The agent will generate a response based on your command.
For example, add a comment to any pull request with the following text:
```
@CodiumAI-Agent /review
```
and the agent will respond with a review of your PR.
Note that this is a promotional bot, suitable only for initial experimentation.
It does not have 'edit' access to your repo, for example, so it cannot update the PR description or add labels (`@CodiumAI-Agent /describe` will publish PR description as a comment). In addition, the bot cannot be used on private repositories, as it does not have access to the files there.
---
## Qodo Merge ๐
[Qodo Merge](https://www.qodo.ai/pricing/) is the hosted version of PR-Agent with additional enterprise features.
### Key Differences from Open Source PR-Agent:
**Infrastructure & Management:**
- Fully managed hosting and automatic updates
- Zero-setup installation (GitHub/GitLab/BitBucket app)
- No need to manage API keys or infrastructure
**Enhanced Privacy:**
- Zero data retention policy
- No data used for model training
- Enterprise-grade security
**Additional Features:**
- Advanced code suggestions with tracking
- CI feedback analysis
- Custom prompts and labels
- Static code analysis integration
- Priority support
**Pricing:**
- Free tier: 75 PR reviews/month per organization
- Paid plans for unlimited usage
- Free for open source projects
See [complete feature comparison](https://qodo-merge-docs.qodo.ai/overview/pr_agent_pro/) for detailed differences.
## How It Works
The following diagram illustrates PR-Agent tools and their flow:

Check out the [PR Compression strategy](https://qodo-merge-docs.qodo.ai/core-abilities/#pr-compression-strategy) page for more details on how we convert a code diff to a manageable LLM prompt
## Data Privacy
### Self-hosted PR-Agent
- If you host PR-Agent with your OpenAI API key, it is between you and OpenAI. You can read their API data privacy policy here:
https://openai.com/enterprise-privacy
### Qodo-hosted Qodo Merge ๐
- When using Qodo Merge ๐, hosted by Qodo, we will not store any of your data, nor will we use it for training. You will also benefit from an OpenAI account with zero data retention.
- For certain clients, Qodo-hosted Qodo Merge will use Qodoโs proprietary models โ if this is the case, you will be notified.
- No passive collection of Code and Pull Requestsโ data โ Qodo Merge will be active only when you invoke it, and it will then extract and analyze only data relevant to the executed command and queried pull request.
### Qodo Merge Chrome extension
- The [Qodo Merge Chrome extension](https://chromewebstore.google.com/detail/qodo-merge-ai-powered-cod/ephlnjeghhogofkifjloamocljapahnl) serves solely to modify the visual appearance of a GitHub PR screen. It does not transmit any user's repo or pull request code. Code is only sent for processing when a user submits a GitHub comment that activates a PR-Agent tool, in accordance with the standard privacy policy of Qodo-Merge.
## Contributing
To contribute to the project, get started by reading our [Contributing Guide](https://github.com/qodo-ai/pr-agent/blob/b09eec265ef7d36c232063f76553efb6b53979ff/CONTRIBUTING.md).
## Links
- Discord community: https://discord.com/invite/SgSxuQ65GF
- Qodo site: https://www.qodo.ai/
- Blog: https://www.qodo.ai/blog/
- Troubleshooting: https://www.qodo.ai/blog/technical-faq-and-troubleshooting/
- Support:
[email protected]
", Assign "at most 3 tags" to the expected json: {"id":"13857","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"